A modern, responsive student management system built with React, TypeScript, and Tailwind CSS. This application provides a comprehensive platform for students to manage their academic journey with features like authentication, user directory, and dashboard analytics.
- Login/Signup Pages: Secure authentication with form validation
- Protected Routes: Private route protection with automatic redirects
- Session Management: Persistent login state with localStorage
- Demo Access: Use any email/password combination for testing
- Sticky Navbar: Always accessible navigation that stays at the top
- Responsive Design: Mobile-friendly hamburger menu
- Active States: Visual indicators for current page
- Dark Mode Toggle: Switch between light and dark themes
- User Profile: Display logged-in user information
- Academic Overview: GPA, attendance, subjects, and assignments tracking
- Summary Cards: Visual representation of key metrics
- Upcoming Events: Calendar integration with important dates
- Responsive Grid: Adapts to different screen sizes
- API Integration: Fetches real user data from JSONPlaceholder API
- Search Functionality: Filter users by name, email, or company
- Contact Information: Complete user profiles with contact details
- Loading States: Smooth loading experience with skeletons
- Error Handling: Graceful error handling with retry options
- Modern UI: Clean, professional interface design
- Dark Mode: Complete dark theme support
- Animations: Smooth transitions and hover effects
- Responsive: Mobile-first design approach
- Accessibility: WCAG compliant with proper contrast ratios
- Frontend Framework: React 18 with TypeScript
- Styling: Tailwind CSS
- Routing: React Router DOM v6
- Icons: Lucide React
- Build Tool: Vite
- Deployment: Netlify
- Code Quality: ESLint + TypeScript ESLint
-
Clone the repository
git clone https://github.com/yourusername/student-portal.git cd student-portal
-
Install dependencies
npm install
-
Start the development server
npm run dev
-
Open your browser Navigate to
http://localhost:5173
src/
├── components/ # Reusable UI components
│ ├── Layout.tsx # Main layout wrapper
│ ├── Navbar.tsx # Navigation component
│ └── PrivateRoute.tsx # Route protection
├── contexts/ # React contexts
│ └── AuthContext.tsx # Authentication state management
├── hooks/ # Custom React hooks
│ └── useDarkMode.tsx # Dark mode functionality
├── pages/ # Page components
│ ├── Dashboard.tsx # Dashboard with analytics
│ ├── Home.tsx # Landing page
│ ├── Login.tsx # Authentication
│ ├── Signup.tsx # User registration
│ └── Users.tsx # User directory
├── App.tsx # Main app component
├── main.tsx # Application entry point
└── index.css # Global styles
- Dummy authentication system for demonstration
- Form validation with error handling
- Automatic redirects based on auth state
- Persistent sessions using localStorage
- RESTful API calls to JSONPlaceholder
- Loading states and error handling
- Search and filter functionality
- Responsive data display
- Mobile-first approach
- Flexible grid layouts
- Adaptive navigation
- Touch-friendly interactions
The application is automatically deployed to Netlify on every push to the main branch.
-
Build the project
npm run build
-
Deploy to Netlify
# Install Netlify CLI npm install -g netlify-cli # Deploy netlify deploy --prod --dir=dist
npm run dev
- Start development servernpm run build
- Build for productionnpm run preview
- Preview production buildnpm run lint
- Run ESLint
The application uses a blue-indigo gradient theme. To customize:
- Update the gradient classes in
tailwind.config.js
- Modify the color variables in components
- Adjust the dark mode variants
- Create new components in the
components/
directory - Add new pages in the
pages/
directory - Update routing in
App.tsx
- Add navigation links in
Navbar.tsx
No environment variables are required for basic functionality. The app uses:
- JSONPlaceholder API (public, no auth required)
- localStorage for session management
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
- JSONPlaceholder for the mock API
- Lucide for the beautiful icons
- Tailwind CSS for the utility-first CSS framework
- Unsplash for the stock photos
⭐ Star this repository if you found it helpful!