The Ultimate Hackathon Aggregator for Developers
HackHunt is a centralized platform that aggregates hackathons and coding competitions from multiple sources—MLH, Devpost, Kaggle, and Devfolio—into a single, unified interface. Stop searching across ten different tabs; find your next challenge in one place.
- Unified Discovery: Browse hackathons from MLH, Devpost, Kaggle, and Devfolio in a single list.
- Smart Filtering: Filter by Mode (Online/Offline), Cost (Free/Paid), Skills (Python, React, AI), and Source.
- Automated Scraping: Our backend automatically scrapes and updates hackathon data every 24 hours.
- Rich Details: View comprehensive details including prizes, dates, organizers, and registration links.
- Responsive Design: Built with a mobile-first approach using Tailwind CSS and Shadcn UI.
- Framework: React 18 + TypeScript
- Build Tool: Vite
- Styling: Tailwind CSS + Shadcn UI
- Deployment: Vercel
- Runtime: Node.js + Express
- Database: Google Firestore (NoSQL)
- Scraping: Playwright (Headless Browser) + Cheerio
- Scheduling: Node-Cron (Daily updates)
- Deployment: Render (Dockerized)
HackHunt uses a decoupled architecture. The Node.js backend runs scheduled jobs to scrape data from external platforms, normalizes it, and stores it in Firestore. The React frontend consumes this data via a REST API.
- Node.js (v18+)
- npm
- Firebase Service Account Credentials
-
Clone the repository
git clone https://github.com/prem22k/Hack-Hunt.git cd Hack-Hunt -
Backend Setup
cd server npm install # Create a .env file # PORT=5000 # FIREBASE_SERVICE_ACCOUNT='{...your json credentials...}' npm run dev
-
Frontend Setup
cd .. npm install npm run dev -
Visit the App Open
http://localhost:5173to view the frontend.
- Frontend: Deployed on Vercel.
- Backend: Deployed on Render using Docker to support Playwright browsers.
- Automation: A cron job triggers the scraper daily to ensure fresh data.
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the project
- 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.