# Repository Guidelines

This repository contains a Java 8, multi-module Spring Boot backend plus a separate Vue 2 (Vue CLI) admin UI.

## Project Structure & Module Organization

- Backend parent: `pom.xml` (aggregates the Maven modules).
- Backend modules live under `jsowell-*/`.
  - Entry point/service: `jsowell-admin/` (Spring Boot app).
  - Shared/core: `jsowell-common/`, `jsowell-framework/`, `jsowell-system/`.
  - Business/integrations: `jsowell-pile/`, `jsowell-netty/`, `jsowell-thirdparty/`, plus schedulers/generator/settlement modules.
- UI: `jsowell-ui/` (not part of the Maven build). Code is in `jsowell-ui/src/`, static assets in `jsowell-ui/public/`.
- Reference material: `doc/`, `docs/`; database scripts: `sql/`; helper batch scripts: `bin/`.

## Build, Test, and Development Commands

Backend (from repo root):
- `mvn clean compile`: compile all modules.
- `mvn clean package -DskipTests` (or `bin\\package.bat`): build artifacts.
- `mvn test` (or `mvn -pl jsowell-admin test`): run backend tests.
- `mvn -pl jsowell-admin spring-boot:run -Dspring-boot.run.profiles=dev`: run the API locally.

UI (from `jsowell-ui/`):
- `npm run dev`: start dev server (uses `jsowell-ui/.env.*` modes).
- `npm run build:prd`: production build.
- `npm run lint`: ESLint on `src/`.

## Coding Style & Naming Conventions

- Java: follow existing conventions (4 spaces; `PascalCase` types; `camelCase` methods; `UPPER_SNAKE_CASE` constants). Keep changes scoped to one module when possible.
- UI: follow `jsowell-ui/.editorconfig` + `jsowell-ui/.eslintrc.js` (2 spaces, single quotes, no semicolons). Run `npm run lint` before PRs.

## Testing Guidelines

- Backend tests are primarily in `jsowell-admin/src/test/java` and use Spring Boot + JUnit.
- Prefer `*Test.java` naming and avoid tests that depend on external services unless clearly marked/configured.

## Commit & Pull Request Guidelines

- Commit subjects commonly use short prefixes: `add ...`, `update ...`, `bugfix ...`. Keep them under ~72 chars; add module context when helpful (example: `jsowell-ui: update login flow`).
- PRs should target `dev` unless agreed otherwise, include a clear description, and link the relevant issue/ticket.
- Include screenshots for UI changes and migration notes for DB/API changes (`sql/`, request/response examples).

## Security & Configuration Notes

- Environment config lives in `jsowell-admin/src/main/resources/application-*.yml` and `jsowell-ui/.env.*`.
- Do not commit real secrets/keys; use placeholders and local overrides.
- See `CLAUDE.md` for deeper architecture and operational notes.
