Inspiration
Teachers and school staff often manage student rosters, seating charts, dorm assignments, name tags, and student photos across separate spreadsheets and manual design tools. Small changes then create a lot of repeated work and make printed materials easy to get wrong. QX班小助 was created to turn those everyday classroom operations into one consistent, local-first workflow.
What it does
QX班小助 helps teachers and school staff:
- Import and edit student rosters from Excel.
- Create, reset, move, and print classroom seating charts on landscape A4 pages.
- Manage dorm rooms, beds, student assignments, dorm rosters, door signs, and cabinet/name tags.
- Match student photos, normalize them for printing, and optionally create blue-background photos.
- Export practical PDFs, spreadsheets, and photo packages for real-world use.
- Use a Web version on a local network, with the original Windows desktop workflow still available.
How we built it
The Windows app is built with Python and PyQt6, with PySide6 fallback support. Shared business logic lives in a pure-Python qx_core package covering student data, Excel I/O, photo matching, seating layouts, dorm data, and PDF generation. The Web version uses FastAPI, SQLModel, SQLite, React, TypeScript, Vite, React Query, react-konva, and Docker.
Codex with GPT-5.6 was used throughout the build to refactor the original desktop application into reusable core modules, design and implement the FastAPI/React migration, add end-to-end data flows, improve photo-processing and seating-layout behavior, write tests, verify builds, and document packaging and deployment. Codex accelerated the workflow by making it possible to move quickly between product decisions, implementation, regression tests, and real deployment checks while keeping the desktop and Web versions aligned.
Challenges we ran into
The hardest part was preserving the same data semantics and print layout across PyQt screens, a Web canvas, and PDF exports. We also had to handle real school data safely: student names and photos need reliable matching, edits must propagate between pages, and local deployments may run on low-power hardware. Optional background removal is therefore isolated from the core workflow and can run as a queued, single-worker task.
What's next
The next steps are stronger authentication and permissions for public deployments, richer multi-user collaboration, and further optimization of photo processing for low-power devices.
Built With
- codex
- docker
- fastapi
- gpt-5.6
- onnx-runtime
- pillow
- pyqt6
- python
- react
- rembg
- reportlab
- sqlite
- typescript
- vite
Log in or sign up for Devpost to join the conversation.