# Timetable Admin — User Manual

_Last updated: 2026_

Welcome to **Timetable Admin** — a multi-tenant scheduling platform that turns
your staff, classes, subjects, and rooms into conflict-free weekly timetables
in seconds.

---

## 1. Introduction

### Purpose
Timetable Admin lets administrators:

- Maintain master data for teachers, subjects, classes, rooms, and time slots.
- Map who teaches what (assignments) and when teachers are available.
- Auto-generate a conflict-free **weekly timetable** and a separate
  **exam timetable** (with room + invigilator planning).
- Share read-only timetables with teachers, parents, and students.

### Who can use it
- **Schools** (pre-primary → higher secondary)
- **Colleges** (UG / PG)
- **Coaching institutes** and **tutoring centres**

Each organisation is a **tenant** with its own data, branding, and users.
Tenants never see each other's data.

---

## 2. Getting Started

### 2.1 Sign up as a tenant
1. Go to `/signup` and create an account using your work email.
2. Verify your email (one-time link).
3. You become the first **admin** for your new tenant workspace.

### 2.2 Add institution type and student count
On first login you are prompted (or you can edit later on the **Organisation**
page) for:

- **Institution name** (used in PDFs and public links).
- **Institution type** — school / college / coaching.
- **Student count** — used for capacity planning and reports.
- **Logo URL** — appears on public timetables and PDF exports.

### 2.3 Navigating the dashboard
The left sidebar groups everything by workflow:

- **Dashboard** — quick stats and shortcuts.
- **Teachers / Subjects / Classes / Rooms / Time slots** — master data.
- **Assignments / Availability / Constraints** — scheduling inputs.
- **Timetable / Views** — generate and view the weekly grid.
- **Exam types / Exam sessions / Invigilators / Exam timetable** — exam module.
- **Reports** — usage and operational analytics.
- **Organisation / Users / Subscribe** — settings and billing.

Super admins additionally see **Tenants**, **Subscriptions**, and admin tools.

---

## 3. CSV Imports

Every master-data page has a **Sample** button (downloads a ready-to-edit
template) and an **Upload CSV** button (parses, validates row-by-row, and
imports only valid rows).

> **Import order (recommended):** Teachers → Subjects → Teacher Capabilities →
> Classes / Rooms → Assignments → Availability → Exam Types.

Column names are case-insensitive but spelling must match.

### 3.1 Teachers.csv

| Column | Required | Notes |
| --- | --- | --- |
| `full_name` | yes | Teacher's full name. |
| `email` | **yes** | Must be unique. Used to create the auth account and send the magic-link login. |
| `level` | **yes** | One of `pre_primary`, `primary`, `secondary`, `higher_secondary`, `ug`, `pg`. The generator only matches teachers to classes of the same level. |
| `employee_code` | no | Optional staff code (must be unique if provided). |
| `max_periods_per_day` | no | Integer. Default `6`. |
| `max_weekly_hours` | no | Integer. Default `30`. |

### 3.2 Subjects.csv

| Column | Required | Notes |
| --- | --- | --- |
| `name` | yes | e.g. `Mathematics`. |
| `code` | no | Short code, e.g. `MATH`. Keep consistent across imports. |
| `color` | no | Hex string (e.g. `#3b82f6`) for the timetable grid. |
| `weekly_hours` | no | Default periods per week (used as a hint for assignments). |

### 3.3 Classes.csv

| Column | Required | Notes |
| --- | --- | --- |
| `name` | yes | e.g. `Grade 5 A`. |
| `grade_level` | no | Integer or label. |
| `section` | no | e.g. `A`, `B`. |
| `student_count` | no | Integer — must be realistic; used for room-capacity checks. |
| `class_level` | no | Same vocabulary as teacher `level`; used to match teachers. |

### 3.4 Rooms.csv

| Column | Required | Notes |
| --- | --- | --- |
| `name` | yes | e.g. `Room 101`, `Physics Lab`. |
| `capacity` | no | Integer. Exam scheduler refuses rooms smaller than the class. |
| `room_type` | no | Free text (e.g. `classroom`, `lab`). |

### 3.5 TeacherCapabilities.csv

Defines **which subjects a teacher is qualified to teach** (one row per pair).

| Column | Required | Notes |
| --- | --- | --- |
| `teacher_name` | yes | Must already exist in Teachers. |
| `subject_name` | yes | Must already exist in Subjects. |

### 3.6 Assignments.csv

Maps a teacher to a subject (optionally for a specific class) with a weekly
load. This is the main input the scheduler uses.

| Column | Required | Notes |
| --- | --- | --- |
| `teacher_name` | yes | Must exist in Teachers. |
| `subject_name` | yes | Must exist in Subjects. |
| `class_name` | no | If omitted, the assignment applies tenant-wide. |
| `periods_per_week` | yes | Integer ≥ 1. |

### 3.7 Availability.csv

Marks specific periods as available / unavailable for a teacher.

| Column | Required | Notes |
| --- | --- | --- |
| `teacher_name` | yes | Must exist in Teachers. |
| `day` | yes | One of `monday`..`sunday`. |
| `period` | yes | Period number (matches your Time slots). |
| `is_available` | yes | `true` or `false`. |

### 3.8 ExamTypes.csv

Defines the exam milestones for the academic year (e.g. Unit Test 1, Unit
Test 2, Midterm, Final, Practical).

| Column | Required | Notes |
| --- | --- | --- |
| `name` | yes | e.g. `Unit Test 1`. |
| `start_date` | no | `YYYY-MM-DD`. |
| `end_date` | no | `YYYY-MM-DD`. |

After import, create individual **exam sessions** on the Exam Sessions page
(or via the exam timetable generator).

---

## 4. Dashboard Features

- **Schools / Tenants** (super-admin only) — view, impersonate, and manage
  every organisation on the platform.
- **Teachers / Classes / Subjects / Rooms** — CRUD pages with inline search,
  pagination, and CSV import on each.
- **Timetable generation** — open **Timetable** → choose a working day pattern
  → click **Generate**. The solver respects assignments, capabilities,
  availability, room capacity, and per-teacher daily/weekly caps.
- **Views** — Class view, Teacher view, and Room view of the same timetable.
- **Reports & analytics** — usage by tenant, period utilisation, teacher load,
  generation history.
- **Exam timetable** — independent module with rooms, invigilators, and
  conflict-free session placement.

---

## 5. Landing Page Banner

The public landing page shows a live banner with:

- App logo and tagline.
- **Total users** signed up across the platform.
- **Institutions** currently using Timetable Admin.
- **Timetables generated** to date.

These numbers are **auto-calculated** from tenant activity — no manual edits.

---

## 6. Tips & Best Practices

- **Follow the import order**: Teachers → Subjects → Capabilities →
  Classes/Rooms → Assignments → Availability → Exam Types.
  Imports that reference names will fail if the referenced row does not exist
  yet.
- **Keep emails unique** — they are the login identifier for teachers.
- **Use realistic student counts** — the exam scheduler rejects rooms smaller
  than the class.
- **Keep subject codes consistent** across Subjects, Capabilities, and
  Assignments so reports group correctly.
- **Start small**: import 5–10 rows to confirm the format, then upload the
  full file.
- **Re-running an import is safe**: duplicate-detection skips already-present
  rows.

---

## 7. Support

- **Guides**: [`/guides`](/guides) — short walkthroughs for every workflow.
- **FAQ**: see the FAQ section on the [home page](/#faq).
- **Contact**: [`/contact`](/contact) or [`/support`](/support).
- **Email**: [support@timetableadmin.in](mailto:support@timetableadmin.in)

---

_© Timetable Admin. This manual is updated alongside the product — bookmark
this page for the latest version._
