A modern, full-featured project showcase platform built with Next.js, designed to help developers share, discover, and manage their projects effortlessly.
- Project Showcase - Display your projects with detailed information, images, and links
- User Authentication - Secure authentication with Google OAuth and email/password
- Project Management - Create, update, and delete your projects with ease
- Star & Save - Star your favorite projects and keep track of them
- View Tracking - Track project views and engagement metrics
- Filtering - Filter projects by tags and star count
- Responsive Design - Beautiful, responsive UI that works on all devices
- Dark/Light Mode - Theme switcher for comfortable viewing
- Next.js 15 - React framework for production
- React 19 - UI library
- TypeScript - Type-safe development
- Tailwind CSS - Utility-first CSS framework
- React Query (TanStack) - Server state management
- Next Auth - Authentication solution
- Sonner - Toast notifications
- Next Themes - Theme management
- Next.js API Routes - Serverless backend
- Prisma ORM - Database toolkit
- MongoDB - NoSQL database
- Cloudinary - Image hosting and optimization
- bcryptjs - Password hashing
- Compressor.js - Image compression
- Node.js 18+ or Bun
- MongoDB database
- Cloudinary account (for image uploads)
- Google OAuth credentials (optional, for Google login)
git clone https://github.com/unsafe0x0/tpotora.git
cd tpotorabun install
# or
npm installCreate a .env.local file in the root directory:
# Database
DATABASE_URL=mongodb+srv://username:[email protected]/tpotora
# NextAuth
NEXTAUTH_URL=http://localhost:3000
NEXTAUTH_SECRET=your-secret-key-here
# Google OAuth (Optional)
GOOGLE_CLIENT_ID=your-google-client-id
GOOGLE_CLIENT_SECRET=your-google-client-secret
# Cloudinary
NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME=your-cloudinary-cloud-name
CLOUDINARY_API_KEY=your-cloudinary-api-key
CLOUDINARY_API_SECRET=your-cloudinary-api-secretbun run prisma generate
bun run prisma db pushbun run dev
# or
npm run devOpen http://localhost:3000 with your browser to see the result.
tpotora/
├── app/
│ ├── api/ # API routes
│ │ ├── auth/ # Authentication endpoints
│ │ ├── project/ # Project management endpoints
│ │ └── user/ # User management endpoints
│ ├── dashboard/ # Dashboard page
│ ├── home/ # Home/feed page
│ ├── projects/[slug]/ # Project detail page
│ ├── sign-in/ # Sign-in page
│ ├── layout.tsx # Root layout
│ └── page.tsx # Home page
├── components/
│ ├── auth/ # Authentication components
│ ├── common/ # Shared components
│ ├── dashboard/ # Dashboard-specific components
│ └── home/ # Home page components
├── hooks/ # Custom React hooks
├── prisma/
│ ├── schema.prisma # Database schema
│ └── DbClient.ts # Prisma client
├── providers/ # React context providers
├── types/ # TypeScript type definitions
├── utils/ # Utility functions
└── public/ # Static assets
- Google OAuth for quick sign-up
- Email/password authentication
- Secure session management with NextAuth
- Create: Upload projects with images, tags, and links
- Update: Modify project details anytime
- Delete: Remove projects from your dashboard
- Star: Bookmark favorite projects
- View Tracking: Monitor project engagement
- View all your published projects
- Access project statistics (stars, views)
- Manage profile information
- Update project details
- Add new projects
- Browse all community projects
- Filter by tags
- Filter by star count
- Sort and organize projects
- View project details
bun run dev # Start development server
bun run build # Build for production
bun run start # Start production server
bun run lint # Run ESLint
bun run prisma # Prisma CLIContributions are welcome! Feel free to open issues and pull requests.
This project is open source and available under the MIT License.
Unsafezero
- Portfolio: priyanxhu.me
- GitHub: @unsafe0x0