Skip to content

Repository files navigation

SeatTrellis logo

SeatTrellis

Classroom seating arrangements made scientific, fair, and effortless.

A privacy-focused, local-first intelligent seating arrangement tool.
Import rosters, configure rules, solve in seconds, fine-tune interactively, and export or print.
No accounts, no cloud sync — student data stays strictly on your machine.

Tests Rust Release License Platform

📥 Download Desktop App · cargo install seattrellis

Latest Release · Quick Start · Rule Reference · 简体中文


Arranging classroom seating is an intricate, recurring challenge for every teacher:

  • Near-sighted students need front seats; tall students shouldn't block the board.
  • Specific peers benefit from study partnerships, while others distract each other and must be separated.
  • Fair rotation across terms is essential to prevent students from being stuck in corners.
  • Manual planning easily takes hours every term, yet explaining the rationale to parents or administrators remains difficult.

SeatTrellis solves this in a single click: define your educational requirements and preferences, and the solver delivers mathematically verifiable, fully explainable seating plans with multi-term history tracking.

Seating Chart Demo

✨ Key Features

Feature Description
🧩 Strict Hard Constraints Guarantees satisfaction of mandatory rules: fixed seats, required neighbors, forbidden pairs, minimum distances, and group isolation. Every solved plan is independently validated with zero violations.
🎯 Explainable Soft Preferences Intelligently balances vision needs, height gradients, academic diversity, fair seat rotations, and recent-neighbor avoidance. Every rule provides explicit scoring breakdowns.
🔀 Multi-Candidate Comparison & Determinism Generates multiple high-quality candidate plans with clear trade-off metrics. Pinning the random seed ensures 100% reproducible results anytime.
Interactive Hand Tuning Easily swap seats, drag and drop, lock specific assignments, undo/redo, and apply intelligent constraint-aware repairs with real-time rule validation.
📅 Multi-Term Fair Rotation Tracks historical seating, generates multi-period rotations, and visualizes seat churn and adjacent-period movement distances with a local heatmap.
🖨️ 8 Standard Export Formats High-fidelity export to SVG, standalone HTML, printable HTML, PNG images, PDF, Excel (XLSX), Word (DOCX), and PowerPoint (PPTX), with one-click toggles for teacher records vs. anonymized student postings.
🔒 Local-First & Privacy by Design 100% offline computation without accounts, telemetry, or third-party servers. Public exports automatically anonymize sensitive identifiers.

🚀 Quick Start

1. Desktop App (Recommended for Teachers)

Download the installer for your operating system from GitHub Releases:

Platform Format
macOS (Apple Silicon) .dmg installer or .app.tar.gz
Windows (x64) .msi package or NSIS .exe installer
Linux (amd64) .deb package

💡 Tip: Binaries are distributed unsigned. On macOS, right-click the app and choose "Open" on first launch; on Windows, click "More info" → "Run anyway" if Microsoft SmartScreen prompts.

2. Command-Line Interface (CLI)

Install directly using Cargo:

cargo install seattrellis

# 1. Validate problem input and rule definitions
seattrellis validate --problem problem.json

# 2. Solve and output the full seating snapshot
seattrellis solve --problem problem.json --output plan.json

# 3. Export the plan to an image or document
seattrellis export --problem problem.json --solution plan.json --format png --output plan.png

3. Rules at a Glance

Seating rules are defined in a clean JSON format, clearly separating mandatory hard constraints from weighted soft preferences:

{
  "seed": 42,
  "hard": {
    "fixed_seats":       [{ "student": "STU001", "seat_id": "R1C1" }],
    "cannot_be_adjacent": [{ "students": ["STU004", "STU007"] }]
  },
  "soft": {
    "vision_front": { "enabled": true, "weight": 20 },
    "height_back":  { "enabled": true, "weight": 5 },
    "fair_rotation": { "enabled": true, "weight": 10, "lookback": 4 }
  }
}

🔄 Upgrading from v1 (Python)

If you are upgrading from legacy v1 (Python), use seattrellis schema-migrate or the built-in migration wizard in the web workbench to automatically upgrade your project files. Backups are created automatically before any file changes.

The legacy Python package is frozen at 1.9.0 for maintenance (pip install seattrellis==1.9.0). Version 2 is a pure Rust implementation with zero Python dependencies. See Migration Guide.


📖 Documentation

Guides & Usage Specifications Deep Dives & Dev
📖 Quick Start Guide 📐 Rule Handbook 🏗️ Architecture Overview
🖥️ Web & Desktop Workbench 📄 Input Format Reference ⚙️ CLI Reference (27 commands)
🖨️ Export & Printing Guide 🎒 Class Project Workflow 🔒 Privacy & Local Boundaries

🛡️ Privacy & Confidentiality

SeatTrellis operates strictly under a local-first paradigm. All computation, file operations, and exports run entirely on your local machine. No student rosters, IDs, academic scores, or classroom layouts are ever transmitted over the network.


💻 Development & Building

Built on a modern, high-performance tech stack:

  • Core Backend: Rust 1.88+ with 9 modular crates.
  • Desktop & UI: Tauri 2, React 19, and TypeScript.
  • Verification: 690+ Rust tests, 160+ UI tests, end-to-end browser workflows, fuzz testing, and strict CI benchmarks.
# 1. Build web workbench assets
cd clients/web && npm ci && npm run build && cd ../..

# 2. Run full Rust verification and linting
cargo test --locked --workspace
cargo clippy --locked --all-targets --workspace -- -D warnings

📄 License

Distributed under the Apache-2.0 License. See NOTICE for additional details.

About

A privacy-first classroom seating planner for fair, constraint-based, and reproducible seat arrangements. 一个注重隐私与公平的智能排座工具,让每一个座位各得其所,让每一种关系安然成序。

Resources

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages