A comprehensive, AI-powered hackathon management platform with QR-based authentication, real-time team management, AI resume analysis, and automated evaluation systems.
- Features
- Tech Stack
- Architecture
- Getting Started
- Project Structure
- Authentication System
- AI Features
- API Documentation
- Environment Variables
- Deployment
- Contributing
- License
-
Dual Authentication System
- Manual code-based login (Admin/Judge/Participant)
- QR code-based instant authentication
- JWT token-based session management
- 7-day QR token expiry with reusable codes
-
Role-Based Access Control
- Admin: Full hackathon management, QR generation, team oversight
- Judge: Team evaluation, scoring, shortlisting
- Participant: Team registration, submission, profile management
-
AI-Powered Features
- Resume parsing and analysis
- Automated skill extraction
- Team compatibility scoring
- GitHub repository analysis
- Presentation deck evaluation
-
QR Code Management
- Bulk QR code generation
- ZIP download for all roles
- Instant QR verification
- Token hash validation
-
Team Management
- Team registration and formation
- Member management
- Submission tracking
- Real-time leaderboard
-
Hackathon Phases
- Registration
- Team Formation
- Development
- Submission
- Evaluation
- Results
- Modern, responsive design with Tailwind CSS
- Dark mode support
- Real-time toast notifications
- Smooth animations with Framer Motion
- Mobile-friendly interface
- Intuitive navigation
- Framework: React 19.2
- Build Tool: Vite 7.3
- Routing: React Router DOM 7.13
- Styling: Tailwind CSS 4.2 + DaisyUI 5.5
- Animations: Framer Motion 12.34
- QR Handling: html5-qrcode 2.3
- Icons: Lucide React 0.574
- Notifications: React Hot Toast 2.6
- Runtime: Node.js 20+
- Framework: Express 5.2
- Database: MongoDB (Mongoose 9.2)
- Authentication: JWT (jsonwebtoken 9.0)
- File Upload: Multer 2.0
- QR Generation: qrcode 1.5
- File Parsing: pdf-parse, officeparser
- Archive: archiver 7.0
- Hugging Face Inference API
- Custom resume parsing algorithms
- GitHub API integration
- Automated scoring systems
aerohacks/
βββ frontend/ # React frontend application
β βββ src/
β β βββ components/ # Reusable UI components
β β β βββ features/ # Feature-specific components
β β β βββ layout/ # Layout components
β β β βββ participant/ # Participant dashboard components
β β β βββ ui/ # Base UI components
β β βββ context/ # React Context providers
β β β βββ AuthContext.jsx
β β β βββ HackathonContext.jsx
β β β βββ TeamContext.jsx
β β β βββ ThemeContext.jsx
β β βββ pages/ # Page components
β β β βββ Landing.jsx
β β β βββ RoleAuth.jsx
β β β βββ AdminDashboard.jsx
β β β βββ JudgeDashboard.jsx
β β β βββ ParticipantDashboard.jsx
β β β βββ ...
β β βββ utils/ # Utility functions
β β βββ App.jsx # Main app component
β βββ package.json
β
βββ backend/ # Express backend API
β βββ config/ # Configuration files
β β βββ db.js # MongoDB connection
β βββ models/ # Mongoose models
β β βββ User.js
β β βββ Hackathon.js
β β βββ Team.js
β β βββ Analysis.js
β βββ src/
β β βββ controllers/ # Route controllers
β β β βββ qrController.js
β β β βββ ai.controller.js
β β β βββ participant.controller.js
β β β βββ team.controller.js
β β βββ routes/ # API routes
β β β βββ qr.routes.js
β β β βββ ai.routes.js
β β β βββ participant.routes.js
β β β βββ team.routes.js
β β βββ services/ # Business logic
β β β βββ qrService.js
β β βββ utils/ # Utility functions
β β βββ tokenUtils.js
β βββ scripts/ # Setup and utility scripts
β β βββ generateTestQRs.js
β β βββ setupTestDatabase.js
β βββ server.js # Express server entry point
β βββ package.json
β
βββ docs/ # Documentation
βββ QR_AUTH_IMPLEMENTATION.md
βββ DATABASE_SETUP_GUIDE.md
βββ improvements.md
- Node.js 20+ and npm
- MongoDB Atlas account (or local MongoDB)
- Git
-
Clone the repository
git clone https://github.com/Pratham21223/Decryters.git cd aerohacks -
Setup Backend
cd backend npm install -
Configure Backend Environment
Create
backend/.env:MONGO_URI=mongodb+srv://username:password@cluster.mongodb.net/aerohacks JWT_SECRET=your-super-secret-jwt-key-min-64-characters-long QR_TOKEN_EXPIRY=7d PORT=5000 FRONTEND_URL=http://localhost:5173
-
Setup Frontend
cd ../frontend npm install -
Configure Frontend Environment
Create
frontend/.env:VITE_BACKEND_URL=http://localhost:5000
-
Setup Test Database
cd ../backend node scripts/setupTestDatabase.js -
Start Development Servers
Terminal 1 (Backend):
cd backend npm run devTerminal 2 (Frontend):
cd frontend npm run dev -
Access the Application
- Frontend: http://localhost:5173
- Backend API: http://localhost:5000
- CodeGenerator: Generate and display hackathon codes
- QRLogin: QR code upload and scanning
- QRManagement: Admin QR code generation and management
- TeamRegistrationForm: Team creation and member management
- EntryLogTable: Track participant entries
- HackathonSetupForm: Create new hackathons
- Layout: Main application layout wrapper
- Navbar: Top navigation bar
- Sidebar: Side navigation menu
- ProtectedRoute: Route authentication wrapper
- Button: Reusable button component
- CodeInput: Code entry input field
- QRDisplay: Display QR codes
- StatsCard: Dashboard statistics cards
- StatusBadge: Status indicators
- PhaseIndicator: Hackathon phase display
- User: User accounts with roles and QR tokens
- Hackathon: Hackathon events and configurations
- Team: Team information and members
- Analysis: AI analysis results
- qrController: QR code generation, verification, download
- ai.controller: AI-powered resume and GitHub analysis
- participant.controller: Participant operations
- team.controller: Team management
- qrService: QR code generation and image creation
- ai.service: AI analysis integration
- User enters hackathon code (e.g.,
AERO-2026-HC1234) - Selects role (Admin/Judge/Participant)
- Enters role-specific code
- System validates and creates session
-
Generation:
- Admin generates QR codes for all roles
- JWT token embedded in QR code
- Token hash stored in database
- QR codes downloadable as ZIP
-
Verification:
- User uploads QR code image
- Frontend scans and extracts JWT token
- Backend verifies JWT signature and token hash
- Session created on successful verification
-
Security:
- SHA-256 token hashing
- 7-day token expiry
- Reusable QR codes (not one-time)
- Token invalidation support
User β Upload QR β Scan Token β Verify JWT β Check Hash β Create Session β Dashboard
- Parsing: Extract text from PDF/DOCX resumes
- Skill Extraction: Identify technical and soft skills
- Experience Analysis: Parse work experience and education
- Scoring: Overall resume quality score (0-100)
- Recommendations: Improvement suggestions
- Repository Metrics: Stars, forks, commits, contributors
- Code Quality: Language distribution, file structure
- Activity Analysis: Commit frequency, recent activity
- Collaboration: Team contribution patterns
- Skill Matching: Complementary skill sets
- Experience Balance: Mix of junior/senior developers
- Domain Expertise: Relevant project experience
- Diversity Score: Varied backgrounds and skills
http://localhost:5000/api/v1
POST /qr/verify
Content-Type: application/json
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
Response:
{
"success": true,
"user": {
"userId": "...",
"name": "John Doe",
"email": "john@example.com",
"role": "participant",
"roleCode": "P-A3F9K2H8"
},
"hackathon": {
"hackathonCode": "AERO-2026-HC1234",
"name": "AeroHacks 2026"
},
"sessionToken": "..."
}POST /qr/generate
Content-Type: application/json
{
"hackathonId": "AERO-2026-HC1234",
"role": "participant",
"userId": "user_id_here"
}
Response:
{
"success": true,
"qrCode": "data:image/png;base64,..."
}GET /qr/download/:hackathonId?role=participant
Response: ZIP file downloadPOST /ai/analyze-resume
Content-Type: multipart/form-data
file: resume.pdf
Response:
{
"success": true,
"analysis": {
"parsedInfo": {
"name": "John Doe",
"email": "john@example.com",
"skills": ["JavaScript", "React", "Node.js"],
"experience": [...]
},
"scores": {
"overall": 85,
"technical": 90,
"experience": 80
},
"recommendations": [...]
}
}POST /ai/analyze-github
Content-Type: application/json
{
"githubUrl": "https://github.com/username/repo"
}
Response:
{
"success": true,
"analysis": {
"repository": {
"name": "repo-name",
"stars": 100,
"forks": 20,
"commits": 500
},
"metrics": {
"codeQuality": 85,
"activity": 90,
"collaboration": 75
}
}
}POST /teams/register
Content-Type: application/json
{
"teamName": "Team Awesome",
"hackathonCode": "AERO-2026-HC1234",
"members": [
{
"name": "John Doe",
"email": "john@example.com",
"role": "Team Lead"
}
]
}GET /teams/:teamId
Response:
{
"success": true,
"team": {
"teamName": "Team Awesome",
"members": [...],
"submissions": [...],
"score": 85
}
}| Variable | Description | Example |
|---|---|---|
MONGO_URI |
MongoDB connection string | mongodb+srv://... |
JWT_SECRET |
Secret key for JWT signing (min 64 chars) | your-secret-key... |
QR_TOKEN_EXPIRY |
QR token expiration time | 7d |
PORT |
Backend server port | 5000 |
FRONTEND_URL |
Frontend URL for CORS | http://localhost:5173 |
NODE_ENV |
Environment mode | development |
| Variable | Description | Example |
|---|---|---|
VITE_BACKEND_URL |
Backend API base URL | http://localhost:5000 |
After running setupTestDatabase.js, you'll have:
Hackathon Code: AERO-2026-HC1234
Role Codes:
- Admin:
A-12345678 - Judge:
J-87654321 - Participant:
P-A3F9K2H8
QR Codes: Located in backend/test-qr-codes/
-
Manual Login:
- Go to http://localhost:5173
- Enter hackathon code
- Select role
- Enter role code
- Verify dashboard access
-
QR Login:
- Click "Upload QR" tab
- Upload QR from
test-qr-codes/ - Verify instant login
-
Admin Features:
- Generate new QR codes
- Download QR ZIP
- Manage hackathon phases
- View all teams
-
Participant Features:
- Register team
- Upload resume
- Submit GitHub repo
- View AI feedback
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a 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
- Follow ESLint configuration
- Use meaningful variable names
- Add comments for complex logic
- Write clean, maintainable code
- Test before committing
This project is licensed under the MIT License - see the LICENSE file for details.
Decrypters
- Pratham Kataria - @Pratham21223
- React and Vite teams for amazing tools
- MongoDB for robust database solution
- Tailwind CSS for beautiful styling
- Hugging Face for AI capabilities
- All open-source contributors
For support, email prathamkataria@example.com or open an issue on GitHub.
- Real-time notifications with WebSockets
- Email integration for QR code distribution
- Advanced analytics dashboard
- Mobile app (React Native)
- Multi-hackathon support
- Sponsor management
- Prize distribution system
- Live streaming integration
Built with β€οΈ by Team Decrypters
Star β this repository if you find it helpful!



