JRM JamesReviewsMusic
JRM-12
Epic 2: Untangle the backend before the framework swap
JRM-13Extract env and db out of the entry point
JRM-14Wrap multi-step review writes in transactions
JRM-15Harden auth: rate limit login, validate JWT secret, tidy CORS origins
JRM-16Use AppError with proper status codes everywhere
JRM-17Add /api/health endpoint and container healthchecks
JRM-18Epic 3: Proper database migrations
JRM-19Upgrade drizzle-orm and drizzle-kit
JRM-20Generate and commit a baseline migration
JRM-21Mark the baseline as applied on prod and staging
JRM-22Run migrations at deploy time instead of push at container boot
JRM-23Epic 4: Migrate the backend from Express to Hono
JRM-24Scaffold the Hono app and port the middleware layer
JRM-25Port all API routes to Hono with zod validation
JRM-26Properly validate review submissions
JRM-27Replace Socket.IO with SSE and make image jobs async
JRM-28Replace the frontend fetch wrapper with the Hono RPC client
JRM-29Keep the integration tests green through the port
JRM-30Cut over to Hono and delete Express
JRM-31Epic 5: Move the header scraper into a browser sidecar
JRM-32Add a browserless Chromium service to the compose stack
JRM-33Connect the scraper to the sidecar instead of launching Chromium
JRM-34Slim the API image: node 22, non-root, no Chromium
JRM-35Epic 6: Modernise the test stack
JRM-36Move backend tests from Jest to Vitest
JRM-37Build a real database seeder
JRM-38Replace Cypress with Playwright
JRM-39Epic 7: Infra and deploy modernisation
JRM-40Pin all container images and versions
JRM-41Serve static assets properly from nginx
JRM-42Harden the Jenkins deploy pipeline
JRM-43Move backups to bur-cli
JRM-44Request logging and an external uptime check
JRM-45Epic 8: Frontend data-layer cleanup
JRM-46Query key factory and queryClient hygiene
JRM-47Make the URL the single source of truth for filters and sorting
JRM-62Visual identity pass
JRM-60Reduced motion support and performance limits on visual effects
JRM-59Replace hand-rolled dropdowns and dialog with accessible primitives
JRM-58Design tokens and layout cleanup
JRM-57Epic 10: Redesign
JRM-56Social cards and per-page meta
JRM-55Server-render the public pages
JRM-54Scaffold Start and port the routes
JRM-53Epic 9: Move the frontend to TanStack Start
JRM-51Move ratingTiers to shared and fix the package entry point
JRM-50Proper optimistic bookmark toggle with rollback
JRM-49Rework useAlbumStatus fetching behaviour
JRM-48Decouple the generic Dropdown from the root route
JRM-61Consolidate the card components and font pipeline
JRM-52Consistent loading and pending states
JRM-1
Epic 1: Stabilise - bug fixes and safety guards
JRM-2Fix useAlbumStatus calling /api/albums/status which doesn't exist
JRM-3Fix genre filter being dropped when searching albums
JRM-4Fix album result count ignoring the search filter
JRM-5Return 404 instead of 500 for unknown album and artist IDs
JRM-7Fix formatDate crashing on month-precision release dates
JRM-8Handle failed responses in fetchArtistFromSpotify
JRM-9Remove dead and mismatched dependencies
JRM-10Batch update minor and patch dependency versions
JRM-11Add regression tests for paginated album filtering and counts
No tickets
No tickets
