Frontend application for the University Admissions Management Platform.
Status: β
Production Ready
Version: 1.0.0
Last Updated: February 25, 2026
See project-docs/README.md for complete project documentation.
- START HERE: START_HERE.md
- Quick Reference: QUICK_REFERENCE.md
- Troubleshooting: TROUBLESHOOTING.md
- Project Status: PROJECT_STATUS.md
- TODO List: TODO.md
- project-docs/ - Core documentation (4 files)
- Overview, tech specs, requirements, user structure
- project-docs/overview.md - System architecture
- project-docs/tech-specs.md - Technologies & frameworks
β
User Authentication - Sign in/up with JWT tokens
β
Student Dashboard - Personal admission tracking, recommendations, deadlines
β
University Dashboard - Program management, verification queue
β
Admin Dashboard - System metrics, user management
β
Program Browsing - Search, filter, detailed views
β
Watchlist - Save favorite programs
β
Smart Recommendations - Collaborative filtering suggestions
β
Email Notifications - System + email alerts
β
Responsive Design - Mobile, tablet, desktop support
- Runtime: Node.js 18+
- Framework: React 18
- Language: TypeScript
- Build: Vite
- Styling: Tailwind CSS
- State Management: Zustand
- Routing: React Router v6
- HTTP Client: Axios
- Forms: React Hook Form (optional)
node --version # v18+ required
pnpm -v # v10+ or use npmcd admission-times-frontend
pnpm installcp .env.example .env.local
# Edit .env.local with your configurationRequired Variables:
VITE_API_BASE_URL=http://localhost:3000
VITE_SUPABASE_URL=https://...supabase.co
VITE_SUPABASE_ANON_KEY=...pnpm dev
# Visit http://localhost:5173pnpm build
pnpm previewsrc/
βββ components/ # Reusable UI components
β βββ admin/ # Admin-specific components
β βββ student/ # Student-specific components
β βββ university/ # University-specific components
β βββ common/ # Shared components
β βββ ai/ # AI-related components
βββ pages/ # Page components
β βββ student/ # Student pages (dashboard, etc.)
β βββ university/ # University pages
β βββ admin/ # Admin pages
β βββ ...
βββ hooks/ # Custom React hooks
βββ contexts/ # React Context providers
β βββ AuthContext.tsx # Authentication context
β βββ ToastContext.tsx # Toast notifications
β βββ AiContext.tsx # AI interactions
βββ services/ # API services
β βββ apiClient.ts # Axios instance
β βββ authService.ts # Auth API calls
β βββ dashboardService.ts
β βββ recommendationsService.ts
β βββ ...
βββ store/ # Zustand stores
β βββ authStore.ts # Authentication state
β βββ studentStore.ts # Student data state
β βββ universityStore.ts
βββ types/ # TypeScript interfaces
β βββ api.ts # API response types
βββ utils/ # Utility functions
β βββ transformers.ts # Data transformation
β βββ dateUtils.ts # Date helpers
β βββ ...
βββ layouts/ # Layout components
β βββ StudentLayout.tsx
β βββ UniversityLayout.tsx
β βββ AdminLayout.tsx
βββ constants/ # App constants
βββ data/ # Static data
βββ main.tsx # Application entry point
- Service:
services/authService.ts - Store:
store/authStore.ts - Context:
contexts/AuthContext.tsx
- Service:
services/dashboardService.ts - Hook:
hooks/useStudentDashboardData.ts
- Service:
services/recommendationsService.ts - Backend: Collaborative filtering API
- Context:
contexts/ToastContext.tsx - Service:
services/notificationsService.ts
LoadingSpinner- Loading statesErrorBoundary- Error handlingModal- Modal dialogsButton- Reusable buttonsCard- Content cards
StudentDashboard- Student homeUniversityDashboard- University homeAdminDashboard- Admin homeProgramDetail- Program detailsSignIn/SignUp- Auth pages
1. User visits app
β
2. Check localStorage for token
β
3. If token exists, validate and restore session
β
4. If no token, show Sign In page
β
5. Sign In β Supabase Auth β JWT token
β
6. Auto-sync user to backend database
β
7. Redirect to role-based dashboard
All API calls use a configured Axios instance with:
- Automatic JWT token injection
- Base URL configuration
- Error handling
- Request/response logging
Location: services/apiClient.ts
Each API domain has its own service:
// Example: recommendationsService.ts
export const recommendationsService = {
getRecommendations: async (limit, minScore) => { ... },
refreshRecommendations: async () => { ... },
getRecommendationCount: async () => { ... },
}pnpm build # Check for build errorspnpm type-check # Or: pnpm tsc --noEmitpnpm lintpnpm build
# Output: dist/pnpm preview
# Serves dist/ locally at http://localhost:5173# Connect GitHub repo to Vercel
# Set environment variables in Vercel dashboard
# Automatic deployment on push# API Configuration
VITE_API_BASE_URL=http://localhost:3000
# Supabase Configuration
VITE_SUPABASE_URL=https://...supabase.co
VITE_SUPABASE_ANON_KEY=...
# Optional
VITE_DEBUG=false # Enable debug logging
VITE_MOCK_AUTH=false # Mock auth for testing- Backend: ../admission-times-backend
- Mobile App: ../AdmissionTimes-MobileApp
- Full Documentation: project-docs/
| Command | Description |
|---|---|
pnpm dev |
Start development server |
pnpm build |
Build for production |
pnpm preview |
Preview production build |
pnpm lint |
Run ESLint |
pnpm type-check |
Type check with TypeScript |
pnpm format |
Format code |
- React: https://react.dev
- TypeScript: https://www.typescriptlang.org
- Tailwind CSS: https://tailwindcss.com
- Zustand: https://github.com/pmndrs/zustand
- Vite: https://vitejs.dev
For issues or questions:
- Check TROUBLESHOOTING.md
- Review project-docs/
- Check backend API docs:
http://localhost:3000/api-docs
Current Version: 1.0.0
Last Updated: February 25, 2026
Status: Active Development