45 lines
2.2 KiB
Markdown
45 lines
2.2 KiB
Markdown
- add a UA to get client, some servers are 403 the default go client
|
|
- Add better logging for errors, filename more deatail
|
|
- Solve timeout issue large pkgs, maybe stream
|
|
- Move project to github as primary
|
|
|
|
- Complete testing
|
|
- Deployment(PKGBUILD, bootstrap script?)
|
|
- 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
|
|
- ~retry on failed fetch~
|
|
- ~Basic config Testing~
|
|
- ~flag for loading non default config~
|
|
- ~add cli option for config location~
|
|
- ~Deployment(systemd, systemd.timer)~
|
|
- ~Basic testing for internal/cache~
|
|
- ~basic file server that fulfills pacman api~
|
|
- ~fetch requested files from mirror~
|
|
- ~DB sync from mirror~
|
|
- ~Config 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?
|