zipvid is a full-stack web application designed to allow users to upload and manage video content, including images, while also handling social media formats.
zipvid-main/
├── prisma/ # Database migration and schema files
│ ├── migrations/
│ │ └── [migrations]
│ └── schema.prisma # Prisma schema file
├── src/
│ ├── app/
│ │ ├── (app)/ # Core app pages (home, video upload, etc.)
│ │ ├── (auth)/ # Authentication pages (sign-in, sign-up)
│ │ ├── api/ # API routes for video and image upload
│ │ ├── fonts/ # Custom fonts used in the project
│ │ ├── globals.css # Global styles
│ │ └── layout.tsx # Main layout file
│ └── components/ # Reusable components (e.g., VideoCard)
│ └── types/ # TypeScript types
├── .eslintrc.json # ESLint configuration
├── .gitignore # Git ignore file
├── next.config.mjs # Next.js configuration file
├── package.json # Project dependencies and scripts
├── postcss.config.mjs # PostCSS configuration for Tailwind
├── tailwind.config.ts # Tailwind CSS configuration
└── tsconfig.json # TypeScript configuration
- 🔒 User Authentication: Secure sign-in and sign-up using built-in authentication pages.
- 📹 Video Upload: Upload videos with social media formatting support.
- 🖼️ Image Upload: API support for image uploads.
- 🎨 Responsive Design: Tailwind CSS-powered responsive UI for various screen sizes.
- ⚡ Prisma: Easy database management and migration with Prisma ORM.
To get started with the project, follow the instructions below:
- Node.js version 16.x or higher
- Prisma installed globally (
npm install prisma --global)
-
Clone the repository:
git clone https://github.com/yourusername/zipvid.git cd zipvid-main -
Install dependencies:
npm install
-
Configure the environment variables: Create a
.envfile at the root of the project and add your database and API keys. -
Run database migrations:
npx prisma migrate dev
-
Start the development server:
npm run dev
To run tests, use the following command:
npm testnext.config.mjs: Next.js configuration for optimization and custom server handling.prisma/schema.prisma: Defines the database schema for videos and users.
- Video Upload:
POST /api/video-upload - Image Upload:
POST /api/image-upload - Get Videos:
GET /api/videos
