# TODO

Concrete follow-up work for Jellomator.

## P0

- Add a backup and restore flow for the database in the admin UI.
  - Let an admin download the current database.
  - Let an admin upload a replacement database after confirmation.
  - Validate the uploaded file before swapping it in.
- Add a basic health endpoint for Docker and orchestration.
  - Return `200` when the app can read and write the database.
  - Return `503` if startup initialization or DB access fails.
- Add login rate limiting.
  - Track failed attempts per session or IP.
  - Temporarily block repeated failures.
- Add session expiry controls.
  - Expire idle admin sessions after a configurable period.
  - Renew active sessions on successful requests.

## P1

- Add drag-and-drop ordering for service cards.
  - Persist display order in the database.
  - Support moving a card up, down, or to the top in admin.
- Add a featured/pinned flag for important links.
  - Keep pinned links above the normal list.
  - Let admins toggle pinned status from the edit form.
- Add multi-category support.
  - Store categories as a normalized table or join table.
  - Allow filtering by more than one category in the dashboard.
- Add duplicate/cloning for existing links.
  - Pre-fill a new form from an existing service.
  - Keep the original service unchanged.
- Add a password autofill helper for first-run setup.
  - Offer a generated strong password suggestion on the setup screen.
  - Let the admin copy it or autofill the password fields.
- Add a public read-only mode.
  - Hide admin-only links from the dashboard.
  - Keep the same UI but remove edit affordances.

## P2

- Add JSON import/export for services.
  - Include metadata and icon blobs in the export format.
  - Support importing a whole dashboard from a single file.
- Add better icon handling.
  - Show initials when no icon exists.
  - Allow cropping or centering uploaded icons.
- Add audit history for admin changes.
  - Record create, update, delete, and preset actions.
  - Show a simple timeline in the admin area.
- Add a compact dashboard mode.
  - Reduce card padding and text size.
  - Make it easier to scan large lists of links.

## P3

- Add keyboard shortcuts for search and quick launch.
- Add a toast system for save, delete, and upload actions.
- Add Open Graph metadata for better link previews.
- Add structured JSON logging for auth and CRUD events.
- Add a CI verification step that builds the container image after publish.
