docs: update README for Gradle at root, add convenience task docs
Update all references to match the new repo-root Gradle layout after moving the wrapper out of backend/. - Quick Start: add ./gradlew up alternative and hint at ./gradlew check - Spring profiles: ./gradlew bootRun → ./gradlew :backend:bootRun - Development section: add All-in-one subsection with check/up/down/reset - Backend dev: cd backend && ./gradlew bootRun → ./gradlew :backend:bootRun - Development vs Production table: ./gradlew bootRun → ./gradlew :backend:bootRun - Project Structure tree: add gradlew, gradle/, settings.gradle, build.gradle - Remove ARCHITECTURE.md reference (file never existed) - Add Database reset section with ./gradlew reset Also add .gradle/ and build/ to .gitignore with gradle-wrapper.jar exception (was staged but not committed with previous refactor).
This commit is contained in:
parent
d70196112d
commit
c7d443f236
2 changed files with 29 additions and 11 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -10,6 +10,7 @@ target/
|
||||||
*.jar
|
*.jar
|
||||||
*.war
|
*.war
|
||||||
!.mvn/wrapper/maven-wrapper.jar
|
!.mvn/wrapper/maven-wrapper.jar
|
||||||
|
!gradle/wrapper/gradle-wrapper.jar
|
||||||
|
|
||||||
# Environment
|
# Environment
|
||||||
.env
|
.env
|
||||||
|
|
|
||||||
39
README.md
39
README.md
|
|
@ -34,7 +34,7 @@ The user enters a registration number, composes a letter (from a template or fre
|
||||||
git clone <repo-url> bilhej
|
git clone <repo-url> bilhej
|
||||||
cd bilhej
|
cd bilhej
|
||||||
cp .env.example .env # fill in your keys
|
cp .env.example .env # fill in your keys
|
||||||
docker compose up -d
|
docker compose up -d # or: ./gradlew up
|
||||||
```
|
```
|
||||||
|
|
||||||
The app will be available at:
|
The app will be available at:
|
||||||
|
|
@ -72,7 +72,7 @@ No CORS configuration needed in development — the browser never calls the back
|
||||||
**Spring profiles:**
|
**Spring profiles:**
|
||||||
| Profile | Datasource | Use |
|
| Profile | Datasource | Use |
|
||||||
|---------|-----------|-----|
|
|---------|-----------|-----|
|
||||||
| default | H2 in-memory | Local IDE dev (`./gradlew bootRun`) |
|
| default | H2 in-memory | Local IDE dev (`./gradlew :backend:bootRun`) |
|
||||||
| `docker` | PostgreSQL via `docker-compose.yml` | Docker Compose dev |
|
| `docker` | PostgreSQL via `docker-compose.yml` | Docker Compose dev |
|
||||||
| `prod` | PostgreSQL (production config) | Deploy (`docker-compose.prod.yml`) |
|
| `prod` | PostgreSQL (production config) | Deploy (`docker-compose.prod.yml`) |
|
||||||
|
|
||||||
|
|
@ -130,17 +130,21 @@ bilhej/
|
||||||
├── docker-compose.yml # dev: postgres + backend (bootRun) + frontend (Vite HMR)
|
├── docker-compose.yml # dev: postgres + backend (bootRun) + frontend (Vite HMR)
|
||||||
├── docker-compose.prod.yml # prod: multi-stage builds, no source mounts, restart: unless-stopped
|
├── docker-compose.prod.yml # prod: multi-stage builds, no source mounts, restart: unless-stopped
|
||||||
├── docker/
|
├── docker/
|
||||||
│ ├── backend.Dockerfile # dev: JDK + gradle bootRun
|
│ ├── backend.Dockerfile # dev: JDK + gradle :backend:bootRun
|
||||||
│ ├── backend.prod.Dockerfile # prod: multi-stage (Gradle → JRE Alpine, non-root)
|
│ ├── backend.prod.Dockerfile # prod: multi-stage (Gradle → JRE Alpine, non-root)
|
||||||
│ ├── frontend.Dockerfile # dev: Node + vite dev server
|
│ ├── frontend.Dockerfile # dev: Node + vite dev server
|
||||||
│ ├── frontend.prod.Dockerfile # prod: multi-stage (Node → nginx)
|
│ ├── frontend.prod.Dockerfile # prod: multi-stage (Node → nginx)
|
||||||
│ ├── nginx.conf # prod: SPA fallback + /api proxy
|
│ ├── nginx.conf # prod: SPA fallback + /api proxy
|
||||||
│ └── entrypoint.sh # prod: self-signed cert generation
|
│ └── entrypoint.sh # prod: self-signed cert generation
|
||||||
|
├── gradlew # Gradle wrapper (run from repo root)
|
||||||
|
├── gradle/
|
||||||
|
│ └── wrapper/
|
||||||
|
├── settings.gradle # rootProject.name + include 'backend'
|
||||||
|
├── build.gradle # convenience tasks: check, up, down, reset
|
||||||
├── .env.example
|
├── .env.example
|
||||||
├── README.md
|
├── README.md
|
||||||
├── REQUIREMENTS.md
|
├── REQUIREMENTS.md
|
||||||
├── CODING_GUIDELINES.md
|
└── CODING_GUIDELINES.md
|
||||||
└── ARCHITECTURE.md
|
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
@ -149,7 +153,7 @@ bilhej/
|
||||||
|
|
||||||
| Aspect | `docker compose up -d` | `docker compose -f docker-compose.prod.yml up -d` |
|
| Aspect | `docker compose up -d` | `docker compose -f docker-compose.prod.yml up -d` |
|
||||||
|--------|------------------------|---------------------------------------------------|
|
|--------|------------------------|---------------------------------------------------|
|
||||||
| Backend | `./gradlew bootRun` (compiles on change) | Multi-stage build → `java -jar app.jar` |
|
| Backend | `./gradlew :backend:bootRun` (compiles on change) | Multi-stage build → `java -jar app.jar` |
|
||||||
| Backend image | `eclipse-temurin:21-jdk` (~400 MB) | `eclipse-temurin:21-jre-alpine` (~200 MB) |
|
| Backend image | `eclipse-temurin:21-jdk` (~400 MB) | `eclipse-temurin:21-jre-alpine` (~200 MB) |
|
||||||
| Backend user | root | `bilhej` (non-root) |
|
| Backend user | root | `bilhej` (non-root) |
|
||||||
| Frontend | Vite dev server (HMR, `--host 0.0.0.0`) | nginx serving static `dist/` |
|
| Frontend | Vite dev server (HMR, `--host 0.0.0.0`) | nginx serving static `dist/` |
|
||||||
|
|
@ -163,19 +167,27 @@ bilhej/
|
||||||
|
|
||||||
## Development
|
## Development
|
||||||
|
|
||||||
|
### All-in-one (from repo root)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./gradlew check # lint → frontend test → backend test → integration test
|
||||||
|
./gradlew up # docker compose up -d
|
||||||
|
./gradlew down # docker compose down
|
||||||
|
./gradlew reset # docker compose down -v && docker compose up -d (full DB reset)
|
||||||
|
```
|
||||||
|
|
||||||
### Frontend (dev server with HMR)
|
### Frontend (dev server with HMR)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd frontend
|
cd frontend
|
||||||
npm install
|
npm install # first time only
|
||||||
npm run dev
|
npm run dev # :3000 with HMR
|
||||||
```
|
```
|
||||||
|
|
||||||
### Backend (IDE or CLI)
|
### Backend (IDE or CLI)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd backend
|
./gradlew :backend:bootRun # :8080, profile: default (H2)
|
||||||
./gradlew bootRun
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Stripe Webhooks (local testing)
|
### Stripe Webhooks (local testing)
|
||||||
|
|
@ -184,10 +196,15 @@ cd backend
|
||||||
stripe listen --forward-to localhost:8080/api/webhooks/stripe
|
stripe listen --forward-to localhost:8080/api/webhooks/stripe
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Database reset
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./gradlew reset # wipes DB volume and restarts containers
|
||||||
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Related Documents
|
## Related Documents
|
||||||
|
|
||||||
- [REQUIREMENTS.md](./REQUIREMENTS.md) — Full product requirements and business model
|
- [REQUIREMENTS.md](./REQUIREMENTS.md) — Full product requirements and business model
|
||||||
- [CODING_GUIDELINES.md](./CODING_GUIDELINES.md) — Code conventions and standards
|
- [CODING_GUIDELINES.md](./CODING_GUIDELINES.md) — Code conventions and standards
|
||||||
- [ARCHITECTURE.md](./ARCHITECTURE.md) — Detailed architecture and data flow
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue