This document provides a deeper look at the system architecture, control flow, and resource organization of ParlaChore.
It complements the high-level overview in README.md.
src/main/java/com/parlAquatics/parlaChore
├── ParlaChoreLauncher.java # Spring Boot entry point
├── component
│ └── DatabaseConduit.java # Database connection abstraction
├── controller # MVC controllers
│ ├── ChoreController.java
│ ├── DashboardController.java
│ ├── LandingController.java
│ └── SettingsController.java
├── dto # Data Transfer Objects
│ ├── AccountDTO.java
│ ├── AccountSettingsDTO.java
│ ├── ParlaPalSettingsDTO.java
│ └── RegistrationFormDTO.java
├── entity # JPA entities
│ ├── Account.java
│ ├── Chore.java
│ ├── ParlaPal.java
│ └── Reward.java
├── handlers # Authentication & error handling
│ ├── CustomAuthenticationFailureHandler.java
│ ├── CustomAuthenticationSuccessHandler.java
│ └── GlobalErrorHandler.java
├── repository # Spring Data repositories
│ ├── AccountRepository.java
│ ├── ChoreRepository.java
│ └── ParlaPalRepository.java
├── service # Business logic layer
│ ├── AccountService.java
│ ├── ChoreService.java
│ ├── ParlaPalService.java
│ └── ThemeAssetService.java
└── util # Utilities & configuration
├── SecurityConfig.java
├── WebConfig.java
└── deepUtil/
├── HtmlSanitizer.java
├── TokenUtils.java
├── LogUtils.java
└── DateTimeUtils.java
POST /api/chores → create(Chore)GET /api/chores → getAll()GET /dashboard → dashboardHome(Model, Account)GET /index or / → landing(Model, Authentication)GET /register → register(Model, Authentication)POST /account/register → handleRegister(RegistrationFormDTO, …)GET /login, /logout, /error, /privacy, /feedback, /price, /terms, /lost-passwordGET /partials/{page} → partial(String, Model, Authentication)GET /verify-email → verifyEmail(Model, Authentication)GET /account-administration → accountAdmin(Model, Authentication)GET /settings → showSettings(Model, AccountDTO)POST /settings/api/account → updateAccountSettingsJson(AccountSettingsDTO, Account)GET /settings/api → getAccountSettings(Account)GET /settings/api/parlapals → getParlaPals(Account)POST /settings/api/parlapals → createParlaPal(ParlaPalSettingsDTO, Account)GET /settings/api/parlapal/{id} → getParlaPalSettings(Long, Account)POST /settings/api/parlapal/{id} → updateParlaPalSettings(Long, …)DELETE /settings/api/parlapal/{id} → deleteParlaPal(Long, Account)POST /settings/api/parlapal/{id}/validate-pin → validatePin(Long, Map, Account)POST /settings/api/parlapal/{id}/pin → updatePin(Long, Map, Account)GET /settings/api/theme-assets → getThemeAssets()/partials/{page}.LogUtils./resources/static/css, /resources/static/js, /resources/static/images/resources/templates (Thymeleaf shells, partials, fragments)/resources/static/images/themes/{family}/ (avatars + backgrounds)/logs/ (developer-only, lifecycle events)ChoreType, RewardType, Role) model domain concepts alongside Java classes.application.yml.Created by Sam Parlatore
GitHub: github.com/samparlatore