ClipJoy is a Next.js-based ๐ฝ๏ธ application for sharing reels ๐ฅ with users. It allows users to upload, view, and interact ๐ with short videos โฉ. The project is built with Next.js, NextAuth ๐ for authentication, and ImageKit ๐ผ๏ธ for video uploads.
- User Authentication ๐ with NextAuth
- Video Uploads ๐ค using ImageKit
- Secure Password Hashing ๐ with bcryptjs
- Video Metadata Storage ๐๏ธ using MongoDB & Mongoose
- Styled ๐จ with TailwindCSS & DaisyUI
- Form Handling ๐ with React Hook Form
- Frontend: ๐ญ Next.js, React, TailwindCSS, DaisyUI
- Backend: ๐๏ธ Next.js API routes, NextAuth
- Database: ๐๏ธ MongoDB (Mongoose ODM)
- Storage: ๐๏ธ ImageKit
- Authentication: ๐ NextAuth (JWT-based authentication)
- State Management: ๐ฆ React Hook Form
- Clone the Repository ๐:
git clone https://github.com/skp3214/clipjoy.git cd clipjoy - Install Dependencies ๐ฆ:
npm install # or yarn install - Set Up Environment Variables ๐:
- Create a
.env.localfile and add the following:
NEXTAUTH_SECRET=your_secret_key NEXTAUTH_URL=http://localhost:3000 MONGODB_URI=your_mongodb_connection_string IMAGEKIT_PUBLIC_KEY=your_public_key IMAGEKIT_PRIVATE_KEY=your_private_key IMAGEKIT_URL_ENDPOINT=your_url_endpoint
- Create a
- Run the Development Server ๐:
npm run dev
clipjoy/
โโโ app/
โ โโโ api/
โ โ โโโ auth/
โ โ โโโ register/
โ โ โโโ videos/
โ โโโ components/
โ โโโ login/
โ โโโ register/
โ โโโ upload/
โโโ lib/
โ โโโ api-client.ts
โ โโโ auth.ts
โ โโโ db.ts
โโโ models/
โ โโโ User.ts
โ โโโ Video.ts
โโโ public/
โโโ styles/
โโโ pages/
โโโ .env.local
โโโ next.config.js
โโโ package.json
| ๐ Route | ๐ Method | ๐ Description |
|---|---|---|
/api/videos |
GET | Fetch all videos ๐น |
/api/auth/session |
GET | Get user session ๐ |
/api/auth/signin |
POST | User login ๐ช |
/api/auth/signup |
POST | User registration ๐ |
- Admin Dashboard ๐ ๏ธ for managing videos & users
- Like & Comment System โค๏ธ๐ฌ for user engagement
- Video Categories & Tags ๐ท๏ธ for better content organization
- Performance Optimization โก with caching and SSR
Pull requests are welcome! ๐ For major changes, please open an issue ๐๏ธ first to discuss what you would like to change.