A Centralized Event Discovery and Management Platform for Addis Ababa
EventAddis connects event seekers and organizers in one place, providing a seamless experience to discover, register, and manage events happening across Addis Ababa. Built with modern full-stack architecture using Next.js, NestJS, MongoDB, TypeScript, and Tailwind CSS.
- Event Discovery: Browse and search events by category, type, location, and price
- Smart Filtering: Advanced search with multiple filters and sorting options
- Secure Booking: Book events with integrated Chapa payment processing
- Digital Tickets: Download and view tickets
- Favorites System: Save events for later viewing
- User Dashboard: Track bookings, payments, and event history
- Notifications: Get updates about events and bookings
- Event Management: Create, edit, and manage events with rich details
- Analytics Dashboard: Track event performance, bookings, and revenue
- Attendee Management: View and manage event registrations
- Payment Tracking: Monitor payments and generate reports
- Communication Tools: Send announcements and messages to attendees
- Image Upload: Upload event banners with Cloudinary integration
- Authentication: Email/password and Google OAuth login
- Password Reset: Secure password recovery system
- Responsive Design: Mobile-first design with dark/light themes
- Role-based Access: Separate interfaces for attendees and organizers
- Next.js 15 - React framework with App Router
- TypeScript - Type-safe development
- Tailwind CSS v4 - Utility-first CSS framework
- Zustand - State management
- React Hot Toast - Notifications
- Lucide React - Icon library
-
NestJS - Node.js framework with TypeScript
-
MongoDB - NoSQL database with Mongoose ODM
-
JWT - Authentication and authorization
-
Passport.js - Google OAuth integration
-
Cloudinary - Image upload and management
-
Chapa - Payment processing for Ethiopia
- Live Link: https://event-addis.vercel.app
-
Node.js 18+ and npm
-
MongoDB Atlas account
-
Google OAuth credentials
-
Chapa account for payments
-
Cloudinary account for images
git clone https://github.com/your-username/Event-Addis.git
cd Event-Addiscd backend
npm install
# Create .env file
cp .env.example .envConfigure your .env file:
DATABASE_URL=mongodb+srv://username:password@cluster.mongodb.net/event-addis
JWT_SECRET=your-jwt-secret-key
GOOGLE_CLIENT_ID=your-google-client-id
GOOGLE_CLIENT_SECRET=your-google-client-secret
GOOGLE_CALLBACK_URL=http://localhost:3001/auth/google/callback
FRONTEND_URL=http://localhost:3000
CLOUDINARY_CLOUD_NAME=your-cloudinary-name
CLOUDINARY_API_KEY=your-cloudinary-key
CLOUDINARY_API_SECRET=your-cloudinary-secret
CHAPA_PUBLIC_KEY=your-chapa-public-key
CHAPA_SECRET_KEY=your-chapa-secret-keyStart the backend:
npm run start:devcd frontend
npm install
# Create .env.local file
cp .env.example .env.localConfigure your .env.local file:
NEXT_PUBLIC_API_URL=http://localhost:3001
GOOGLE_CLIENT_ID=your-google-client-id
GOOGLE_CLIENT_SECRET=your-google-client-secretStart the frontend:
npm run devEvent-Addis/
βββ backend/ # NestJS Backend
β βββ src/
β β βββ auth/ # Authentication module
β β βββ events/ # Events management
β β βββ bookings/ # Booking system
β β βββ dashboard/ # Dashboard APIs
β β βββ notifications/ # Notification system
β β βββ uploads/ # File upload handling
β β βββ schemas/ # MongoDB schemas
β βββ package.json
βββ frontend/ # Next.js Frontend
β βββ app/ # App Router pages
β β βββ (auth)/ # Authentication pages
β β βββ dashboard/ # Organizer dashboard
β β βββ (dashboard)/ # User dashboard
β β βββ discover/ # Public event discovery
β βββ components/ # Reusable components
β βββ lib/ # Utilities and API calls
β βββ package.json
βββ README.md
- Registration: Users sign up as attendees or organizers
- Email Verification: Brevo sends verification emails
- Login: JWT-based authentication with Google OAuth option
- Role-based Routing: Automatic redirection based on user role
- Chapa Payment Gateway: Secure payments for Ethiopian users
- Payment Verification: Automatic booking confirmation
- Receipt Generation: Digital receipts for all transactions
- Refund Support: Built-in refund handling
Note: The payment system is currently in test mode. Use these test numbers for successful transactions:
Awash Bank Mobile Money
- Phone:
0900123456
Any other phone numbers will return a failed payment status.
- Theme System: Light and dark mode support
- Responsive Design: Mobile-first approach
- Loading States: Smooth user experience
- Error Handling: User-friendly error messages
- Accessibility: WCAG compliant components
POST /auth/signup- User registrationPOST /auth/login- User loginGET /auth/google- Google OAuthPOST /auth/forgot-password- Password reset request
GET /api/events- List all eventsPOST /api/events- Create event (organizers only)GET /api/events/:id- Get event detailsPOST /api/events/:id/book- Book event
GET /dashboard/organizer/stats- Organizer statisticsGET /dashboard/user/bookings- User bookingsGET /notifications- Get notifications
cd frontend
npm test # Run all tests
npm run test:watch # Run tests in watch mode
npm run test:coverage # Run tests with coveragecd backend
npm test # Run unit tests
npm run test:watch # Run tests in watch mode
npm run test:cov # Run tests with coverage
npm run test:e2e # Run integration tests- Frontend: Unit tests for components, API functions, and auth hooks
- Backend: Unit tests for services and integration tests for endpoints
- Testing Libraries: Jest, React Testing Library, NestJS Testing
- Connect your GitHub repository
- Set environment variables
- Deploy with automatic builds
- Connect your GitHub repository
- Set environment variables
- Deploy with automatic builds
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Developer: Bereket Eshete
- Project Type: Full-Stack Event Management Platform
- Location: Addis Ababa, Ethiopia
- Next.js team for the amazing framework
- NestJS team for the robust backend framework
- Tailwind CSS for the utility-first CSS framework
- Chapa for Ethiopian payment processing
For support, email bereketeshete63@gmail.com or create an issue in the repository.
EventAddis - Connecting Communities Through Amazing Events π