← Terug naar projecten

Portfolio Website

Deze responsive portfolio website gebouwd met vanilla PHP en moderne CSS. Features include project showcase, skill tracking en contact form.

Roadmap TODOs

51 open ยท 55 totaal ยท gesynchroniseerd op 21/06/2026 01:43

51 open 55 items
โ—‹ (security): done - Enforce secure session cookie flags (httponly, secure, samesite). :9
โ—‹ (auth): done - Added router-level admin guard as defense-in-depth for guessed admin URLs. :31
โ—‹ (ops): done - maintenance_mode gate added; public visitors see maintenance.php; admins/owners bypass it. :55
โ—‹ (test): done - mismatched-extension case added: file named .jpg with PNG bytes must produce .png filename. :5
โ—‹ (test): done - retry/backoff tests added: service retries on 5xx, does NOT retry on 4xx. :5
โ—‹ (auth): done - Enforce admin/owner-only access for admin routes. :116
โ—‹ (csrf): done - rotateCsrf() implemented; wire into each sensitive handler. :201
โ—‹ (auth): done - Require admin role for all admin sections except login/logout/setup. :91
โ—‹ (security): done - Added basic login throttling for admin login attempts. :218
โ—‹ (admin): [P3] show per-project sync result detail on sync-all completion page :754 p3
โ—‹ (email): [P3] replace plain-text replies with reusable HTML email templates for consistent branding and readability. :1000 p3
โ—‹ (upload): done - MIME validated via finfo and extension derived from MIME map, not from the original filename. :1660
โ—‹ (roadmap): [P3] keep source line numbers to improve traceability in roadmap UI. :2589 p3
โ—‹ (security): done - Fallback cookie flags for direct controller entry points. :8
โ—‹ (settings): done - contact_form_enabled gate respected; shows disabled-state when setting is off. :214
โ—‹ (download): Replace the placeholder CV PDF with the real file and verify the download route. :326
โ—‹ (news): Verify comment post/refresh flow so new comments are visible immediately after submit. :389
โ—‹ (profile): done - Reintroduced user settings page (language/public profile + skills management). :467
โ—‹ (profile): done - Added missing email notification preference in user settings migration. :555
โ—‹ (profile): [P3] add optional timezone setting support (users.timezone) and persist it in updateSettings(). :556 p3
โ—‹ (security): done - Validate login redirect as internal-only URL. :575
โ—‹ (security): done - Added basic login throttling for public login attempts. :726
โ—‹ (cron): done - last-run guard queries MAX(created_at) from project_sync_log; refuses if < 60 min ago. :1221
โ—‹ (performance): done - tags loaded in a single batch query instead of one query per news item. :38
โ—‹ (security): done - safeDelete() verifies realpath stays inside uploads/news/ before unlink. :226
โ—‹ (security): done - safeDelete() verifies realpath stays inside uploads/projects/ before unlink. :211
โ—‹ (gallery): [P2] add drag-and-drop sort_order reordering in admin edit view :260 p2
โ—‹ (security): done - safeDelete() verifies realpath stays inside uploads/projects/ before unlink. :282
โ—‹ items that are synced from ReadmeSync.API. :5
โ—‹ item (file, line, text, status, priority) :8
โ—‹ (roadmap): done - preserve manually-set 'done' status across syncs; existing done rows are kept done unless item disappears. :160
โ—‹ (roadmap): done - diff counters (new/kept/removed) now tracked and returned for the sync-all result page. :161
โ—‹ (profile): [P3] include users.timezone in this query after timezone migration lands. :30 p3
โ—‹ (profile): [P3] extend this update with timezone column once users.timezone migration is added. :95 p3
โ—‹ items. :5
โ—‹ (roadmap): done - callApi() retries up to 3 times with exponential backoff (0/400/1200 ms) on HTTP โ‰ฅ500 or transport errors; bails immediately on 4xx. :117
โ—‹ (i18n): done - hardcoded E-mail/LinkedIn/GitHub headings and PDF suffix replaced with trans() keys. ?> :14
โ—‹ (dev-life): Deduplicate repeated Dev Life entries and trim misleading level labels. ?> :8
โ—‹ (dev-life): Fill or remove the blank Education & Certificates and Current Learning Goals sections. ?> :9
โ—‹ (content): Replace the placeholder FAQ content or remove the FAQ section entirely. ?> :1
โœ“ (responsive): [P2][done] Prevent long usernames from breaking navbar layout on standard screens. :15
โ—‹ (nav): done - Games removed from nav while section is WIP; route still works for direct access. ?> :45
โ—‹ (arch): [P2] this DB query runs inside the view on every page load for logged-in users. :58 p2
โ—‹ (ui): done - footer mail button guarded; hides when PORTFOLIO_CONTACT_EMAIL env is empty. ?> :151
โ—‹ (ui): Refine auth heading and input contrast on login/register pages. ?> :60
โœ“ (roadmap-ui): [P2][done] Improve roadmap item readability in dark theme and keep cards fully responsive. :6
โœ“ (roadmap-ui): [P2][done] Show explicit P2/P3 priority badges in project roadmap detail view. :7
โ—‹ (projects): Remove or replace the Portfolio Website demo link and use a real website screenshot instead of Minecraft art. ?> :48
โ—‹ (ux): [P3] '/blob/main/' is hardcoded โ€” repos may use 'master' or :144 p3
โ—‹ list :452
โ—‹ (ui): done - Live badge removed from ReadmeSync header. ?> :5
โ—‹ (auth): Replace full-name registration with username-based signup and revisit forgot-password / delete-account-data flows. ?> :24
โ—‹ (ui): Refine auth heading and input contrast on login/register pages. ?> :74
โœ“ (responsive): [P2][done] Keep admin sidebar navigation scrollable without overlapping footer items. :15
โ—‹ (profile): Reconcile public settings with admin profile settings so duplicated controls have one clear source of truth. ?> :5