A web application that aggregates upcoming hackathons from multiple platforms (Unstop, Devfolio, and Devpost) and displays them in real-time. The website focuses on hackathons in Mumbai but also includes national-level hackathons. Users receive push notifications when new hackathons are added.
- Hackathon Aggregation: Scrapes hackathon data from Unstop, Devfolio, and Devpost
- Real-Time Updates: Automatically updates the list of hackathons as new ones are added
- Notifications: Sends push notifications to users when new hackathons are added
- User-Friendly Frontend: Built with Next.js and shadcn UI
- Filtering: Filter hackathons by location, date, and source platform
- Framework: Next.js
- UI Library: shadcn
- Notifications: Firebase Cloud Messaging (FCM)
- Framework: FastAPI (Python)
- Web Scraping: BeautifulSoup
- Database: PostgreSQL
- Task Scheduler: Celery with Redis
- Node.js (v18+)
- Python (v3.8+)
- PostgreSQL
- Redis
-
Navigate to the backend directory:
cd backend -
Create and activate a virtual environment:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate -
Install dependencies:
pip install -r requirements.txt -
Set up environment variables:
export DATABASE_URL="postgresql://username:password@localhost/hackathon_db" export REDIS_URL="redis://localhost:6379/0" export FIREBASE_CREDENTIALS_PATH="path/to/firebase-credentials.json" -
Initialize the database:
python -m app.db.init_db -
Start the FastAPI server:
uvicorn app.main:app --reload -
Start the Celery worker:
celery -A app.worker worker --loglevel=info -
Start the Celery beat scheduler:
celery -A app.worker beat --loglevel=info
-
Navigate to the frontend directory:
cd frontend -
Install dependencies:
npm install -
Set up environment variables: Create a
.env.localfile with:NEXT_PUBLIC_API_URL=http://localhost:8000/api NEXT_PUBLIC_FIREBASE_API_KEY=your_firebase_api_key NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=your_firebase_auth_domain NEXT_PUBLIC_FIREBASE_PROJECT_ID=your_firebase_project_id NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your_firebase_messaging_sender_id NEXT_PUBLIC_FIREBASE_APP_ID=your_firebase_app_id -
Start the development server:
npm run dev
- Create a Firebase project at https://console.firebase.google.com/
- Set up Firebase Cloud Messaging (FCM)
- Download the service account key file and save it as
firebase-credentials.jsonin the backend directory - Configure the web app to use Firebase
This project is licensed under the MIT License - see the LICENSE file for details.