Skip to content

Arison99/School-Management-System

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🏫 School Management System

GitHub stars GitHub forks GitHub commits GitHub last commit

Node.js React Express SQLite Sequelize Tailwind CSS

A modern, comprehensive web-based School Management System built with React.js and Node.js, designed to streamline educational institution operations with a focus on usability, scalability, and security.

🌟 Key Highlights

  • 🎯 User-Centric Design - Intuitive interface for administrators, teachers, and staff
  • πŸ”’ Secure Authentication - JWT-based authentication with role-based access control
  • πŸ“± Responsive Design - Works seamlessly across desktop, tablet, and mobile devices
  • ⚑ Real-time Operations - Fast and efficient data management
  • πŸ”§ Modular Architecture - Easily extensible and maintainable codebase

πŸ“‹ Table of Contents

✨ Features

🏒 Institution Management

  • School Profile Setup: Complete school information management with document uploads
  • Multi-institution Support: Designed to handle multiple educational institutions
  • Branding & Customization: Upload school logos and customize profile information
  • Regulatory Compliance: Track registration numbers, licenses, and TIN information

πŸ‘₯ User Management

  • Secure Authentication: JWT-based login system with encrypted passwords
  • Role-based Access: Different permission levels for administrators and staff
  • User Profiles: Comprehensive user information management
  • Session Management: Secure session handling with automatic logout

πŸŽ“ Academic Management

  • Class/Course Management: Create and manage classes across different academic years
  • Student Enrollment: Comprehensive student information system
  • Student Records: Detailed student profiles with photos and family information
  • Bulk Operations: Efficient handling of multiple student records

πŸ“Š Dashboard & Analytics

  • Real-time Statistics: Live dashboard with key metrics
  • Visual Analytics: Charts and graphs for data visualization
  • Report Generation: Comprehensive reporting system
  • Data Export: Export data in various formats

πŸ” Search & Filter

  • Advanced Search: Search students, classes, and records
  • Filter Options: Multiple filtering criteria for easy data retrieval
  • Quick Access: Fast navigation to frequently used features

πŸ›  Technology Stack

Frontend

  • React 18.x - Modern UI library with hooks and functional components
  • Vite - Fast build tool and development server
  • Tailwind CSS - Utility-first CSS framework
  • Axios - HTTP client for API communications
  • React Router - Client-side routing
  • Lucide React - Modern icon library

Backend

  • Node.js 20.x - JavaScript runtime environment
  • Express.js 4.x - Web application framework
  • Sequelize 6.x - Promise-based ORM for SQL databases
  • SQLite 3.x - Lightweight, file-based database
  • JWT - JSON Web Tokens for authentication
  • Bcrypt - Password hashing library
  • Multer - File upload middleware

Development Tools

  • ESLint - Code linting and style enforcement
  • Nodemon - Auto-restart development server
  • PostCSS - CSS post-processing
  • Git - Version control system

πŸš€ Quick Start

Prerequisites

Ensure you have the following installed:

Installation

  1. Clone the repository

    git clone https://github.com/Arison99/School-Management-System.git
    cd School-Management-System
  2. Install Backend Dependencies

    cd backend
    npm install
  3. Install Frontend Dependencies

    cd ../frontend
    npm install
  4. Environment Setup

    cd ../backend
    cp .env.example .env
    # Edit .env file with your configuration
  5. Start the Application

    Backend (Terminal 1):

    cd backend
    npm run dev

    Frontend (Terminal 2):

    cd frontend
    npm run dev
  6. Access the Application

Default Access

On first run, create an account through the signup process. The system will guide you through school profile setup.

πŸ“š Documentation

Core Documentation

Development Documentation

Additional Resources

πŸ— System Architecture

The School Management System follows a layered architecture pattern:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    Frontend (React)                         β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚  β”‚   Pages     β”‚ β”‚ Components  β”‚ β”‚      API Services       β”‚ β”‚
β”‚  β”‚             β”‚ β”‚             β”‚ β”‚                         β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                               β”‚
                          HTTP/HTTPS
                               β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                     Backend (Node.js)                      β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚  β”‚   Routes    β”‚ β”‚ Controllers β”‚ β”‚      Middleware         β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚  β”‚  Services   β”‚ β”‚ Repositoriesβ”‚ β”‚       Models            β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                               β”‚
                          Sequelize ORM
                               β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    Database (SQLite)                       β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚  β”‚    Users    β”‚ β”‚   Schools   β”‚ β”‚       Classes           β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                                           β”‚
β”‚  β”‚  Students   β”‚                                           β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                                           β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Key Components

  • Frontend Layer: React-based SPA with responsive design
  • API Layer: RESTful Express.js server with JWT authentication
  • Business Logic: Service layer handling core operations
  • Data Access: Repository pattern with Sequelize ORM
  • Database: SQLite for development, easily scalable to PostgreSQL/MySQL

πŸ“ Project Structure

School-Management-System/
β”œβ”€β”€ πŸ“ backend/                    # Backend server
β”‚   β”œβ”€β”€ πŸ“ src/
β”‚   β”‚   β”œβ”€β”€ πŸ“ config/            # Database and app configuration
β”‚   β”‚   β”œβ”€β”€ πŸ“ controllers/       # Request handlers
β”‚   β”‚   β”œβ”€β”€ πŸ“ middleware/        # Custom middleware
β”‚   β”‚   β”œβ”€β”€ πŸ“ models/           # Database models (Sequelize)
β”‚   β”‚   β”œβ”€β”€ πŸ“ repositories/     # Data access layer
β”‚   β”‚   β”œβ”€β”€ πŸ“ routes/           # API route definitions
β”‚   β”‚   └── πŸ“ services/         # Business logic layer
β”‚   β”œβ”€β”€ πŸ“ uploads/              # File upload storage
β”‚   β”œβ”€β”€ πŸ“„ server.js             # Server entry point
β”‚   β”œβ”€β”€ πŸ“„ package.json          # Backend dependencies
β”‚   └── πŸ“„ .env                  # Environment variables
β”œβ”€β”€ πŸ“ frontend/                  # Frontend application
β”‚   β”œβ”€β”€ πŸ“ src/
β”‚   β”‚   β”œβ”€β”€ πŸ“ api/              # API service clients
β”‚   β”‚   β”œβ”€β”€ πŸ“ assets/           # Static assets
β”‚   β”‚   β”œβ”€β”€ πŸ“ Pages/            # React page components
β”‚   β”‚   β”œβ”€β”€ πŸ“„ App.jsx           # Main App component
β”‚   β”‚   └── πŸ“„ main.jsx          # Application entry point
β”‚   β”œβ”€β”€ πŸ“„ index.html            # HTML template
β”‚   β”œβ”€β”€ πŸ“„ package.json          # Frontend dependencies
β”‚   └── πŸ“„ vite.config.js        # Vite configuration
β”œβ”€β”€ πŸ“ docs/                     # Documentation files
β”œβ”€β”€ πŸ“„ README.md                 # This file
β”œβ”€β”€ πŸ“„ CONTRIBUTING.md           # Contribution guidelines
β”œβ”€β”€ πŸ“„ LICENSE                   # License information
└── πŸ“„ CHANGELOG.md              # Version history

πŸ”— API Reference

Quick API Overview

Base URL: http://localhost:6001/api

Authentication Endpoints

  • POST /signup - User registration
  • POST /login - User authentication

School Management

  • GET /schools/my-school - Get current user's school
  • POST /schools - Create school profile
  • PUT /schools - Update school information
  • GET /schools/stats - Get school statistics

Class Management

  • GET /classes - Get all classes
  • POST /classes - Create new class
  • PUT /classes/:id - Update class
  • DELETE /classes/:id - Delete class

Student Management

  • POST /classes/:id/students - Add student to class
  • PUT /classes/:classId/students/:studentId - Update student
  • DELETE /classes/:classId/students/:studentId - Remove student
  • GET /students/search - Search students

For detailed API documentation with examples, see API Documentation.

🀝 Contributing

We welcome contributions from the community! Please read our Contributing Guidelines for details on:

  • πŸ“ How to submit issues
  • πŸ”§ Setting up development environment
  • πŸ“‹ Code style and standards
  • πŸ§ͺ Testing requirements
  • πŸ“€ Pull request process

Quick Contribution Steps

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ”’ Security

Security is a top priority. This system implements:

  • JWT Authentication - Secure token-based authentication
  • Password Encryption - Bcrypt hashing for password security
  • Input Validation - Comprehensive data validation
  • SQL Injection Prevention - Parameterized queries via Sequelize
  • File Upload Security - Restricted file types and size limits

For detailed security information, see Security Guide.

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ’¬ Support

Getting Help

Community

Project Maintainers


⭐ Star this repository if you find it helpful!

🏠 Website | πŸ“– Documentation | πŸ› Report Bug | πŸ’‘ Request Feature

Made with ❀️ by the Arison99

GitAds Sponsored

Sponsored by GitAds

About

School Mgt System for schools

Resources

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages