This project is a multi-page annual return form system built using Spring Boot, Thymeleaf, and HTMX. It supports dynamic form flows, year-specific validations, and server-driven UI updates with minimal JavaScript(I hate it)
- Multi-page form (10+ pages)
- Conditional navigation (next page based on user input)
- Supports various field types using GDS style
- Auto-save form state (session-based or temporary storage)
- Progress tracking (progress menu or breadcrumbs)
- Resume saved forms from session (?)
These features are planned for development after the MVD milestone is complete.
- Supports form logic changes based on version/year (e.g., 2024 vs 2025)
- Versioned page wording and validations using .property files(English and Welsh)
- Store version metadata with each form
- Per-field validation (client and server)
- Year-specific validation using Strategy/Factory pattern
- Inline error display using HTMX partials
- File upload validation (type/size restrictions)
- Thymeleaf templates per page (e.g.,
page1.html,page2.html) - Shared layout template (
layout.html) or extends - Reusable Thymeleaf fragments for inputs, footers, headers or blocks.
- Field-level validation without page reload
- Load next/previous pages without full reload
- Show/hide fields dynamically based on user input
- Update dropdowns/sections live via backend logic( Country list)
- Abstract base controller with shared page logic
- Year-specific page controllers
- File upload handler with multipart support
- Validator Strategy per year/page
- Validator Factory to return appropriate logic
- FormFlowEngine to handle navigation logic
- Unified
AnnualReturnFormmodel or per-page POJOs - Use of
@ModelAttribute,@Validated, andBindingResult
- CSRF protection enabled (Spring default)
- Session expiration handling
- Back-button and reload-friendly navigation
- Basic error handling (404, 500 pages)
- Responsive design (mobile-first)
- Unit tests for page validators
- Integration tests for form flow logic
- Manual browser-based testing of flows and validations or Selenium testing 🧪
- 🔁 Multi-user authentication with Spring Security and JWT
- 💾 Database persistence layer
- 📄 PDF export of completed return
- ⚙️ Admin UI for managing wording, validation rules, and FE components
-
- 🧠 AI support with common FAQ
- Java 21+
- Spring Boot 3
- Thymeleaf
- HTMX
- Gradle