Files
pkgstash/TODO.md
T
2026-05-20 22:18:32 -06:00

58 lines
2.7 KiB
Markdown

- More complete sync(refresh packages on schedule with db, prefetch updates to pkgs we already have)
- clean cache of old files
- Deployment
- automated changelog publishing
- ci check golangci-lint docs
- ~fix owner and perms and check on .env file for install~
- ~PKGBUILD~
- ~ci testing, lint, gosec, vulncheck~
- ~graceful shutdown~
- ~cd build binary, package~
- Build server/tool
- Think about: arch doesn't like partial upgrades, round robin fetching the db files might be an issue
- Add chi for mux
- ~implement streaming~
- ~implementation~
- ~refactor cache tests to match new interface using testify~
- ~Complete testing~
- ~Add better logging for errors, filename more deatail~
- ~package main~
- ~internal/cache~
- ~api endpoint to change level~
- ~retry on failed fetch~
- ~Solve timeout issue large pkgs~
- ~Move project to github as primary~
- ~add a UA to get client, some servers are 403 the default go client~
- ~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?