2.7 KiB
2.7 KiB
- implement streaming
implementation- refactor cache tests to match new interface using testify
- Deployment
- ci check golangci-lint docs
fix owner and perms and check on .env file for installPKGBUILDci testing, lint, gosec, vulncheckgraceful shutdowncd build binary, package
- More complete sync(refresh packages on schedule with db, prefetch updates to pkgs we already have)
- clean cache of old files
- Add chi for mux
- Build server/tool
- Think about: arch doesn't like partial upgrades, round robin fetching the db files might be an issue
Complete testingAdd better logging for errors, filename more deatailpackage maininternal/cacheapi endpoint to change level
retry on failed fetchSolve timeout issue large pkgsMove project to github as primaryadd a UA to get client, some servers are 403 the default go clientBasic config Testingflag for loading non default configadd cli option for config locationDeployment(systemd, systemd.timer)Basic testing for internal/cachebasic file server that fulfills pacman apifetch requested files from mirrorDB sync from mirrorConfig file and import
Looking at what you've built and what's left on your TODO, here's how I'd think about the "done" line for a capstone:
What you already have that's impressive:
- Real concurrent systems work — singleflight, atomic ops, mutex
- Custom HTTP transport with timeout tuning
- Atomic file writes with the tmp-then-rename pattern
- Meaningful test suite with httptest, not just trivial unit tests
- Clean dependency injection, thoughtful package boundaries
- Config validation with proper error wrapping
What would make it a complete capstone story:
- The streaming solution for large packages — this is your most interesting unsolved technical problem and directly demonstrates you understand the HTTP layer
- At least one more meaningful feature working end-to-end, either the refresh scheduling via systemd timer or the prefetch-on-refresh logic
- Actually deployed and serving your home network — "running in production" is a strong closer
What I'd leave out of the capstone scope:
- The AUR builder — that's a whole second project honestly
- Chi middleware — nice but not substantive enough to matter
The through-line you want to be able to tell is: I built a caching reverse proxy from scratch in Go, handling concurrency, filesystem atomicity, and HTTP semantics correctly, and deployed it on real hardware. You're close to being able to say that. The streaming piece and a working deployment are the remaining gaps.
How far out is the capstone deadline?