---
name: school-timetable-automation
description: Generate school time tables in Excel, PDF, and HTML formats — modern, clean, mobile-accessible dashboard via Tailscale
category: productivity
tags: [excel, school, timetable, education, automation, html, dashboard]
linked_files:
  references:
    - references/session-may-9-2026.md
---

# School Time Table Automation
- Need to generate school timetable with classes, subjects, teachers

## Core Workflow

### 0. Ask for Data FIRST (before creating anything)
- ALWAYS ask for: Class list, Teachers+Subjects, School timing
- OR offer demo with sample data, let user customize
- Do NOT generate empty templates and expect user to fill
- **User hates** when system creates empty grids without data

### 1. Excel Time Table
Create with ACTUAL data populated — not blank placeholder rows.
Excel with Gujarati headers (સોમવાર, સમય/વાર etc.)

### 2. HTML Dashboard — MODERN STYLE
- NO VBA look (grids, borders, old Excel style)
- Use: Card layout, color-coded subjects, clean modern CSS
- Do NOT repeat "VBA Style" anywhere in UI
- Mobile-first responsive design

### 3. Serve Dashboard via Tailscale Funnel
**CRITICAL**: Tailscale Funnel proxies to port 8000 — always serve on 8000.

```bash
# Kill any existing server
pkill -f "python.*http.server"

# Serve on port 8000 (Tailscale Funnel target)
cd ~ && python3 -m http.server 8000
```

**URL for user**: `https://victus.nilgiri-wyvern.ts.net/<filename>.html`
- NO port number in URL — Tailscale handles port 8000 internally
- User CANNOT write `:8000` in browser — it breaks
- Always provide Tailscale URL first, local IP as backup

### 4. Multiple Output Formats
- Excel (.xlsx): Full editable version with real data
- PDF: Print-ready
- HTML Dashboard: Browser/mobile access via Tailscale

## Common Pitfalls
- **Empty templates**: Users won't fill blank grids — generate with sample/real data
- **VBA-style HTML**: User explicitly rejected this. Dashboard must look modern.
- **Telegram file attach**: Attachments may fail silently. Always provide file path as text.
- **Local IP (169.254.x.x)**: Link-local not accessible from mobile. Use Tailscale.
- **Port in Tailscale URL**: User WILL complain if you add `:8000` to the URL. Always write the URL without port. Tailscale Funnel handles port 8000 internally.
- **VBA in Python**: Python cannot run VBA. VBA runs in Excel VBA Editor (Alt+F11).
- **"VBA Style" label**: Never write this in UI text — user finds it confusing.

- **4 large + 3 small lectures**: Default school structure — 4 larger periods before recess, 3 smaller after. Times: 7:45-8:30, 8:30-9:15, 9:15-10:00, 10:00-10:45 (large); 10:45-11:00 recess; 11:00-11:40, 11:40-12:20, 12:20-1:00 (small); 1:00-1:20 activity. Adjust as needed per school.

## Preferences for Piyush
- Simple language, avoid jargon
- Provide multiple formats (Excel, PDF, HTML)
- Always give Tailscale URL for web dashboards
- Excel files prefer underscore naming
- NO VBA look in HTML dashboards — modern CSS only