A modern, full-stack hackathon hosting platform built with React, Node.js, and Azure. Haxplode provides a comprehensive solution for organizing, participating in, and judging hackathons with real-time collaboration features.
Access the live application: https://salmon-sea-0fd40ca00.1.azurestaticapps.net/
- Google OAuth Integration: Seamless sign-in with Google accounts
- JWT-based Authentication: Secure token-based authentication
- Role-based Access Control: Different permissions for Participants, Organizers, and Judges
- Passwordless Registration: Google users can register without passwords
- Email Verification: Automatic email verification for Google accounts
- Participants: Register for hackathons, join teams, submit projects
- Organizers: Create and manage hackathons, view analytics, manage participants
- Judges: Can review submissions, provide feedback, score projects
- Live Updates: Socket.io integration for real-time notifications
- Live Chat: Real-time communication during hackathons
- Status Updates: Live submission and event status updates
- Notifications: Real-time notifications for all users
- Responsive Design: Mobile-first approach with TailwindCSS
- Dark/Light Theme: Toggle between themes
- Modern Components: Beautiful, accessible UI components
- Loading States: Smooth loading animations and skeletons
- Google OAuth Integration: Seamless sign-in with Google accounts
- JWT-based Authentication: Secure token-based authentication
- Role-based Access Control: Different permissions for Participants, Organizers, and Judges
- Passwordless Registration: Google users can register without passwords
- Email Verification: Automatic email verification for Google accounts
- Participants: Register for hackathons, join teams, submit projects
- Organizers: Create and manage hackathons, view analytics, manage participants
- Judges: Can review submissions, provide feedback, score projects
- Live Updates: Socket.io integration for real-time notifications
- Live Chat: Real-time communication during hackathons
- Status Updates: Live submission and event status updates
- Notifications: Real-time notifications for all users
- Responsive Design: Mobile-first approach with TailwindCSS
- Dark/Light Theme: Toggle between themes
- Modern Components: Beautiful, accessible UI components
- Loading States: Smooth loading animations and skeletons
- React 19 - Modern React with latest features
- Vite - Fast build tool and dev server
- TailwindCSS - Utility-first CSS framework
- React Router DOM v7 - Client-side routing
- Axios - HTTP client with interceptors
- Socket.io Client - Real-time communication
- Lucide React - Beautiful icons
- Firebase Auth - Google OAuth integration
- Node.js - JavaScript runtime
- Express.js - Web framework
- Sequelize - SQL ORM
- Socket.io - Real-time server
- JWT - Authentication tokens
- Azure SQL Database - Cloud database
- MongoDB - NoSQL database for specific features
- Multer - File upload handling
-
Hackathon Management
- Create and edit hackathons with detailed information
- Set event dates, themes, and prize pools
- Configure submission guidelines and requirements
- Manage multiple rounds and phases
-
Participant Management
- View and manage participant registrations
- Approve/reject participant applications
- Monitor participant activity and engagement
- Send announcements and notifications
-
Judge Management
- Assign judges to specific submissions
- Manage judge profiles and permissions
- Monitor judging progress and scores
- Coordinate judging rounds
-
Analytics & Insights
- Real-time analytics dashboard
- Participant engagement metrics
- Submission statistics and trends
- Performance reports and charts
-
Sponsor Management
- Add and manage sponsors
- Display sponsor information and logos
- Track sponsor contributions
- Sponsor showcase and recognition
-
Announcements
- Create and send announcements
- Schedule announcements for specific times
- Target announcements to specific groups
- Track announcement read rates
-
Hackathon Discovery
- Browse available hackathons
- Filter by theme, date, and location
- View detailed hackathon information
- Register for hackathons
-
Team Management
- Create new teams
- Join existing teams with team codes
- Manage team members and roles
- View team statistics and progress
-
Project Submission
- Submit project files and documentation
- Track submission status
- Update submissions before deadlines
- View submission feedback
-
Real-time Updates
- Live notifications for events
- Real-time chat with team members
- Live updates on hackathon progress
- Deadline reminders and alerts
-
Certificates & Recognition
- Download participation certificates
- View achievement badges
- Track participation history
- Share achievements on social media
-
Q&A & Support
- Ask questions to organizers
- View FAQ and guidelines
- Get real-time support
- Access resource materials
-
Submission Review
- View assigned submissions
- Review project details and files
- Provide detailed feedback
- Score submissions based on criteria
-
Scoring System
- Use customizable scoring rubrics
- Provide qualitative feedback
- Track scoring progress
- Compare submissions
-
Analytics Dashboard
- View judging statistics
- Track review progress
- Monitor scoring consistency
- Generate judging reports
-
Communication
- Communicate with other judges
- Discuss submissions and scores
- Coordinate judging rounds
- Provide feedback to organizers
- React 19 - Modern React with latest features
- Vite - Fast build tool and dev server
- TailwindCSS - Utility-first CSS framework
- React Router DOM v7 - Client-side routing
- Axios - HTTP client with interceptors
- Socket.io Client - Real-time communication
- Lucide React - Beautiful icons
- Firebase Auth - Google OAuth integration
- Node.js - JavaScript runtime
- Express.js - Web framework
- Sequelize - SQL ORM
- Socket.io - Real-time server
- JWT - Authentication tokens
- Azure SQL Database - Cloud database
- MongoDB - NoSQL database for specific features
- Multer - File upload handling
-
Hackathon Management
- Create and edit hackathons with detailed information
- Set event dates, themes, and prize pools
- Configure submission guidelines and requirements
- Manage multiple rounds and phases
-
Participant Management
- View and manage participant registrations
- Approve/reject participant applications
- Monitor participant activity and engagement
- Send announcements and notifications
-
Judge Management
- Assign judges to specific submissions
- Manage judge profiles and permissions
- Monitor judging progress and scores
- Coordinate judging rounds
-
Analytics & Insights
- Real-time analytics dashboard
- Participant engagement metrics
- Submission statistics and trends
- Performance reports and charts
-
Sponsor Management
- Add and manage sponsors
- Display sponsor information and logos
- Track sponsor contributions
- Sponsor showcase and recognition
-
Announcements
- Create and send announcements
- Schedule announcements for specific times
- Target announcements to specific groups
- Track announcement read rates
-
Hackathon Discovery
- Browse available hackathons
- Filter by theme, date, and location
- View detailed hackathon information
- Register for hackathons
-
Team Management
- Create new teams
- Join existing teams with team codes
- Manage team members and roles
- View team statistics and progress
-
Project Submission
- Submit project files and documentation
- Track submission status
- Update submissions before deadlines
- View submission feedback
-
Real-time Updates
- Live notifications for events
- Real-time chat with team members
- Live updates on hackathon progress
- Deadline reminders and alerts
-
Certificates & Recognition
- Download participation certificates
- View achievement badges
- Track participation history
- Share achievements on social media
-
Q&A & Support
- Ask questions to organizers
- View FAQ and guidelines
- Get real-time support
- Access resource materials
-
Submission Review
- View assigned submissions
- Review project details and files
- Provide detailed feedback
- Score submissions based on criteria
-
Scoring System
- Use customizable scoring rubrics
- Provide qualitative feedback
- Track scoring progress
- Compare submissions
-
Analytics Dashboard
- View judging statistics
- Track review progress
- Monitor scoring consistency
- Generate judging reports
-
Communication
- Communicate with other judges
- Discuss submissions and scores
- Coordinate judging rounds
- Provide feedback to organizers
Haxplode/
├── frontend/ # React frontend application
│ ├── src/
│ │ ├── components/ # Reusable UI components
│ │ │ ├── auth/ # Authentication components
│ │ │ ├── common/ # Common layout components
│ │ │ ├── organizer/ # Organizer-specific components
│ │ │ ├── participant/# Participant-specific components
│ │ │ ├── judge/ # Judge-specific components
│ │ │ └── ui/ # Basic UI components
│ │ ├── pages/ # Page components
│ │ ├── services/ # API service functions
│ │ ├── context/ # React Context providers
│ │ └── utils/ # Utility functions
│ └── public/ # Static assets
├── backend/ # Node.js backend application
│ ├── controllers/ # API route controllers
│ ├── models/ # Database models
│ ├── routes/ # API routes
│ ├── middleware/ # Express middleware
│ ├── config/ # Configuration files
│ └── utils/ # Utility functions
└── docs/ # Documentation
## 🚀 Getting Started
### Prerequisites
- **Node.js 18+** - [Download here](https://nodejs.org/)
- **npm or yarn** - Package managers
- **Git** - Version control
- **Azure SQL Database** - For production database
- **MongoDB** - For specific features (optional for local development)
- **Node.js 18+** - [Download here](https://nodejs.org/)
- **npm or yarn** - Package managers
- **Git** - Version control
- **Azure SQL Database** - For production database
- **MongoDB** - For specific features (optional for local development)
### Installation
1. **Clone the repository**
```bash
git clone <repository-url>
cd Haxplode
cd Haxplode
-
Set up Backend
-
Set up Backend
cd backend # Install dependencies cd backend # Install dependencies npm install # Copy environment file cp env.example .env # Update environment variables in .env # Add your database credentials, Google OAuth keys, etc. # Copy environment file cp env.example .env # Update environment variables in .env # Add your database credentials, Google OAuth keys, etc.
-
Set up Frontend
-
Set up Frontend
cd ../frontend # Install dependencies npm install # Copy environment file cp env.example .env # Update environment variables in .env
-
Configure Environment Variables
Backend (.env):
PORT=3001 NODE_ENV=development # Database DB_HOST=your-database-host DB_USER=your-database-user DB_PASS=your-database-password DB_NAME=your-database-name # JWT JWT_SECRET=your-jwt-secret # Google OAuth GOOGLE_CLIENT_ID=your-google-client-id FRONTEND_URL=http://localhost:5173 # MongoDB (optional) MONGODB_URI=your-mongodb-uri
Frontend (.env): cd ../frontend
npm install
cp env.example .env
-
Configure Environment Variables
Backend (.env):
PORT=3001 NODE_ENV=development # Database DB_HOST=your-database-host DB_USER=your-database-user DB_PASS=your-database-password DB_NAME=your-database-name # JWT JWT_SECRET=your-jwt-secret # Google OAuth GOOGLE_CLIENT_ID=your-google-client-id FRONTEND_URL=http://localhost:5173 # MongoDB (optional) MONGODB_URI=your-mongodb-uri
Frontend (.env):
VITE_API_URL=http://localhost:3001/api VITE_SOCKET_URL=http://localhost:3001 VITE_GOOGLE_CLIENT_ID=your-google-client-id VITE_GOOGLE_CLIENT_ID=your-google-client-id VITE_APP_NAME=Haxplode VITE_APP_VERSION=1.0.0
-
Start Development Servers
Terminal 1 - Backend:
cd backend npm run devTerminal 2 - Frontend:
-
Start Development Servers
Terminal 1 - Backend:
cd backend npm run devTerminal 2 - Frontend:
cd frontend cd frontend npm run dev
-
Open your browser
- Frontend:
http://localhost:5173 - Backend API:
http://localhost:3001
- Frontend:
-
Open your browser
- Frontend:
http://localhost:5173 - Backend API:
http://localhost:3001
- Frontend:
npm run dev- Start development server with nodemonnpm start- Start production servernpm run build- Build for productionnpm test- Run tests
npm run dev- Start development server with nodemonnpm start- Start production servernpm run build- Build for productionnpm test- Run tests
npm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production buildnpm run lint- Run ESLint
- Sign In: Users click "Continue with Google" button
- Authentication: Google authenticates the user
- User Check: System checks if user exists in database
- Existing User: Direct login with JWT tokens
- New User: Redirect to registration form with pre-filled data
- Registration: User completes profile and selects role
- Account Creation: System creates user account and logs in
- Participant: Can register for hackathons and submit projects
- Organizer: Can create and manage hackathons
- Judge: Can review and score submissions
- Sign In: Users click "Continue with Google" button
- Authentication: Google authenticates the user
- User Check: System checks if user exists in database
- Existing User: Direct login with JWT tokens
- New User: Redirect to registration form with pre-filled data
- Registration: User completes profile and selects role
- Account Creation: System creates user account and logs in
- Participant: Can register for hackathons and submit projects
- Organizer: Can create and manage hackathons
- Judge: Can review and score submissions
POST /api/auth/login- User loginPOST /api/auth/register- User registrationPOST /api/auth/google- Google OAuth authenticationPOST /api/auth/google/complete- Complete Google registration
GET /api/hackathons- List all hackathonsPOST /api/hackathons- Create new hackathonPOST /api/auth/google- Google OAuth authenticationPOST /api/auth/google/complete- Complete Google registration
GET /api/hackathons- List all hackathonsPOST /api/hackathons- Create new hackathonGET /api/hackathons/:id- Get hackathon detailsPUT /api/hackathons/:id- Update hackathonDELETE /api/hackathons/:id- Delete hackathon
GET /api/teams- List teamsPOST /api/teams- Create teamGET /api/teams/:id- Get team detailsPUT /api/teams/:id- Update team
GET /api/submissions- List submissionsPOST /api/submissions- Create submissionGET /api/submissions/:id- Get submission detailsPUT /api/submissions/:id- Update submission
GET /api/judges- List judgesPOST /api/judges- Create judgeGET /api/judges/:id/submissions- Get assigned submissions
The application is currently deployed on Azure with the following configuration:
- Frontend: Azure Static Web Apps
- Backend: Azure App Service
- Database: Azure SQL Database
- Storage: Azure Blob Storage
# Backend
NODE_ENV=production
PORT=3001
DB_HOST=your-azure-sql-host
DB_USER=your-azure-sql-user
DB_PASS=your-azure-sql-password
DB_NAME=your-azure-sql-database
JWT_SECRET=your-production-jwt-secret
GOOGLE_CLIENT_ID=your-google-client-id
FRONTEND_URL=https://salmon-sea-0fd40ca00.1.azurestaticapps.net
# Frontend
VITE_API_URL=https://your-backend-url/api
VITE_SOCKET_URL=https://your-backend-url
VITE_GOOGLE_CLIENT_ID=your-google-client-id- JWT Authentication: Secure token-based authentication
- Role-based Access Control: Different permissions per user role
- Input Validation: Server-side validation with Joi
- CORS Protection: Configured CORS for security
- Rate Limiting: API rate limiting to prevent abuse
- XSS Protection: Built-in XSS protection
- CSRF Protection: CSRF token validation
PUT /api/hackathons/:id- Update hackathonDELETE /api/hackathons/:id- Delete hackathon
GET /api/teams- List teamsPOST /api/teams- Create teamGET /api/teams/:id- Get team detailsPUT /api/teams/:id- Update team
GET /api/submissions- List submissionsPOST /api/submissions- Create submissionGET /api/submissions/:id- Get submission detailsPUT /api/submissions/:id- Update submission
GET /api/judges- List judgesPOST /api/judges- Create judgeGET /api/judges/:id/submissions- Get assigned submissions
The application is currently deployed on Azure with the following configuration:
- Frontend: Azure Static Web Apps
- Backend: Azure App Service
- Database: Azure SQL Database
- Storage: Azure Blob Storage
# Backend
NODE_ENV=production
PORT=3001
DB_HOST=your-azure-sql-host
DB_USER=your-azure-sql-user
DB_PASS=your-azure-sql-password
DB_NAME=your-azure-sql-database
JWT_SECRET=your-production-jwt-secret
GOOGLE_CLIENT_ID=your-google-client-id
FRONTEND_URL=https://salmon-sea-0fd40ca00.1.azurestaticapps.net
# Frontend
VITE_API_URL=https://your-backend-url/api
VITE_SOCKET_URL=https://your-backend-url
VITE_GOOGLE_CLIENT_ID=your-google-client-id- JWT Authentication: Secure token-based authentication
- Role-based Access Control: Different permissions per user role
- Input Validation: Server-side validation with Joi
- CORS Protection: Configured CORS for security
- Rate Limiting: API rate limiting to prevent abuse
- XSS Protection: Built-in XSS protection
- CSRF Protection: CSRF token validation
- Mobile-first approach with responsive breakpoints
- Touch-friendly interfaces for mobile devices
- Mobile-first approach with responsive breakpoints
- Touch-friendly interfaces for mobile devices
- Responsive navigation with collapsible sidebar
- Optimized for all screen sizes from mobile to desktop
- Progressive Web App features for better mobile experience
- Live notifications for all users
- Real-time chat during hackathons
- Live updates on submission status
- Real-time analytics for organizers
- Live judging progress for judges
user:join- User joins a roomuser:leave- User leaves a roommessage:send- Send chat messagenotification:new- New notificationsubmission:update- Submission status update- Optimized for all screen sizes from mobile to desktop
- Progressive Web App features for better mobile experience
- Live notifications for all users
- Real-time chat during hackathons
- Live updates on submission status
- Real-time analytics for organizers
- Live judging progress for judges
user:join- User joins a roomuser:leave- User leaves a roommessage:send- Send chat messagenotification:new- New notificationsubmission:update- Submission status update
- GoogleAuthButton: Universal Google sign-in button
- LoginForm: Traditional email/password login
- RegisterForm: User registration form
- GoogleRegisterPage: Passwordless Google registration
- GoogleAuthButton: Universal Google sign-in button
- LoginForm: Traditional email/password login
- RegisterForm: User registration form
- GoogleRegisterPage: Passwordless Google registration
- OrganizerDashboard: Complete organizer management interface
- ParticipantDashboard: Participant activity and progress
- JudgeDashboard: Submission review and scoring interface
- EventCreationWizard: Step-by-step hackathon creation
- TeamManagement: Team creation and management
- SubmissionForm: Project submission interface
- ScoringForm: Judge scoring interface
- OrganizerDashboard: Complete organizer management interface
- ParticipantDashboard: Participant activity and progress
- JudgeDashboard: Submission review and scoring interface
- EventCreationWizard: Step-by-step hackathon creation
- TeamManagement: Team creation and management
- SubmissionForm: Project submission interface
- ScoringForm: Judge scoring interface
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes and commit:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
- Follow the existing code style and conventions
- Add tests for new features
- Update documentation for API changes
- Ensure responsive design for all new components
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes and commit:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
- Follow the existing code style and conventions
- Add tests for new features
- Update documentation for API changes
- Ensure responsive design for all new components
This project is licensed under the MIT License - see the LICENSE file for details.
For support and questions:
- Create an issue in the repository
- Contact the development team
- Check the documentation in the
/docsfolder - Review the API documentation for backend endpoints
- Advanced Analytics: More detailed analytics and reporting
- Payment Integration: Stripe integration for paid hackathons
- Video Conferencing: Built-in video calls for teams
- AI-powered Matching: AI to match participants with teams
- Mobile App: React Native mobile application
- Multi-language Support: Internationalization (i18n)
- Advanced Search: Elasticsearch integration
- Email Templates: Customizable email notifications
- API Documentation: Swagger/OpenAPI documentation
- Webhook Support: Third-party integrations
- Caching: Redis caching for better performance
- CDN Integration: Content delivery network
- Database Optimization: Query optimization and indexing
- Image Optimization: Automatic image compression
- Lazy Loading: Component and route lazy loading
Experience Haxplode in action: https://salmon-sea-0fd40ca00.1.azurestaticapps.net/
Built with ❤️ by the Haxplode Team