Supabase PostgreSQL & RLS Protected

Modern Student Attendance Management System

A robust, responsive web application for colleges and schools. Manage students, record subject-wise attendance with duplicate prevention, calculate dynamic percentages, and export comprehensive CSV reports.

Enterprise Architecture

Core System Features

Engineered with modern web standards and permanent PostgreSQL persistence via Supabase.

Smart Attendance Marking

Record attendance per class and subject with Present, Absent, and Late radios, Mark-All bulk toggles, and automatic duplicate prevention.

Dynamic Percentage Calculation

Automatic calculation of attendance percentage based on actual database logs with visual progress bar color indicators.

Advanced Reports & CSV Export

Filter by class, subject, student, date range, or month. Generate printable reports and download RFC 4180 CSV files.

Row Level Security (RLS)

PostgreSQL policies enforce strict role authorization. Students can only view their own attendance records and cannot alter data.

Realtime Synchronization

Supabase Realtime WebSockets push updates instantly to student dashboards and administrative charts without manual page refresh.

Responsive on All Devices

Optimized for desktops, tablets, and smartphones with mobile drawer navigation and touch-friendly controls.

Full-Stack Cloud Architecture

PostgreSQL + Supabase + GitHub Pages

This application is built as a static Single-Page / Multi-Page application architecture deployable seamlessly to GitHub Pages. All authentication and relational data are persistently stored in Supabase PostgreSQL.

  • Vanilla ES6 JavaScript for modular, high-speed performance
  • Supabase Auth for encrypted session management
  • Public Anon Key with RLS protection (Zero secret exposure)
  • Chart.js for interactive analytics visualisations
Database Schema Overview
profiles ───< students ───< attendance >─── subjects >─── classes

// RLS Policy Verification
CREATE POLICY "Students view own attendance"
ON attendance FOR SELECT
TO authenticated
USING (student_id IN (SELECT id FROM students WHERE profile_id = auth.uid()));