A comprehensive event management and registration platform designed for RoadTract Club branches to organize and manage events seamlessly.
Eventify is a full-stack web application that enables users to discover, register for, and manage events organized by various branches of the RoadTract Club. The platform provides an intuitive interface for both event organizers and attendees, streamlining the entire event management process.
- Event Discovery: Browse events organized by different RoadTract Club branches
- User Registration: Simple and secure user authentication system
- Event Registration: Easy registration process for events
- Payment Integration: Secure payment processing with Khalti
- Location Services: Interactive maps and location-based event discovery
- Email Notifications: Automated email confirmations and updates
- Admin Dashboard: Comprehensive admin panel for event management
- Club Management: Multi-branch support with dedicated club pages
- Responsive Design: Mobile-friendly interface built with modern UI components
- Real-time Updates: Dynamic event information and registration status
- Framework: Next.js 14+ with TypeScript
- UI Library: shadcn/ui components
- Styling: Tailwind CSS
- Maps Integration: Google Maps API & OpenRouteService
- Geocoding: OpenCage Geocoding API
- State Management: React Hooks & Context API
- Authentication: Firebase Authentication
- Framework: Flask (Python)
- Database: PostgreSQL (Supabase)
- Authentication: Firebase Admin SDK
- Email Service: Resend API & Gmail SMTP
- Payment Gateway: Khalti API
- File Storage: Media handling for event assets
- API: RESTful API architecture
Eventify/
βββ frontend/ # Next.js TypeScript frontend
β βββ app/ # App router pages
β β βββ (normalUser)/ # User-facing pages
β β βββ admin/ # Admin dashboard
β β βββ club/ # Club-specific pages
β β βββ login/ # Authentication pages
β β βββ api/ # API routes
β βββ components/ # Reusable UI components
β βββ lib/ # Utility libraries
β βββ hooks/ # Custom React hooks
β βββ context/ # React context providers
β βββ public/ # Static assets
β
βββ backend/ # Flask Python backend
βββ api/ # API blueprint modules
β βββ controllers/ # Request handlers
β βββ routes/ # Route definitions
β βββ models/ # Database models
β βββ utils/ # Helper utilities
βββ firebase/ # Firebase configuration
βββ middleware/ # Custom middleware
βββ media/ # File uploads
βββ migrations/ # Database migrations
- Node.js 18+ and npm/pnpm
- Python 3.8+
- PostgreSQL database (Supabase account)
- Firebase project setup
- Google Maps API key
- Khalti merchant account (for payments)
-
Navigate to the frontend directory:
cd frontend -
Install dependencies:
npm install # or pnpm install -
Create environment file:
cp .env.example .env
-
Configure your environment variables:
NEXT_PUBLIC_BACKEND_URL=http://localhost:5000 NODE_ENV=development GOOGLE_MAPS_API_KEY=your_google_maps_api_key OPEN_ROUTE_SERVICE_API_KEY=your_openroute_api_key OPEN_CAGE_API_KEY=your_opencage_api_key
-
Run the development server:
npm run dev # or pnpm dev -
Run the development server:
npm run dev # or pnpm devThe frontend will be available at
http://localhost:3000
-
Navigate to the backend directory:
cd backend -
Create and activate virtual environment:
python -m venv .venv source .venv/bin/activate # On Windows: .venv\Scripts\activate
-
Install dependencies:
pip install -r requirements.txt
-
Configure environment variables:
cp .env.example .env
-
Add Firebase service account key:
# Place your Firebase service account JSON file as: # backend/firebase/serviceKey.json
-
Run database migrations:
# Database will be automatically managed by Supabase # Ensure your DATABASE_URL is correctly configured
-
Start the Flask development server:
python app.py # or flask runThe backend API will be available at
http://localhost:5000
- Create a Firebase project at Firebase Console
- Enable Authentication with your preferred sign-in methods
- Download the service account key and save it as
backend/firebase/serviceKey.json - Configure Firebase SDK in both frontend and backend
Google Maps API:
- Go to Google Cloud Console
- Enable Maps JavaScript API and Geocoding API
- Create an API key and add it to your environment variables
Khalti Payment Gateway:
- Create a merchant account at Khalti
- Get your API keys from the merchant dashboard
- Configure test/live keys based on your environment
OpenRouteService & OpenCage:
- Register at OpenRouteService for routing services
- Register at OpenCage for geocoding services
- Add the API keys to your environment variables
Frontend (.env)
NEXT_PUBLIC_BACKEND_URL=http://localhost:5000
NODE_ENV=development
GOOGLE_MAPS_API_KEY=your_google_maps_api_key
OPEN_ROUTE_SERVICE_API_KEY=your_openroute_service_api_key
OPEN_CAGE_API_KEY=your_opencage_api_keyBackend (.env)
DATABASE_URL=your_supabase_database_url
FIREBASE_API_KEY=your_firebase_api_key
FLASK_ENV=development
RESEND_API_KEY=your_resend_api_key
MAIL_USERNAME=your_gmail_username
MAIL_PASSWORD=your_gmail_app_password
SUPPORT_EMAIL=your_support_email
KHALTI_API_KEY=your_khalti_api_key
BACKEND_URL=http://localhost:5000
FRONTEND_URL=http://localhost:3000The backend provides a RESTful API with the following main endpoints:
GET /api/events- Retrieve all eventsPOST /api/events- Create new event (Admin only)GET /api/events/:id- Get specific event detailsPOST /api/register- Register for an eventGET /api/clubs- List all club branchesPOST /api/auth- Authentication endpoints
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some 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.
Built with β€οΈ by the RoadTract Club development team.
For support and questions:
- Create an issue in this repository
- Contact the development team
- Check the documentation wiki
Note: This project is actively maintained and continuously improved. Check back regularly for updates and new features!