Subject: SWST 31032 - Applied Information Systems (2nd Year)
School Management System is a lightweight, full-featured web-based portal designed to streamline administrative control and teaching operations in schools.
Built without heavy frameworks, it leverages modern vanilla JavaScript and Supabase's backend-as-a-service platform to deliver a responsive, secure, and intuitive user experience. The system provides comprehensive, role-based dashboards for administrators and teachers to efficiently manage students, classes, attendance, marks, and timetables.
- Frontend: HTML5, CSS3, JavaScript (ES6+)
- Backend & Database: Supabase (PostgreSQL, REST API, Supabase Authentication, Row Level Security)
- Server & Deployment: http-server (Node.js), Docker, Docker Compose
- Collaboration & Tools: Git, GitHub, VS Code
- Dashboard Analytics: Real-time statistics on students, teachers, classes, and attendance rates.
- Student & Teacher Management: Complete CRUD operations for student and teacher profiles.
- Class & Subject Management: Create and organize classes, define subjects, and assign teachers.
- Marks Approval System: Review and approve marks submitted by teachers.
- Timetable & Settings: View and manage school-wide timetables and customize system preferences (school name, theme colors).
- Notifications: Real-time notification system for marks submissions and requests.
- Personal Dashboard: Overview of assigned classes and daily teaching schedule.
- Attendance Tracking: Mark and manage daily student attendance.
- Marks Entry & Recheck: Submit student marks for various subjects and handle recheck requests.
- Timetable & Period Management: Access personal teaching timetable and mark periods as completed.
- Account Settings: Manage personal profile and preferences.
- Notifications: Receive updates on recheck requests and system announcements.
- Supabase Authentication: Secure user signup and signin with role-based allocation (Admin/Teacher).
- Role-Based Access Control (RBAC): Portal redirection and page-level guards.
- Database Security: Secure credential storage and Row Level Security (RLS) policies.
- Node.js (v18 or higher)
- Git
- Docker & Docker Compose (Optional, for containerized deployment) — Download Docker
- Modern web browser (Chrome, Firefox, Safari, or Edge)
- Supabase Account — (https://supabase.com/)
The application uses Supabase for user authentication, database management (PostgreSQL), and real-time features.
- Log in to your Supabase Dashboard.
- Click New Project and select your organization.
- Set a Project Name (e.g.,
School Management System). - Set a strong Database Password (save this password somewhere secure).
- Choose a region close to you and click Create New Project. Wait a few minutes for the project database to provision.
- Once the database is ready, navigate to the SQL Editor from the left navigation panel.
- Click on New Query.
- Open the
schema.sqlfile located in the root of the project repository. - Copy the entire contents of
schema.sqland paste it into the Supabase SQL editor. - Click Run to create the tables, indexes, and trigger functions.
To connect your frontend application to the Supabase backend services, you need to configure your local credentials.
- In the Supabase Dashboard, go to Project Settings (the cog icon at the bottom of the left sidebar) ➔ API.
- Copy the following values:
- Project URL (under Config ➔ URL)
- Anon Public Key (under API Keys ➔
anonpublic)
- Open your terminal and navigate to the project directory:
cd School-Management-System- Copy the configuration template:
# Windows PowerShell / CMD:
copy shared\supabase.config.example.js shared\supabase.config.js
# Linux / macOS:
cp shared/supabase.config.example.js shared/supabase.config.js- Open
shared/supabase.config.jsin your code editor and replace the placeholder values with your Supabase credentials:
const SUPABASE_URL = "https://your-supabase-project.supabase.co";
const SUPABASE_ANON_KEY = "your-supabase-anon-key-here";shared/supabase.config.js to GitHub. The file is already ignored in the project's .gitignore to prevent leaking database keys.
You can launch the web application either using a local Node.js development server or using Docker.
This option runs a lightweight HTTP server to serve the HTML, CSS, and JS files natively.
- Open your terminal in the project directory.
- Install
http-serverglobally:
npm install -g http-server- Start the development server (configured to avoid file caching):
http-server -p 8080 -c-1- Access the web app in your browser at: http://localhost:8080
If you prefer running the application inside a containerized environment:
- Build and start the container in detached mode:
docker-compose up -d- Access the portal in your browser at: http://localhost:8080
- To view runtime logs, run:
docker-compose logs -f- To stop the application, run:
docker-compose downAfter configuring the project, you must set up user accounts in Supabase to log in as an administrator or teacher.
- Go to the Authentication tab in your Supabase dashboard.
- Click Add User ➔ Create User.
- Enter the email address and password for your user account (e.g.,
admin@school.comorteacher@school.com). - Copy the newly created user's User ID (UUID) from the dashboard list.
- Go to the Table Editor tab on the left sidebar.
- Select the
user_rolestable. - Click Insert Row.
- Paste the user's UUID into the
user_idfield. - In the
rolefield, enter either'admin'or'teacher'(match the role intended for the user). - Click Save.
If you assigned a user the 'teacher' role, you must also create a corresponding entry in the teachers table to link their profile.
- Go to the Table Editor and select the
teacherstable. - Click Insert Row.
- Paste the teacher user's UUID into the
user_idfield. - Fill in the teacher's
name,email, andsubjectdetails. - Click Save.
This project is open-source and licensed under the MIT License. Feel free to use, modify, and distribute this software for educational and personal purposes.