A modern, full-stack event management and registration system built with Next.js 16, TypeScript, and PostgreSQL
Eventify is a production-ready event management platform that enables organizers to create and manage events while providing attendees with a seamless event discovery and registration experience. Built with modern web technologies and featuring a premium glassmorphism UI design.
- Secure user registration with role selection (Organizer/Attendee)
- Email and password authentication
- Session management with NextAuth.js v5
- Role-based access control (RBAC)
- Protected routes and API endpoints
- Create events with comprehensive details
- Edit and delete owned events
- View registered attendees list
- Real-time capacity tracking
- Event statistics dashboard
- Image upload integration (Cloudinary)
- Browse all available events
- Advanced filtering by category and status
- Real-time search functionality
- Detailed event information pages
- Responsive event cards with status badges
- One-click event registration
- Real-time capacity validation
- Registration cancellation
- "My Events" dashboard
- Registration status tracking
- Dark theme with glassmorphism design
- Indigo-purple gradient accents
- Smooth animations and micro-interactions
- Mobile-first responsive design
- Optimized for all screen sizes
- Framework: Next.js 16 (App Router)
- Language: TypeScript
- Styling: Tailwind CSS 4
- UI Components: Custom components with Lucide React icons
- State Management: React Hooks
- Notifications: React Hot Toast
- API: Next.js API Routes
- Database: PostgreSQL
- ORM: Prisma
- Authentication: NextAuth.js v5
- Password Hashing: bcryptjs
- Image Storage: Cloudinary
- Deployment: Vercel-ready
- Database Hosting: Compatible with Neon, Supabase, Railway
- Node.js 18 or higher
- PostgreSQL database (local or cloud-hosted)
- npm or yarn package manager
-
Clone the repository
git clone https://github.com/Pusri27/eventify-platform.git cd eventify-platform -
Install dependencies
npm install
-
Set up environment variables
cp .env.example .env.local
Configure the following variables in
.env.local:# Database DATABASE_URL="postgresql://username:password@localhost:5432/eventify" # NextAuth NEXTAUTH_SECRET="your-secret-key-here" NEXTAUTH_URL="http://localhost:3000" # Cloudinary (Optional - for image uploads) NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME="your-cloud-name" CLOUDINARY_API_KEY="your-api-key" CLOUDINARY_API_SECRET="your-api-secret"
-
Set up the database
npx prisma db push
-
Run the development server
npm run dev
-
Open your browser
Navigate to http://localhost:3000
eventify-platform/
βββ prisma/
β βββ schema.prisma # Database schema
βββ public/ # Static assets
βββ src/
β βββ app/
β β βββ api/ # API routes
β β β βββ auth/ # Authentication endpoints
β β β βββ events/ # Event CRUD endpoints
β β β βββ register/ # User registration
β β β βββ user/ # User-specific endpoints
β β βββ dashboard/ # Dashboard pages
β β β βββ manage-events/
β β β βββ my-events/
β β β βββ profile/
β β βββ events/ # Event pages
β β βββ login/ # Login page
β β βββ register/ # Registration page
β β βββ globals.css # Global styles
β β βββ layout.tsx # Root layout
β β βββ page.tsx # Landing page
β βββ components/
β β βββ events/ # Event-related components
β β βββ layout/ # Layout components (Navbar, Footer)
β β βββ Providers.tsx # Client-side providers
β βββ lib/
β β βββ auth.ts # NextAuth configuration
β β βββ prisma.ts # Prisma client
β β βββ utils.ts # Utility functions
β βββ types/
β βββ next-auth.d.ts # TypeScript type augmentation
βββ .env.example # Environment variables template
βββ next.config.ts # Next.js configuration
βββ tailwind.config.ts # Tailwind CSS configuration
βββ tsconfig.json # TypeScript configuration
- User - User accounts with role-based access (ORGANIZER/ATTENDEE)
- Event - Event information with organizer relations
- Registration - Event registrations with status tracking
- Proper relational design with foreign keys
- Cascade deletes for data integrity
- Indexes on frequently queried fields
- Unique constraints for business logic
- Timestamp tracking (createdAt, updatedAt)
| Method | Endpoint | Description | Auth Required |
|---|---|---|---|
| POST | /api/register |
Register new user | β |
| GET | /api/events |
List events with filters & pagination | β |
| POST | /api/events |
Create new event | β Organizer |
| GET | /api/events/[id] |
Get event details | β |
| PUT | /api/events/[id] |
Update event | β Owner |
| DELETE | /api/events/[id] |
Delete event | β Owner |
| POST | /api/events/[id]/register |
Register to event | β Attendee |
| DELETE | /api/events/[id]/register |
Cancel registration | β Attendee |
| GET | /api/events/[id]/attendees |
Get attendee list | β Organizer |
| GET | /api/user/events |
Get user's registered events | β |
| GET | /api/user/organized-events |
Get organizer's events | β Organizer |
- Background: Deep black with subtle gradients
- Accent: Indigo-purple gradient (#6366f1 β #a855f7)
- Text: White with varying opacity levels
- Borders: Subtle white with low opacity
- Glassmorphism effects with backdrop blur
- Smooth transitions and hover states
- Gradient text and button accents
- Custom scrollbar styling
- Responsive grid layouts
| Variable | Description | Required |
|---|---|---|
DATABASE_URL |
PostgreSQL connection string | β |
NEXTAUTH_SECRET |
Secret key for NextAuth.js | β |
NEXTAUTH_URL |
Base URL of the application | β |
NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME |
Cloudinary cloud name | β |
CLOUDINARY_API_KEY |
Cloudinary API key | β |
CLOUDINARY_API_SECRET |
Cloudinary API secret | β |
- Push your code to GitHub
- Import project in Vercel
- Configure environment variables
- Deploy
- Neon - Serverless PostgreSQL (Free tier available)
- Supabase - Open-source Firebase alternative
- Railway - Infrastructure platform
- Render - Cloud application hosting
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Pusri27
- GitHub: @Pusri27
- Next.js team for the amazing framework
- Vercel for hosting and deployment platform
- Prisma for the excellent ORM
- All open-source contributors
β If you find this project helpful, please consider giving it a star!