A comprehensive full-stack web application for managing school operations including students, staff, classes, notices, and leave management. This project serves as a skill assessment platform for Frontend, Backend, and Blockchain developers.
skill-test/
βββ frontend/ # React + TypeScript + Material-UI
βββ backend/ # Node.js + Express + PostgreSQL
βββ go-service/ # Golang microservice for PDF reports
βββ seed_db/ # Database schema and seed data
βββ README.md # This file
- Node.js (v16 or higher)
- PostgreSQL (v12 or higher)
- npm or yarn
cd backend
npm install
cp .env.example .env # Configure your environment variables
npm startcd frontend
npm install
npm run dev- Frontend: http://localhost:5173
- Backend API: http://localhost:5007
- Demo Credentials:
- Email:
admin@school-admin.com - Password:
3OU4zn3q6Zh9
- Email:
# Create PostgreSQL database
createdb school_mgmt
# Run database migrations
psql -d school_mgmt -f seed_db/tables.sql
psql -d school_mgmt -f seed_db/seed-db.sqlFix "Add New Notice" Page
- Location:
/app/notices/add - Issue: When clicking the 'Save' button, the 'description' field doesn't get saved
- Skills Tested: React, Form handling, State management, API integration
- Expected Fix: Ensure description field is properly bound and submitted
Complete CRUD Operations in Student Management
- Location:
/src/modules/students/students-controller.js - Issue: Implement missing CRUD operations for student management
- Skills Tested: Node.js, Express, PostgreSQL, API design
- Expected Implementation: Full Create, Read, Update, Delete operations
- Framework: React 18 + TypeScript
- UI Library: Material-UI (MUI) v6
- State Management: Redux Toolkit + RTK Query
- Form Handling: React Hook Form + Zod validation
- Build Tool: Vite
- Code Quality: ESLint, Prettier, Husky
- Runtime: Node.js
- Framework: Express.js
- Database: PostgreSQL
- Authentication: JWT + CSRF protection
- Password Hashing: Argon2
- Email Service: Resend API
- Validation: Zod
- Primary DB: PostgreSQL
- Schema: Comprehensive school management schema
- Features: Role-based access control, Leave management, Notice system
- Dashboard: User statistics, notices, birthday celebrations, leave requests
- User Management: Multi-role system (Admin, Student, Teacher, Custom roles)
- Academic Management: Classes, sections, students, class teachers
- Leave Management: Policy definition, request submission, approval workflow
- Notice System: Create, approve, and distribute notices
- Staff Management: Employee profiles, departments, role assignments
- Access Control: Granular permissions system
- JWT-based authentication with refresh tokens
- CSRF protection
- Role-based access control (RBAC)
- Password reset and email verification
- Secure cookie handling
- File Naming: kebab-case for consistency across OS
- Import Style: Absolute imports for cleaner code
- Code Formatting: Prettier with consistent configuration
- Git Hooks: Husky for pre-commit quality checks
frontend/src/
βββ api/ # API configuration and base setup
βββ assets/ # Static assets (images, styles)
βββ components/ # Shared/reusable components
βββ domains/ # Feature-based modules
β βββ auth/ # Authentication module
β βββ students/ # Student management
β βββ notices/ # Notice system
β βββ ...
βββ hooks/ # Custom React hooks
βββ routes/ # Application routing
βββ store/ # Redux store configuration
βββ theme/ # MUI theme customization
βββ utils/ # Utility functions
backend/src/
βββ config/ # Database and app configuration
βββ middlewares/ # Express middlewares
βββ modules/ # Feature-based API modules
β βββ auth/ # Authentication endpoints
β βββ students/ # Student CRUD operations
β βββ notices/ # Notice management
β βββ ...
βββ routes/ # API route definitions
βββ shared/ # Shared utilities and repositories
βββ templates/ # Email templates
βββ utils/ # Helper functions
- Navigate to the notices section
- Try to create a new notice with description
- Verify the description is saved correctly
- Test form validation and error handling
- Test all student CRUD endpoints using Postman/curl
- Verify proper error handling and validation
- Check database constraints and relationships
- Test authentication and authorization
POST /api/v1/auth/login- User loginPOST /api/v1/auth/logout- User logoutGET /api/v1/auth/refresh- Refresh access token
GET /api/v1/students- List all studentsPOST /api/v1/students- Create new studentPUT /api/v1/students/:id- Update studentDELETE /api/v1/students/:id- Delete student
GET /api/v1/notices- List noticesPOST /api/v1/notices- Create noticePUT /api/v1/notices/:id- Update noticeDELETE /api/v1/notices/:id- Delete notice
GET /api/v1/students/:id/report- Generate and download a PDF report for a specific student.
- Complete the assigned task
- Push your results to a public repository
- Share the repository link along with a short Loom video demonstrating your results.
This project is licensed under the MIT License - see the LICENSE file for details.
For questions and support:
- Create an issue in the repository
- Check existing documentation in
/frontend/README.mdand/backend/README.md - Review the database schema in
/seed_db/tables.sql
Happy Coding! π