Skip to main content
SEATS dashboard preview
folderDesktop & University
calendar-days08/2026 - 08/2026
layers-3React, TypeScript, Rust +

SEATS: SBO Event Attendance Tracking System

A focused desktop app for student organizations to manage events, record attendance, and turn check-in data into clear, actionable reports.

Tech Stack

ReactTypeScriptRustTauriSQLiteViteBun

README

SEATS

SBO logo

ISC license Tauri v2 React 19 Rust 1.88 or newer

SBO Event Attendance Tracking System

A focused desktop app for student organizations to manage events, record attendance, and turn check-in data into clear, actionable reports.

Built with React, TypeScript, Rust, SQLite, and Tauri v2.

Fast, private, and built for the event desk.
Attendance data stays on the device while the interface keeps scanning and reporting simple.

Preview

Dashboard

SEATS dashboard preview

Reports

SEATS reports preview

What it does

  • Manage events — create, edit, archive, and restore events with venue, schedule, and status tracking.
  • Track attendance — record time-in and time-out scans with duplicate-scan feedback and a live attendance feed.
  • Maintain the student roster — search, filter, sort, and bulk-import students from CSV or Excel files.
  • Understand participation — explore dashboard trends, event summaries, distributions, leaderboards, and attendance heatmaps.
  • Export clean workbooks — save event attendance or filtered reports as formatted .xlsx files through a native save dialog.
  • Run securely on desktop — use kiosk mode, database backup/restore, auto-start preferences, and local SQLite storage.

Architecture

SEATS is a Tauri desktop application with a React webview and a Rust command layer. The frontend communicates with the backend through Tauri's in-process IPC bridge — there is no local HTTP server or exposed API port.

┌──────────────────────────────┐       Tauri IPC        ┌──────────────────────────────┐
│  client/                     │  ◄──────────────────►  │  src-tauri/                  │
│  React + TypeScript + Vite   │                        │  Rust + Tauri v2             │
│                              │                        │                              │
│  pages → components          │                        │  commands → database queries │
│  React Query → typed APIs    │                        │  SQLite → native operations  │
└──────────────────────────────┘                        └──────────────────────────────┘
                                                                  │
                                                                  ▼
                                                        Local app data directory
                                                        └── seats.db

Data flow

  1. Tauri initializes the local SQLite database and applies migrations.
  2. The React shell mounts while the native splash screen remains visible.
  3. Frontend API modules invoke typed Rust commands through @tauri-apps/api.
  4. Rust query modules read and write the local database, returning serialized results.
  5. Native features such as file dialogs, imports, backups, and Excel exports stay in the Rust layer.

Prerequisites

Getting started

Install dependencies from the repository root, then launch the desktop app:

bun install
cd client && bun install
cd ..
bun run dev

The first launch may take a few minutes while Rust dependencies and the SQLite-backed desktop shell compile.

Build for production

bun run build

Build artifacts are written to src-tauri/target/release/.

Scripts

Repository root

CommandDescription
bun run devStart the Tauri desktop app in development mode
bun run buildBuild the production desktop bundle

client/

Run these from the client/ directory:

CommandDescription
bun run devStart the Vite frontend development server
bun run buildType-check and build the frontend
bun run typecheckRun the TypeScript project check
bun run lintRun ESLint
bun run format:checkVerify Prettier formatting
bun run previewPreview the production frontend build

Repository layout

.
├── client/                 # React frontend, routes, components, API modules, and UI state
├── docs/
│   └── assets/             # README screenshots and documentation media
├── src-tauri/
│   ├── src/
│   │   ├── commands/       # Tauri IPC commands grouped by domain
│   │   └── db/             # SQLite connection, migrations, and query modules
│   ├── capabilities/       # Tauri permissions and capability manifests
│   └── tauri.conf.json     # Desktop window and bundle configuration
├── package.json            # Root scripts and Tauri CLI dependency
└── README.md

Privacy and storage

SEATS is designed for local-first operation. Attendance records are stored in the app's local SQLite database, while backup and restore tools let operators control their own data files.

License

ISC — see package.json.

Last updated: August 22, 2026

Looking for a Software Engineer?

I'm available for remote work.

Professional headshot of Alistair, a Software Engineer

We use cookies to analyze site traffic and improve your experience.

Learn more about how your data is handled