- Complete backend API testing with Postman
- Frontend user interface walkthrough
- Database operations and data flow
- Error handling and validation
- Authentication and authorization
๐๏ธ System Architecturestack web application for managing students and courses with role-based authentication, built with modern technologies and best practices.
This system provides a comprehensive solution for educational institutions to manage student enrollment, course catalog, and administrative tasks. It features a robust backend API with MySQL database and a responsive React frontend with role-based access control.
- Role-Based Authentication (Admin/Student)
- Student Management (CRUD operations)
- Course Management (CRUD operations)
- Enrollment System (Course assignments)
- Dashboard Analytics (Statistics and insights)
- Responsive Design (Mobile-first approach)
- RESTful API (Clean, documented endpoints)
Watch the complete system demonstration: A comprehensive walkthrough showing all features, API testing, and user interactions.
๐ฅ Direct Video Link (Click to watch the full demonstration)
- ๐ Authentication System - Admin & Student login flows
- ๐ฅ Student Management - Create, read, update, delete operations
- ๐ Course Management - Full CRUD functionality
- ๐ง API Testing - Complete Postman API demonstrations
- ๐ Dashboard Features - Analytics and statistics
- ๐ฑ Responsive Design - Mobile and desktop views
- ๐ก๏ธ Security Features - Role-based access control
- Complete backend API testing with Postman
- Frontend user interface walkthrough
- Database operations and data flow
- Error handling and validation
- Authentication and authorization
๐ Note: Replace the video link above with your actual demonstration video URL (YouTube, Vimeo, or direct video file)
โโโโโโโโโโโโโโโโโโโ HTTP/HTTPS โโโโโโโโโโโโโโโโโโโ
โ React Frontend โ โโโโโโโโโโโโโโบ โ Express API โ
โ (Port 5173) โ โ (Port 5000) โ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ
โ MySQL
โผ
โโโโโโโโโโโโโโโโโโโ
โ MySQL DB โ
โ (Port 3306) โ
โโโโโโโโโโโโโโโโโโโ
- Runtime: Node.js
- Framework: Express.js
- Database: MySQL
- Authentication: JWT (JSON Web Tokens)
- Password Hashing: bcryptjs
- Database Driver: mysql2
- Framework: React 19
- Build Tool: Vite
- Styling: TailwindCSS
- Routing: React Router
- HTTP Client: Axios
- State Management: Context API
Student & Course Management/
โโโ backend/
โ โโโ src/
โ โ โโโ controllers/ # Business logic
โ โ โโโ routes/ # API endpoints
โ โ โโโ middleware/ # Auth & validation
โ โ โโโ models/ # Database queries
โ โโโ server.js # Server entry point
โ โโโ schema.sql # Database schema
โ โโโ package.json
โ โโโ README.md
โโโ frontend/
โ โโโ src/
โ โ โโโ components/ # Reusable components
โ โ โโโ pages/ # Page components
โ โ โโโ context/ # State management
โ โ โโโ services/ # API services
โ โโโ package.json
โ โโโ README.md
โโโ README.md # This file
- Node.js (v16+)
- MySQL (v8.0+)
- Git
git clone <repository-url>
cd "Student & Course Management"# Start MySQL server (XAMPP or standalone)
# Create database
mysql -u root -p < backend/schema.sqlcd backend
npm install
cp .env.example .env
# Edit .env with your database credentials
npm run devcd ../frontend
npm install
npm run dev- Frontend: http://localhost:5173
- Backend API: http://localhost:5000
- API Docs: http://localhost:5000 (endpoints list)
- Email: admin@school.com
- Password: admin123
- Permissions: Full system access
- Email: john.doe@student.com | Password: student123
- Email: jane.smith@student.com | Password: student123
- Permissions: View-only access to courses and personal profile
POST /api/auth/login # User login
POST /api/auth/register # Create user (Admin only)
GET /api/auth/profile # Get user profile
GET /api/students # Get all students (Admin)
GET /api/students/:id # Get student by ID
POST /api/students # Create student (Admin)
PUT /api/students/:id # Update student (Admin)
DELETE /api/students/:id # Delete student (Admin)
GET /api/students/course/:courseId # Get students by course
GET /api/courses # Get all courses
GET /api/courses/:id # Get course by ID
POST /api/courses # Create course (Admin)
PUT /api/courses/:id # Update course (Admin)
DELETE /api/courses/:id # Delete course (Admin)
GET /api/courses/:id/students # Get course students
GET /api/courses/admin/stats # Get statistics (Admin)
- id (Primary Key)
- email (Unique)
- password (Hashed)
- role (admin/student)
- created_at, updated_at- id (Primary Key)
- user_id (Foreign Key โ users.id)
- first_name, last_name
- email (Unique)
- phone, date_of_birth
- course_id (Foreign Key โ courses.id)
- enrollment_date, status
- created_at, updated_at- id (Primary Key)
- name (Unique)
- description, duration
- instructor
- created_at, updated_at- Clean, modern design
- Demo credentials display
- Responsive layout
- Statistics overview
- Quick action buttons
- Recent students table
- Data table with search
- Modal forms for CRUD
- Course assignment
- Card-based layout
- Enrollment counters
- Admin controls
cd backend
npm run dev # Start with nodemon
npm start # Production start
npm test # Run tests (if implemented)cd frontend
npm run dev # Development server
npm run build # Production build
npm run preview # Preview build
npm run lint # Code linting- Email notifications
- File upload (student photos)
- Grade management
- Attendance tracking
- Reports generation
- Real-time notifications