This is the frontend for the SkillMatch internship platform demo. It is a React + Vite single-page application that includes:
- Public marketing pages
- A shared authentication hub
- Student, company, university, and admin dashboards
- Mock local session handling with route protection
- Static university/company demo content and images
ReactVitereact-router-domTailwind CSSutility classes in JSX
Install dependencies and start the development server:
npm install
npm run devOther useful commands:
npm run build
npm run previewMain frontend source lives in src/.
Important folders:
src/pages/public- landing page, auth hub, legal pages, support pagessrc/pages/student- student dashboard and student workflow pagessrc/pages/company- employer dashboard and internship management pagessrc/pages/university- university portal pagessrc/pages/admin- super admin and system management pagessrc/components/layout- shared dashboard shell, nav bars, sidebar, footersrc/components/shared- reusable cards, notices, FAB, showcase sectionssrc/context- app-wide context such as authenticationsrc/data- static landing/demo datapublic/images- static university and related image assets
Main route setup is in src/App.jsx.
The app is organized into:
- Public routes:
//auth/opportunities/support/privacy/terms
- Protected student routes under
/student/* - Protected company routes under
/company/* - Protected university routes under
/university/* - Protected admin routes under
/admin/*
All protected areas use the shared DashboardLayout.
Authentication is currently frontend-only and mock-based.
File:
src/context/AuthContext.jsx
What it does:
- Stores
userandrole - Persists the active session in
localStorage - Exposes
login()andlogout() - Restores session after page refresh
This means:
- No real backend login is required
- Choosing a role in the auth hub can open the matching dashboard
- Protected routes redirect if the current role does not match the dashboard area
Core layout files:
src/components/layout/DashboardLayout.jsxsrc/components/layout/Sidebar.jsxsrc/components/layout/TopNav.jsxsrc/components/layout/PublicNav.jsxsrc/components/layout/Footer.jsx
Behavior:
- Public pages use
PublicNavandFooter - Role dashboards use
Sidebar+TopNav - The dashboard shell is responsive and uses a drawer/sidebar pattern on smaller screens
The main account entry and registration flow is in:
src/pages/public/AuthHub.jsx
Supported flows include:
- Student login
- Student registration
- Company registration request
- University / college registration request
These are currently frontend demo flows and show local success / pending states rather than calling a backend API.
Demo data is currently stored directly in source files.
Examples:
src/data/landingData.js- landing page opportunities, companies, universities- individual page files - dashboard stats, tables, and activity lists
Because this is a demo frontend:
- many buttons update local UI state
- some actions show notices instead of performing server operations
- exports and filters are often simulated in-browser
University cards on the landing page read their image paths from:
src/data/landingData.js
Images should be placed in:
public/images
When using Vite public assets, reference them like:
/images/example.pngDo not prefix them with public/ in code.
The frontend has been updated to support phones and tablets better.
Key responsive improvements include:
- mobile dashboard drawer navigation
- adaptive top navigation
- stacked KPI cards on smaller screens
- mobile-friendly card views for table-heavy pages
- reduced hero and section spacing on small screens
Public:
src/pages/public/LandingPage.jsxsrc/pages/public/AuthHub.jsxsrc/pages/public/OpportunitiesPage.jsxsrc/pages/public/SupportPage.jsx
Student:
src/pages/student/StudentDashboard.jsxsrc/pages/student/SearchInternships.jsxsrc/pages/student/CVBuilder.jsxsrc/pages/student/MyRequests.jsxsrc/pages/student/WeeklyReports.jsxsrc/pages/student/FinalEvaluation.jsx
Company:
src/pages/company/CompanyDashboard.jsxsrc/pages/company/CompanyPostInternshipsPage.jsxsrc/pages/company/CompanyApplicationsPage.jsxsrc/pages/company/CompanySupervisorsPage.jsx
University:
src/pages/university/UniversityDashboard.jsxsrc/pages/university/AssignAdvisorsPage.jsxsrc/pages/university/InternshipMonitoringPage.jsxsrc/pages/university/UniversityStatisticsPage.jsx
Admin:
src/pages/admin/SuperAdminDashboard.jsxsrc/pages/admin/AdminManageUniversitiesPage.jsxsrc/pages/admin/AdminManageCompaniesPage.jsxsrc/pages/admin/AdminUserManagementPage.jsxsrc/pages/admin/AdminSupportPage.jsx
This frontend should be understood as a polished demo UI, not yet a fully backend-connected production application.
That means:
- authentication is mocked
- registration is simulated
- many datasets are static
- some actions are local-only
It is a good base for:
- UI refinement
- backend API integration
- real authentication
- production data wiring
If this frontend will be extended, the next logical steps are:
- Connect auth and registration to a real backend
- Move static dashboard/table data into API calls
- Add form validation and error states for all major flows
- Add route-level and component-level tests
- Split large bundles if build size becomes a concern