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
- π Features
- π οΈ Tech Stack
- π± Screenshots
- π Getting Started
- π Project Structure
- π§ API Endpoints
- π Real-World Usage
- π€ Contributing
- π License
- 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
- 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
- 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
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.
- 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
- 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
- Notification Menu: Interface component without backend implementation (focus was on core functionality)
- Node.js 18.x or later
- npm or yarn
- MongoDB Atlas account
- Supabase account (for image uploads)
- Resend account (for email verification)
-
Clone the repository
git clone https://github.com/riteshkrkarn/gatherly.git cd gatherly -
Install dependencies
npm install # or yarn install -
Set up environment variables Create a
.env.localfile 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
-
Run the development server
npm run dev # or yarn dev -
Open your browser Navigate to http://localhost:3000
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
POST /api/auth/sign-up- User registrationPOST /api/verify-code- Email verificationGET /api/check-username-unique- Check username availability
GET /api/get-events- Get all events with paginationGET /api/events/[id]- Get single event detailsPOST /api/create-event- Create new event (organizers only)
POST /api/book-ticket/[id]- Book event tickets
POST /api/update-user- Update user profile
- 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
- 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
- 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
This is a portfolio project for showcasing full-stack development skills and learning modern web technologies. Contributions are welcome!
- Bug Reports: Found a bug? Open an issue with detailed information
- Feature Requests: Have an idea? Create a feature request
- Code Contributions: Fork the repo and submit a pull request
- Documentation: Help improve the documentation
- Follow TypeScript best practices
- Use the established project structure
- Write descriptive commit messages
- Test your changes thoroughly
- Update documentation as needed
This project is licensed under the MIT License - see the LICENSE file for details.
- 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!
- X: riteshkrkarn
- LinkedIn: riteshkrkarn
This project is actively being developed. Check back for updates and new features!
