fd6beb4591c5d3a5eca1b08ffbfde2c11deb4672
Backend: - sessions.rs: add is_superadmin bypass to list_sessions, create_session, create_slot, update_slot_status, delete_slot - rooms.rs: allow empty layout on create_room (layout is built in editor after creation) Frontend room editor: - Fix drag coordinate sync: replace window mousemove delta calc with SVG CTM inverse transform (getScreenCTM), eliminating the 3x movement ratio bug - Switch to pointer capture (setPointerCapture) per element; remove svelte:window handlers - Positions always snap to 0.5 grid on drop, preventing backend validation errors - Left floating sidebar toolbar (collapsible) with Sitz/Tisch/ Tür/Lücke buttons and inline SVG icons - Room dimensions bar (Breite × Tiefe, 5–50 grid units) - Zoom controls (25%–400%) via scroll wheel or +/- buttons; SVG scales via width/height attrs so scrollbars work correctly - Property panel inputs snap to 0.5 on blur (prevents save errors) - Canvas bounded to room dimensions during drag
TutorTool
Attendance tracker for tutoring sessions. Tutors manage courses, rooms, and slots; students check in via a public QR code link. Live at tutor.puchstein.dev.
Quickstart
make dev
# Backend: http://localhost:3000
# Frontend: http://localhost:5173
Demo credentials: admin@tutortool.com / admin
Stack
- Backend: Rust + Axum + SQLite (via SQLx), Secure httpOnly Cookie JWT auth
- Frontend: SvelteKit 5 (Svelte runes), TypeScript, adapter-static (SPA)
- Build: Vite + Cargo; 3-stage Docker build for production
Documentation
| Doc | Contents |
|---|---|
CLAUDE.md |
Agent guidance: commands, architecture, conventions |
GEMINI.md |
Same, with Gemini-specific context |
docs/testing.md |
E2E test pipeline (Playwright + test daemon) |
docs/specs/ |
Feature specs |
docs/plans/ |
Implementation plans |
docs/design_handoff/ |
UI design mocks |
Deployment
Kubernetes via deploy/ Helm chart on ITSH Cloud (tenant-5, Hetzner). CI via Gitea Actions at .gitea/workflows/ci.yml.
Description
Languages
Rust
44.7%
Svelte
44.1%
TypeScript
6.1%
CSS
1.9%
Makefile
1.2%
Other
2%