When pathname is '/', Layout now renders only the Outlet without its
own header/footer chrome, so the landing page's self-contained layout
displays correctly.
- Add new landing page with particle animation system
- Implement "Tech Weave" aesthetic with cyan/violet gradient theme
- Update fonts to Syne (headings) and IBM Plex Sans (body)
- Create hero section with search bar and CTA buttons
- Add feature showcase with 6 core capabilities
- Include stats display and call-to-action section
- Update routing to use landing page as homepage
- Keep original home page accessible at /skills route
Design highlights:
- Canvas-based particle connection animation (80 nodes)
- Dark theme with gradient effects and glow orbs
- Smooth fade-up animations with staggered delays
- Hover effects on cards and buttons
- Responsive layout for mobile/tablet/desktop
- IdempotencyInterceptor: restructure Redis check to avoid swallowing
exceptions inside try-catch, use ApiResponse envelope for 409 response
- IdempotencyInterceptorTest: register JavaTimeModule for Instant
serialization, align mocks with actual implementation
- SkillRatingServiceTest: update expected exception type to match
DomainBadRequestException used in entity and service
- Add rating value validation in SkillRating entity
- Improve SkillRatingService error handling
- Add SkillPublishService and SkillQueryService test coverage
Add dev-all/dev-all-down for starting full local environment with
health checks. Fix dev-server to target skillhub-app module. Remove
unused prod-up/prod-down/logs targets.
- Add admin users management page with role and status controls
- Add audit log page with filtering capabilities
- Create useAdminUsers and useAuditLog hooks for API integration
- Add route guards for USER_ADMIN, AUDITOR, and SUPER_ADMIN roles
- Register /admin/users and /admin/audit-log routes
- Add IdempotencyRecord entity with status tracking (PROCESSING/COMPLETED/FAILED)
- Implement IdempotencyInterceptor for request deduplication via X-Request-Id header
- Add scheduled cleanup tasks for expired and stale idempotency records
- Create admin API endpoints for user management (list/update role/update status)
- Create admin API endpoints for audit log viewing with filtering
- Add comprehensive unit tests for all components
- Configure test Redis mocks to support idempotency layer