Skip to content

riteshkrkarn/gatherly

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

47 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸŽ‰ Gatherly

Status Live Demo

πŸŽͺ Modern Event Management & Ticketing Platform

A full-stack event management application built with Next.js 14, TypeScript, and MongoDB. Create events, manage bookings, and discover local experiences with a clean, modern interface.

🌐 Live Demo: gatherly.r2k.dev


πŸ“‹ Table of Contents


🌟 Features

πŸ‘₯ For Attendees

  • Event Discovery: Browse and discover local events
  • Secure Booking: Book tickets with real-time availability and confirmation
  • User Dashboard: Manage profile, view booking history, and track events
  • Clean UI: Modern, responsive design with shadcn/ui components

🎭 For Organizers

  • Event Creation: Create detailed events with multiple ticket types
  • Image Upload: Upload event banners via Supabase integration
  • Booking Management: Track ticket sales
  • Role-based Access: Organizer-specific features and permissions

πŸ” Authentication & Security

  • NextAuth Integration: Secure credential-based authentication
  • Email Verification: OTP-based account verification with Resend
  • Role Management: Attendee and organizer role separation
  • Form Validation: Comprehensive validation with Zod and React Hook Form

πŸ“‹ Development Status

Note: This is a portfolio project focused on showcasing full-stack development skills and modern web technologies. Some features like notifications are UI-only components to demonstrate interface design.

βœ… Completed Features

  • Authentication System: Complete NextAuth setup with credentials provider
  • User Management: Registration, login, email verification with Resend
  • Event Creation: Full event management with image upload via Supabase
  • Booking System: Ticket booking with real-time availability
  • Database Design: MongoDB with Mongoose ODM for all models
  • Form Handling: React Hook Form integration across all forms
  • UI Components: Clean, responsive design with shadcn/ui and Tailwind CSS
  • Role-based Access: Organizer vs attendee permissions and routing

οΏ½ In Progress

  • Payment Integration: Stripe/PayPal integration for secure transactions
  • User Reviews: Event rating and review system
  • Ticket Management: Cancellation and refund functionality
  • Account Settings: Password change and profile management

οΏ½ UI-Only Features

  • Notification Menu: Interface component without backend implementation (focus was on core functionality)

πŸ› οΈ Tech Stack

Frontend

Next.js TypeScript React Tailwind CSS shadcn/ui Origin UI

Backend & Database

Node.js MongoDB Mongoose

Authentication & Validation

NextAuth Zod bcrypt React Hook Form

Cloud Services

Supabase Resend Vercel

πŸ“± Screenshots

🏠 Dashboard

Gatherly Dashboard

Event discovery dashboard with clean, modern interface


πŸš€ Getting Started

Prerequisites

  • Node.js 18.x or later
  • npm or yarn
  • MongoDB Atlas account
  • Supabase account (for image uploads)
  • Resend account (for email verification)

Installation

  1. Clone the repository

    git clone https://github.com/riteshkrkarn/gatherly.git
    cd gatherly
  2. Install dependencies

    npm install
    # or
    yarn install
  3. Set up environment variables Create a .env.local file in the root directory:

    MONGODB_URL=your_mongodb_atlas_connection_string
    NEXTAUTH_SECRET=your_nextauth_secret
    NEXTAUTH_URL=http://localhost:3000
    
    # Supabase (for image uploads)
    NEXT_PUBLIC_SUPABASE_URL=your_supabase_url
    NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key
    SUPABASE_SERVICE_ROLE_KEY=your_supabase_service_role_key
    
    # Resend (for email verification)
    RESEND_API_KEY=your_resend_api_key
    
    # Stripe (for payments - optional)
    STRIPE_PUBLISHABLE_KEY=your_stripe_publishable_key
    STRIPE_SECRET_KEY=your_stripe_secret_key
  4. Run the development server

    npm run dev
    # or
    yarn dev
  5. Open your browser Navigate to http://localhost:3000


πŸ“ Project Structure

gatherly/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ app/                    # Next.js 14 App Router
β”‚   β”‚   β”œβ”€β”€ (app)/             # Protected app routes
β”‚   β”‚   β”‚   β”œβ”€β”€ about/         # About page
β”‚   β”‚   β”‚   β”œβ”€β”€ booking-page/  # Ticket booking pages
β”‚   β”‚   β”‚   β”œβ”€β”€ create-event/  # Event creation (organizers)
β”‚   β”‚   β”‚   β”œβ”€β”€ dashboard/     # Main dashboard
β”‚   β”‚   β”‚   β”œβ”€β”€ events/        # Event detail pages
β”‚   β”‚   β”‚   β”œβ”€β”€ my-events/     # User's events/bookings
β”‚   β”‚   β”‚   β”œβ”€β”€ profile-page/  # User profile
β”‚   β”‚   β”‚   └── update-user/   # Profile update
β”‚   β”‚   β”œβ”€β”€ (auth)/            # Authentication routes
β”‚   β”‚   β”‚   β”œβ”€β”€ sign-in/       # Login page
β”‚   β”‚   β”‚   β”œβ”€β”€ sign-up/       # Registration page
β”‚   β”‚   β”‚   └── verify-code/   # Email verification
β”‚   β”‚   β”œβ”€β”€ api/               # API routes
β”‚   β”‚   β”‚   β”œβ”€β”€ auth/          # Authentication APIs
β”‚   β”‚   β”‚   β”œβ”€β”€ book-ticket/   # Booking APIs
β”‚   β”‚   β”‚   β”œβ”€β”€ check-username-unique/ # Username validation
β”‚   β”‚   β”‚   β”œβ”€β”€ create-event/  # Event creation API
β”‚   β”‚   β”‚   β”œβ”€β”€ events/        # Event-related APIs
β”‚   β”‚   β”‚   β”œβ”€β”€ get-events/    # Event listing API
β”‚   β”‚   β”‚   β”œβ”€β”€ get-my-events/ # User events API
β”‚   β”‚   β”‚   β”œβ”€β”€ get-user/      # User data API
β”‚   β”‚   β”‚   β”œβ”€β”€ update-user/   # User update API
β”‚   β”‚   β”‚   └── verify-code/   # Email verification API
β”‚   β”‚   β”œβ”€β”€ favicon.ico        # App favicon
β”‚   β”‚   β”œβ”€β”€ globals.css        # Global styles
β”‚   β”‚   β”œβ”€β”€ layout.tsx         # Root layout
β”‚   β”‚   └── page.tsx           # Homepage
β”‚   β”œβ”€β”€ components/            # Reusable components
β”‚   β”‚   β”œβ”€β”€ providers/         # Context providers
β”‚   β”‚   β”œβ”€β”€ ui/               # shadcn/ui & Origin UI components
β”‚   β”‚   β”‚   β”œβ”€β”€ file-uploader.tsx
β”‚   β”‚   β”‚   β”œβ”€β”€ notification-menu.tsx
β”‚   β”‚   β”‚   β”œβ”€β”€ select-component.tsx
β”‚   β”‚   β”‚   └── user-menu.tsx
β”‚   β”‚   └── [other components] # Custom components
β”‚   β”œβ”€β”€ constants/             # App constants
β”‚   β”‚   └── eventConstants.ts  # Event-related constants
β”‚   β”œβ”€β”€ helpers/               # Utility functions
β”‚   β”‚   └── sendVerificationEmail.ts # Email utilities
β”‚   β”œβ”€β”€ hooks/                 # Custom React hooks
β”‚   β”‚   └── use-file-upload.ts # File upload hook
β”‚   β”œβ”€β”€ lib/                   # Core utilities
β”‚   β”‚   β”œβ”€β”€ dbConnect.ts       # MongoDB connection
β”‚   β”‚   β”œβ”€β”€ resend.ts          # Email service config
β”‚   β”‚   β”œβ”€β”€ supabase.ts        # Supabase config
β”‚   β”‚   β”œβ”€β”€ upload.ts          # File upload utilities
β”‚   β”‚   └── utils.ts           # General utilities
β”‚   β”œβ”€β”€ model/                 # MongoDB Mongoose models
β”‚   β”‚   β”œβ”€β”€ Booking.model.ts   # Booking schema
β”‚   β”‚   β”œβ”€β”€ Event.model.ts     # Event schema
β”‚   β”‚   └── User.model.ts      # User schema
β”‚   β”œβ”€β”€ schemas/               # Zod validation schemas
β”‚   β”‚   β”œβ”€β”€ bookingValidationSchema.ts
β”‚   β”‚   β”œβ”€β”€ eventValidationSchema.ts
β”‚   β”‚   β”œβ”€β”€ loginValidationSchema.ts
β”‚   β”‚   β”œβ”€β”€ signupValidationSchema.ts
β”‚   β”‚   β”œβ”€β”€ updateUserValidationSchema.ts
β”‚   β”‚   └── verifyValidationSchema.ts
β”‚   β”œβ”€β”€ types/                 # TypeScript definitions
β”‚   β”‚   └── next-auth.d.ts     # NextAuth type extensions
β”‚   └── middleware.ts          # Next.js middleware
β”œβ”€β”€ public/                    # Static assets
β”œβ”€β”€ .env.local                # Environment variables
β”œβ”€β”€ package.json
└── README.md

πŸ”§ API Endpoints

Authentication

  • POST /api/auth/sign-up - User registration
  • POST /api/verify-code - Email verification
  • GET /api/check-username-unique - Check username availability

Events

  • GET /api/get-events - Get all events with pagination
  • GET /api/events/[id] - Get single event details
  • POST /api/create-event - Create new event (organizers only)

Bookings

  • POST /api/book-ticket/[id] - Book event tickets

Users

  • POST /api/update-user - Update user profile

🌐 Real-World Usage

🎭 Event Organizers

  • Local Businesses: Restaurants hosting wine tastings, cafes organizing book clubs
  • Educational Institutions: Universities hosting seminars, workshops, and conferences
  • Community Groups: Local clubs organizing meetups, charity events, and fundraisers
  • Entertainment Venues: Concert halls, theaters, and comedy clubs selling tickets

πŸŽͺ Event Attendees

  • Professionals: Finding networking events, conferences, and skill-building workshops
  • Students: Discovering educational seminars, career fairs, and campus events
  • Families: Finding family-friendly activities, festivals, and community events
  • Enthusiasts: Booking tickets for hobby-related events, sports, and entertainment

πŸ’Ό Business Applications

  • Corporate Events: Company meetings, team building activities, and product launches
  • Non-profits: Fundraising events, awareness campaigns, and volunteer activities
  • Government: Public meetings, town halls, and community engagement events

🀝 Contributing

This is a portfolio project for showcasing full-stack development skills and learning modern web technologies. Contributions are welcome!

Ways to Contribute

  1. Bug Reports: Found a bug? Open an issue with detailed information
  2. Feature Requests: Have an idea? Create a feature request
  3. Code Contributions: Fork the repo and submit a pull request
  4. Documentation: Help improve the documentation

Development Guidelines

  1. Follow TypeScript best practices
  2. Use the established project structure
  3. Write descriptive commit messages
  4. Test your changes thoroughly
  5. Update documentation as needed

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


πŸ™ Acknowledgments

  • Next.js Team for the amazing framework
  • Vercel for hosting and deployment
  • MongoDB for the database solution
  • shadcn/ui for the beautiful UI components
  • Open Source Community for the incredible tools and libraries

⭐ Star this repository if you find it helpful!


πŸ“ž Contact


This project is actively being developed. Check back for updates and new features!

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published