* feat: Add book ratings and reviews managed via Directus CMS
Adds a new "Read Books" section below "Currently Reading" in the About
page. Book reviews with star ratings and comments are fetched from a
Directus CMS collection (book_reviews) and displayed with the existing
liquid design system. Includes i18n support (EN/DE), show more/less
toggle, and graceful fallback when the CMS collection does not exist yet.
https://claude.ai/code/session_017E8W9CcHFM5WQVHw74JP34
* chore: Add CLAUDE.md, TODO.md, and fix ReadBooks Tailwind classes
- Add CLAUDE.md with project architecture, conventions, and common tasks
- Add TODO.md with prioritized roadmap (book reviews, CMS, n8n, frontend)
- Fix invalid Tailwind classes in ReadBooks.tsx (h-30 -> h-[7.5rem], w-22 -> w-24)
https://claude.ai/code/session_017E8W9CcHFM5WQVHw74JP34
---------
Co-authored-by: Claude <noreply@anthropic.com>
Adds a new "Read Books" section below "Currently Reading" in the About
page. Book reviews with star ratings and comments are fetched from a
Directus CMS collection (book_reviews) and displayed with the existing
liquid design system. Includes i18n support (EN/DE), show more/less
toggle, and graceful fallback when the CMS collection does not exist yet.
https://claude.ai/code/session_017E8W9CcHFM5WQVHw74JP34
* Fix ActivityFeed: Remove dynamic import that was causing it to disappear in production
* Fix ActivityFeed hydration error: Move localStorage read to useEffect to prevent server/client mismatch
* Update Node.js version to 25 in Gitea workflows
- Fix EBADENGINE error for camera-controls@3.1.2 which requires Node.js >=22
- Update production-deploy.yml, dev-deploy.yml, and ci-cd-with-gitea-vars.yml.disabled
- Node.js v25 matches local development environment
* Update Dockerfile to use Node.js 25
- Update base image from node:20 to node:25
- Matches Gitea workflow configuration and camera-controls@3.1.2 requirements
* Fix production deployment: Start database dependencies
- Remove --no-deps flag which prevented postgres and redis from starting
- Remove --build flag as image is already built in previous step
- This fixes 'Can't reach database server at postgres:5432' error
* Fix postgres health check in production
- Remove init-db.sql volume mount (not available in CI/CD environment)
- Init script not needed as Prisma handles schema migrations
- Postgres will initialize empty database automatically
* Fix cache permission error in Docker container
- Create cache directories AFTER copying standalone files
- Create both fetch-cache and images subdirectories
- Set proper ownership for nextjs user
- Fixes EACCES permission denied errors for prerender cache
* Fix German jogging fallback text
* Use Directus content in production
* fix: Security vulnerability - block malicious file requests
* fix: Switch projects to Directus, add security fixes and example projects
- Create cache directories AFTER copying standalone files
- Create both fetch-cache and images subdirectories
- Set proper ownership for nextjs user
- Fixes EACCES permission denied errors for prerender cache
- Remove init-db.sql volume mount (not available in CI/CD environment)
- Init script not needed as Prisma handles schema migrations
- Postgres will initialize empty database automatically
- Remove --no-deps flag which prevented postgres and redis from starting
- Remove --build flag as image is already built in previous step
- This fixes 'Can't reach database server at postgres:5432' error
- Fix EBADENGINE error for camera-controls@3.1.2 which requires Node.js >=22
- Update production-deploy.yml, dev-deploy.yml, and ci-cd-with-gitea-vars.yml.disabled
- Node.js v25 matches local development environment
- Added ShaderGradientBackground component with 3 animated spheres
- Enhanced glass effects with backdrop-blur across all text surfaces
- Improved readability while maintaining colored borders
- Adjusted animation speed and movement parameters for optimal effect
- Installed @shadergradient/react, three, and @types/three
- Created ShaderGradientBackground component with custom gradient settings
- Integrated background into root layout with blur effect (120px) and reduced opacity (0.5)
- Adjusted body background to work harmoniously with shader gradient
- Used sphere type with pink/orange gradient colors (#b01040, #b04a17, #e167c5)
- Configured animation, grain, and lighting for atmospheric effect
- Created setup-directus-collections.js to automate the creation of tech stack collections, fields, and relations in Directus.
- Created setup-directus-hobbies.js for setting up hobbies collection with translations.
- Created setup-directus-projects.js for establishing projects collection with comprehensive fields and translations.
- Added setup-tech-stack-directus.js to populate tech_stack_items with predefined data.
- Removed POSTGRES_HOST_AUTH_METHOD for enhanced security, reverting to default password authentication.
- Eliminated init-db.sql mount, as database initialization is now handled via environment variables, with additional grants managed through Prisma migrations if necessary.
- Improved container management by stopping and removing existing containers before starting new ones to ensure a clean environment.
- Added logic to remove old images and pull new ones to match the current architecture.
- Enhanced feedback messages for better clarity during the deployment process.
- Added logic to start PostgreSQL and Redis containers if they are not already running.
- Implemented checks to ensure the existence of necessary Docker networks.
- Updated environment variables for database and Redis connections.
- Improved feedback messages for better clarity during the deployment process.
- Added a new script for database migration to the Docker image.
- Adjusted Dockerfile to create the scripts directory and copy the migration script with the correct permissions.
- Enhanced the Gitea deployment workflow to ensure the proxy network exists before starting the container.
- Enhanced the deployment script to better handle port conflicts by checking for both Docker containers and non-Docker processes using the specified health port.
- Added logic to wait for the port to be released and attempt to use an alternative port if the original is still in use after a timeout.
- Improved feedback messages for better clarity during the deployment process.
- Updated deployment script to check for existing containers and free ports before starting a new container.
- Added a new script to check the status of the Gitea runner, including service checks, running processes, Docker containers, common directories, and network connections.
- Add CurrentlyReading component with beautiful design
- Integrate into About section
- Add German and English translations
- Add n8n API route for Hardcover integration
- Add comprehensive documentation for n8n setup