Introduces a new /pdf route to handle PDF generation.
Updates src/index.tsx to integrate the new PDF route.
Bumps puppeteer, tailwindcss, elysia, typed-html, and sortablejs dependencies in package.json and bun.lock.
These updates support the new PDF generation functionality.
Introduces drag-and-drop functionality for Experience and Education entries in the admin dashboard
using SortableJS, along with collapsible forms powered by Alpine.js. Ensures live updates via HTMX.
Refines both public site and admin dashboard UI:
- Public site: Role/Degree are more prominent, Company/Institution highlight on hover.
- Admin dashboard: Headers display Role/Degree as primary and include date ranges.
Addresses backend needs by re-introducing 'display_order' to the database schema and
updating queries and mutations for proper reordering.
Fixes:
- Resolved 'invalid_grant' Keycloak error by correcting PKCE code verifier generation.
- Corrected database query parameter passing to fix text field clearing on form save.
- Fixed JSX parsing errors with Alpine.js attributes by using full syntax and spread operator.
- Resolved DOMTokenList whitespace error in SortableJS ghostClass.
- Fixed SortableJS initialization and drag events to ensure visual reordering.
Integrates Keycloak for secure administrator authentication using Arctic.
Introduces a full CMS dashboard for managing CV content, supporting multi-language editing for profile, experience, and education sections.
Refactors application routes for modularity and adds initial unit tests for database queries.
Also includes minor UI/UX refinements, animation setup, and local Keycloak docker-compose configuration.
Fixes:
- Corrected KeyCloak import.
- Restored missing getEducation function.
- Ensured proper HTTP redirects.
- Fixed PKCE code verifier length.