Dashboard
Live school overview — updated in real time
Today's gate activity
View all| Time | Name | Type | Status |
|---|
Department status
| Department | Status |
|---|---|
| Gate & Security | Operational |
| Fees & Accounts | Check EOD |
| Academic | Normal |
| HR & Attendance | Normal |
| Transport | Running |
| Parent Relations | Complaints open |
The Quest International School
Gate registration terminal · Please select who you are
Visitor & gate log
Total entries today
—
Blocked attempts
—
Admission enquiries
—
| Time | Name | Phone | Type | Purpose / Detail | Status |
|---|
No entries found
Authorised pickup register
Manage who is authorised to collect each student
All registered persons
| ID | Name | Phone | Relation | Student | Pickup auth. | Status | Action |
|---|
Status change history
| Date | Person | Change | Approved by | Email ref. |
|---|---|---|---|---|
| No changes recorded yet | ||||
Incident & safety log
All reported security and safety events
Open incidents
0
This month
0
Resolved
0
| Date & time | Type | Description | Severity | Status |
|---|---|---|---|---|
| No incidents logged | ||||
Academic overview
Lesson plans, syllabus tracking, assessments
Lesson plans this week
94%
30 of 32 submitted
Missing plans
2
Maths Gr 7, Science Gr 9
Teacher attendance today
95%
Weak students flagged
8
below threshold
Syllabus completion by section
| Section | Coordinator | Completion | Status |
|---|---|---|---|
| EYP (Nursery — UKG) | Mrs Anitha | 88% | On track |
| Primary (Gr 1–5) | Mrs Kavitha | 72% | Needs review |
| Secondary (Gr 6–10) | Mr Suresh | 81% | On track |
Flagged weak students
| Student | Class | Subject | Score | Action |
|---|---|---|---|---|
| Rahul M | Gr 7 | Mathematics | 34% | Remedial assigned |
| Sneha K | Gr 5 | English | 41% | Parent informed |
| Arun P | Gr 9 | Science | 38% | Pending |
Fees & collection
Daily collection tracking and outstanding dues
Collected today
₹0
Collected this month
₹3.8L
Outstanding dues
₹2.4L
18 families
Overdue 30+ days
5
families
Today's collections
| Time | Student | Class | Amount | Mode | Receipt |
|---|---|---|---|---|---|
| No collections logged today | |||||
HR & parent relations
Staff records and parent complaint tracking
Total staff
40
On leave today
2
Open complaints
0
Resolved this month
11
Parent complaints
| Date | Parent | Issue type | Assigned to | Status | Action |
|---|---|---|---|---|---|
| No complaints logged | |||||
Deployment setup guide
Get this app live at a real URL in 30 minutes
Step 1 of 4 — Create your free Supabase database
1
Go to supabase.com and sign up free
Click "Start your project" → sign up with Google → create a new project. Name it: quest-school. Choose region: Asia (Singapore). Set a database password and save it.
2
Run this SQL to create all your tables
In Supabase → click "SQL Editor" in the left menu → paste this entire block → click Run:
-- Quest School Gate System Tables
create table if not exists gate_log (
id uuid default gen_random_uuid() primary key,
created_at timestamptz default now(),
person_name text not null,
phone text,
entry_type text not null, -- Staff / Parent / Visitor
movement text, -- Entry / Exit
purpose text,
student_name text,
status text not null, -- Logged / Active / Blocked / Screened
barcode text,
notes text
);
create table if not exists pickup_register (
id uuid default gen_random_uuid() primary key,
created_at timestamptz default now(),
pickup_id text unique not null,
person_name text not null,
phone text not null,
relation text,
student_name text,
student_class text,
pickup_authorised boolean default true,
status text default 'Active',
registered_by text,
notes text
);
create table if not exists status_change_log (
id uuid default gen_random_uuid() primary key,
created_at timestamptz default now(),
pickup_id text,
person_name text,
change_from text,
change_to text,
approved_by text,
email_reference text
);
create table if not exists incidents (
id uuid default gen_random_uuid() primary key,
created_at timestamptz default now(),
incident_type text,
severity text,
description text,
people_involved text,
action_taken text,
status text default 'Open',
resolved_by text,
resolved_at timestamptz
);
create table if not exists fee_collection (
id uuid default gen_random_uuid() primary key,
created_at timestamptz default now(),
student_name text not null,
student_class text,
amount numeric not null,
payment_mode text,
receipt_number text,
logged_by text
);
create table if not exists complaints (
id uuid default gen_random_uuid() primary key,
created_at timestamptz default now(),
parent_name text not null,
student_name text,
issue_type text,
description text,
assigned_to text,
status text default 'Open',
resolved_at timestamptz,
resolution_notes text
);
-- Enable Row Level Security (keeps data safe)
alter table gate_log enable row level security;
alter table pickup_register enable row level security;
alter table status_change_log enable row level security;
alter table incidents enable row level security;
alter table fee_collection enable row level security;
alter table complaints enable row level security;
-- Allow all operations for authenticated users (you will restrict per role later)
create policy "allow all" on gate_log for all using (true);
create policy "allow all" on pickup_register for all using (true);
create policy "allow all" on status_change_log for all using (true);
create policy "allow all" on incidents for all using (true);
create policy "allow all" on fee_collection for all using (true);
create policy "allow all" on complaints for all using (true);
3
Get your Supabase URL and Key
In Supabase → Settings (gear icon) → API. Copy two values: Project URL and anon / public key. You will paste them in Step 4.
Step 2 of 4 — Connect the app to your database
4
Update the config in the app file
Open the index.html file you downloaded. Find this section near the top of the <script> and replace with your values:
const SUPABASE_URL = 'https://YOUR-PROJECT.supabase.co';
const SUPABASE_KEY = 'YOUR-ANON-KEY-HERE';
Step 3 of 4 — Deploy to a free live URL (Netlify)
5
Go to netlify.com and sign up free
Click "Sign up" → use Google login → go to "Sites" in the dashboard.
6
Deploy by drag and drop — literally
On the Netlify Sites page, scroll down until you see a dotted box that says "drag and drop your site folder here". Put your index.html inside a folder called questschool. Drag that folder into the box. Netlify deploys it instantly.
7
Set a custom site name
After deploy, click "Site settings" → "Change site name" → type: questschool-gate. Your app is now live at: questschool-gate.netlify.app
Step 4 of 4 — Add your initial data
8
Add your authorised pickup persons
In Supabase → Table Editor → pickup_register → click "Insert row". Add every parent and authorised pickup person from your student records. Set status to 'Active' for all. This is your starting Known Visitor list.
9
Share the right URL with each staff member
Send questschool-gate.netlify.app to all staff with their username and password. The FO Executive bookmarks this on the front desk computer. The gate tablet is locked to the same URL showing the Gate Terminal screen.
10
WhatsApp alerts — set up CallMeBot
1. Save +34 644 98 86 68 in your phone contacts as "CallMeBot".
2. Send this WhatsApp message to that number: I allow callmebot to send me messages
3. You receive an API key in reply. Copy it.
4. Open index.html → find CALLMEBOT_API_KEY → paste your key there.
From that point, every blocked pickup and high-severity incident sends a WhatsApp to your number instantly.
2. Send this WhatsApp message to that number: I allow callmebot to send me messages
3. You receive an API key in reply. Copy it.
4. Open index.html → find CALLMEBOT_API_KEY → paste your key there.
From that point, every blocked pickup and high-severity incident sends a WhatsApp to your number instantly.
const FOUNDER_PHONE = '917845909008'; // your number with country code
const CALLMEBOT_API_KEY = 'YOUR-API-KEY-HERE';
Subject allotment
Set up classes, assign teachers to subjects, and view the full grid.
Classes this year
Add all your classes at the start of each year. Click x to remove.
No classes added yet. Click + Add class above.
Assign teachers by class
Select a class above to see its subjects and assign teachers.
Full allotment grid
All classes x all subjects. Green = assigned. Red = gap. CT = Class Teacher.
| Add classes and subjects to see the grid. |
Teacher load summary
Max 32 periods/week per teacher
| Teacher | Role | Assigned to | Periods/week | Load | Action |
|---|---|---|---|---|---|
| No teachers added yet. | |||||
Subject master
Edit or remove subjects and their period counts per grade group
| Subject | Grade group | Periods/week | Actions |
|---|---|---|---|
| No subjects added yet. | |||