React + TypeScript frontend for HackDay Hackathon Management Platform.
- React 18
- TypeScript
- React Router v6
- Axios for API calls
- Tailwind CSS for styling
npm installCopy .env.example to .env:
cp .env.example .envUpdate the API URL:
REACT_APP_API_URL=http://localhost:5000/api
For production, set this to your deployed backend URL.
npm startThe app will open at http://localhost:3000
src/
├── components/ # Reusable components
│ ├── Layout.tsx
│ └── ProtectedRoute.tsx
├── context/ # React Context (Auth)
│ └── AuthContext.tsx
├── pages/ # Page components
│ ├── Login.tsx
│ ├── admin/
│ │ ├── Dashboard.tsx
│ │ └── Users.tsx
│ ├── team/
│ │ ├── Dashboard.tsx
│ │ └── Submit.tsx
│ └── judge/
│ └── Dashboard.tsx
├── services/ # API service layer
│ └── api.ts
├── types/ # TypeScript types
│ └── index.ts
├── App.tsx # Main app component with routing
├── index.tsx # React entry point
└── index.css # Global styles (Tailwind)
/login- Login page
/admin/dashboard- Admin dashboard with system controls/admin/users- User management (create teams & judges)/admin/problems- Problem statements CRUD/admin/teams- View all teams and progress/admin/leaderboard- Master leaderboard
/team/dashboard- Team dashboard with track selection/team/project- View project details/team/submit- Submit project/team/leaderboard- Public leaderboard (if visible)
/judge/dashboard- Judge dashboard with team queue/judge/teams- View teams and projects/judge/my-scores- View submitted scores
- JWT-based auth with HTTP-only cookies and localStorage fallback
- Role-based access control (RBAC)
- Auto-redirect based on user role
- Create team and judge accounts
- Manage problem statements for Agentic AI track
- Toggle submissions open/closed
- Toggle leaderboard visibility
- View all teams and their progress
- Master leaderboard with full scores
- Track selection onboarding (Agentic AI vs Open Innovation)
- Custom tech stack and tags for Open Innovation
- Project submission with GitHub, demo, PPT, and video links
- View own rank and score breakdown
- Access to public leaderboard (when enabled)
- View all submitted teams
- Access detailed project pages
- Score teams based on criteria
- Update scores with feedback
- View personal scoring history
The app uses a "hackathon-dark" aesthetic with:
- Dark background (#0f172a)
- Primary color: Cyan/Blue (#0ea5e9)
- Card-based UI with subtle borders
- Smooth transitions and hover effects
- Responsive design for mobile and desktop
- Push your code to GitHub
- Import project in Vercel
- Set environment variable:
REACT_APP_API_URL - Deploy!
npm install -g vercel
vercel login
vercelSet in Vercel dashboard or .env.production:
REACT_APP_API_URL=https://your-backend.railway.app/api
npm run buildCreates optimized production build in build/ directory.
Ensure backend FRONTEND_URL matches your deployed frontend URL.
For Vercel, the vercel.json config handles SPA routing.
For other hosts, configure redirects to /index.html.
Check that REACT_APP_API_URL is correct and backend is running.