Skip to content

unsafe0x0/tpotora

Repository files navigation

Tpotora

A modern, full-featured project showcase platform built with Next.js, designed to help developers share, discover, and manage their projects effortlessly.

Features

  • 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

Tech Stack

Frontend

  • 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

Backend

  • 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

Prerequisites

  • Node.js 18+ or Bun
  • MongoDB database
  • Cloudinary account (for image uploads)
  • Google OAuth credentials (optional, for Google login)

Getting Started

1. Clone the Repository

git clone https://github.com/unsafe0x0/tpotora.git
cd tpotora

2. Install Dependencies

bun install
# or
npm install

3. Environment Variables

Create 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-secret

4. Setup Database

bun run prisma generate
bun run prisma db push

5. Run Development Server

bun run dev
# or
npm run dev

Open http://localhost:3000 with your browser to see the result.

Project Structure

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

Key Features Explained

Authentication

  • Google OAuth for quick sign-up
  • Email/password authentication
  • Secure session management with NextAuth

Project Management

  • 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

Dashboard

  • View all your published projects
  • Access project statistics (stars, views)
  • Manage profile information
  • Update project details
  • Add new projects

Home Feed

  • Browse all community projects
  • Filter by tags
  • Filter by star count
  • Sort and organize projects
  • View project details

Available Scripts

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 CLI

Contributing

Contributions are welcome! Feel free to open issues and pull requests.

License

This project is open source and available under the MIT License.

Developer

Unsafezero

About

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published