From Spreadsheet Chaos to A3 Clarity β A Privacy-First Tool for Students #195668
Replies: 1 comment
-
6 Days, $450, and a 45% Waste Rate β Lessons from Rebuilding a Student Timetable ToolOverviewI rebuilt a 5,000-line spaghetti-code HTML file into a modular TypeScript application in 6 days β spending $450 on API tokens and wasting nearly half of that budget on preventable mistakes. Live: qinsanlian.github.io/enrollment-timetable-comparison The Numbers
What Got Built
Where the 45% Went
These weren't "learning investments" β they were waste that a plan phase and a test suite would have eliminated. What Actually Worked
What This Project Is Not
Key TakeawayThe 45% waste came from one mistake: confusing "Proof of Concept" with "Minimum Viable Product." The prototype was functional but architecturally bankrupt. When I treated it as a real product, the technical debt bill arrived immediately β and I paid for it in tokens, time, and sanity. If you're building something similar: spend 30 minutes on a plan before writing a single line of code. It's the cheapest insurance against a 45% waste rate. Feedback, issues, and honest critique welcome. Still learning. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
π·οΈ Discussion Type
Question
π¬ Feature/Topic Area
Verification Help & Guidance
Hi everyone,
Hello everyone,
I want to share a project Iβve been working on over the past weeks: Enrollment & Timetable Comparison, a privacy-first, pure front-end tool that helps international students turn messy enrollment spreadsheets into a clean A3 timetable.
Itβs live at qinsanlian.github.io/enrollment-timetable-comparison β no installation, no account, no data leaves your browser.
What it does
Whatβs under the hood
The project started as a single 5,000βline HTML file (a proofβofβconcept). Iβve since moved it to a Vite + TypeScript setup with a layered architecture:
types/constantsβutils/core(pure functions) βstate(persistence, undo/redo) βmain.ts(bridge) βlegacy.js(UI code thatβs being phased out)Honest limitations
legacy.js) is still a large IIFE with significant technical debt; only pure logic has been migrated to TypeScript so far.Next steps
Why this matters to me
This project is part of my effort to learn software engineering from scratch as a firstβyear, nonβCS student. I made plenty of mistakes β wasted tokens, broke undo multiple times, fought with GitHub Pages deployment for hours. Iβm sharing this not because itβs perfect, but because the process of turning a messy prototype into something maintainable taught me more than any tutorial.
If you have feedback, found a bug, or want to contribute, feel free to open an issue or PR on GitHub. Iβm still learning, and honest critique is always welcome.
Thank you to the communities and mentors who helped me get here β especially CodeFather for early guidance.
Apache License 2.0. This is an unofficial layout aid, not an institutional document.
Beta Was this translation helpful? Give feedback.
All reactions