docs(legibility): write human-targeted README.md at repo root — DOC-1 #440
93
README.md
Normal file
93
README.md
Normal file
@@ -0,0 +1,93 @@
|
||||
# Familienarchiv
|
||||
|
||||
Familienarchiv is a private web application for digitising, organising, and searching a family document collection — letters, postcards, and photographs from 1899 to 1950. Family members upload scans, transcribe handwritten text (Kurrent/Sütterlin), and read the archive from any device.
|
||||
|
||||
---
|
||||
|
||||
## Subsystems
|
||||
|
||||
- `frontend/` — SvelteKit 2 / Svelte 5 / TypeScript / Tailwind 4 web app (server-side rendered)
|
||||
- `backend/` — Spring Boot 4 (Java 21) REST API; handles documents, persons, search, and user management
|
||||
- `ocr-service/` — Python FastAPI microservice for OCR and handwritten text recognition (HTR); single-node by design — see [ADR-001](docs/adr/001-ocr-python-microservice.md). Not part of the default dev stack (see Quick start below)
|
||||
- `infra/` — Gitea Actions CI/CD config; future home for infrastructure-as-code
|
||||
- `scripts/` — operational and data-pipeline helpers (`reset-db.sh`, `clean-e2e-data.sh`, import scripts)
|
||||
|
||||
---
|
||||
|
||||
## Quick start
|
||||
|
||||
**Prerequisites:** Java 21, Node 24, Docker with the `docker compose` plugin (V2).
|
||||
|
||||
### 1. Configure environment
|
||||
|
||||
```bash
|
||||
cp .env.example .env
|
||||
# The defaults in .env.example work for local development without changes.
|
||||
```
|
||||
|
||||
### 2. Start infrastructure
|
||||
|
||||
```bash
|
||||
# Starts PostgreSQL, MinIO (object storage), and Mailpit (dev mail catcher)
|
||||
docker compose up -d db minio mailpit
|
||||
```
|
||||
|
||||
### 3. Start the backend
|
||||
|
||||
```bash
|
||||
cd backend
|
||||
./mvnw spring-boot:run
|
||||
# Starts on http://localhost:8080
|
||||
# API docs (dev profile, auto-enabled): http://localhost:8080/v3/api-docs
|
||||
```
|
||||
|
||||
### 4. Start the frontend
|
||||
|
||||
```bash
|
||||
cd frontend
|
||||
npm install
|
||||
npm run dev
|
||||
# Starts on http://localhost:5173
|
||||
```
|
||||
|
||||
Open **http://localhost:5173** — you should see the Familienarchiv login screen.
|
||||
|
||||
Default development credentials:
|
||||
|
||||
```
|
||||
# local dev only — change before any network-exposed deployment
|
||||
Email: admin@familyarchive.local
|
||||
Password: admin123
|
||||
```
|
||||
|
||||
> **Development setup only.** The default `docker compose` config exposes the database port and uses root MinIO credentials. Do not connect this to a network without first reading `docs/DEPLOYMENT.md` _(coming: [DOC-5, #399](http://heim-nas:3005/marcel/familienarchiv/issues/399))_.
|
||||
|
||||
### Running the full stack via Docker (optional)
|
||||
|
||||
To run everything including the backend and frontend in containers:
|
||||
|
||||
```bash
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
Note: the OCR service (`ocr-service/`) builds its Docker image locally and downloads ~6 GB of ML models on first start. Expect 30–60 minutes on a first run. The rest of the stack starts independently; OCR can be excluded with `--scale ocr-service=0` on memory-constrained machines (requires ≥ 12 GB RAM).
|
||||
|
||||
---
|
||||
|
||||
## Where to go next
|
||||
|
||||
| Resource | Purpose |
|
||||
|---|---|
|
||||
| [docs/architecture/c4-diagrams.md](docs/architecture/c4-diagrams.md) | C4 container and component diagrams (current system view) |
|
||||
| [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) _(coming: [DOC-2, #396](http://heim-nas:3005/marcel/familienarchiv/issues/396))_ | Full architecture guide with domain list |
|
||||
| [docs/GLOSSARY.md](docs/GLOSSARY.md) | Overloaded terms: Person vs AppUser, Chronik vs Aktivität, etc. |
|
||||
| [CONTRIBUTING.md](CONTRIBUTING.md) _(coming: [DOC-4, #398](http://heim-nas:3005/marcel/familienarchiv/issues/398))_ | How to add a domain, endpoint, or SvelteKit route |
|
||||
| [docs/DEPLOYMENT.md](docs/DEPLOYMENT.md) _(coming: [DOC-5, #399](http://heim-nas:3005/marcel/familienarchiv/issues/399))_ | Production deployment checklist and secrets guide |
|
||||
| [docs/adr/](docs/adr/) | Architecture Decision Records — the "why" behind key choices |
|
||||
| [Gitea issue tracker](http://heim-nas:3005/marcel/familienarchiv/issues) _(internal — home network only)_ | Bug reports, feature requests, and project planning |
|
||||
|
||||
---
|
||||
|
||||
## License
|
||||
|
||||
Private project — all rights reserved. Not licensed for redistribution.
|
||||
Reference in New Issue
Block a user