3.0 KiB
3.0 KiB
TODO
Concrete follow-up work for Jellomator, prioritized by implementation risk and user impact.
P0 - Security and Reliability
- Add session expiry and rotation.
- Add
expires_atandlast_seen_attosessions. - Reject expired tokens in
current_user. - Rotate session token on login and periodically on use.
- Add
- Harden auth endpoints.
- Add login rate limiting by IP + username pair.
- Add brute-force lockout window with clear error message.
- Add optional CSRF protection for cookie-authenticated write routes.
- Fix cookie/security defaults for deployment.
- Set cookie
securefrom environment (true in production). - Make cookie max-age configurable.
- Keep
httponlyandsamesite=lax.
- Set cookie
- Add input and payload validation.
- Validate URL scheme for links (
http/httpsonly). - Enforce max lengths for
name,category,description, andicon_url. - Validate uploaded icon type and max file size before reading blob.
- Validate URL scheme for links (
- Add health/readiness endpoints.
/healthzreturns200when process is up./readyzchecks DB query + optional write test and returns503on failure.
P1 - Data Model and Backend Quality
- Replace string timestamps with DB-native datetime.
- Migrate
created_at/updated_atcolumns fromvarchartodatetime. - Use UTC consistently for writes and reads.
- Migrate
- Add display ordering support.
- Add
sort_ordercolumn and stable ordering fallback byname. - Update read query to order by
enabled desc,sort_order,name.
- Add
- Remove duplicate connection pattern in create flow.
- Use one DB transaction/connection per request path where possible.
- Add backup and restore flow in admin API/UI.
- Download full export.
- Upload validated import with explicit confirmation.
- Add dry-run validation mode before apply.
- Add structured logging.
- Log auth attempts, CRUD actions, and restore events with request IDs.
P2 - UX and Product Improvements
- Replace browser
alert()with inline form errors/toasts.- Show server errors near submit controls.
- Add success toasts for create/update/delete.
- Remove forced reload in auth forms.
- Replace
location.reload()with state refresh only. - Keep SPA navigation predictable on setup/login/logout.
- Replace
- Add drag-and-drop ordering in admin.
- Persist
sort_orderupdates. - Provide keyboard-accessible move controls as fallback.
- Persist
- Add duplicate/cloning for links.
- Pre-fill form from an existing link.
- Save as new record with unique name validation.
- Add public read-only mode toggle.
- Hide admin entry points and editing affordances for non-admin view.
P3 - Nice-to-Have
- Add multi-category support with normalization.
- Add audit history timeline in admin.
- Add JSON import/export for services with icons.
- Add keyboard shortcuts for search/quick launch.
- Add Open Graph metadata and richer SEO tags.
- Add CI verification that builds container image for pull requests.