Skip to content

Commit c9309a7

Browse files
baijumclaude
andcommitted
Clarify separate-repo-per-app model in docs
Update architecture, spec, and ecosystem docs to make explicit that each application is a separate GitHub repository under the towlion org. Split Docker Compose examples into platform-level (shared services) and per-repo (app containers) layers. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 789a169 commit c9309a7

3 files changed

Lines changed: 33 additions & 16 deletions

File tree

docs/architecture.md

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -213,28 +213,42 @@ Backups can be synced to remote storage using `rclone`.
213213

214214
## Docker Compose Services
215215

216-
A typical deployment defines these services:
216+
Each application lives in its own GitHub repository under the `towlion` organization. The server runs two layers of Compose services:
217+
218+
### Platform Services (server-level)
219+
220+
Shared infrastructure managed at the server level, independent of any application repository:
217221

218222
```yaml
219223
services:
220224
caddy:
221225
image: caddy:2
222-
app:
223-
build: ./app
224-
env_file: .env
225-
frontend:
226-
build: ./frontend
227226
postgres:
228227
image: postgres:16
229228
volumes:
230229
- /data/database:/var/lib/postgresql/data
231230
redis:
232231
image: redis
233-
celery-worker:
234-
build: ./app
235-
command: celery -A app.tasks worker
236232
minio:
237233
image: minio/minio
238234
volumes:
239235
- /data/minio:/data
240236
```
237+
238+
### Application Services (per-repo)
239+
240+
Each application repository defines its own containers. These connect to the shared platform services via Docker networking:
241+
242+
```yaml
243+
services:
244+
app:
245+
build: ./app
246+
env_file: .env
247+
frontend:
248+
build: ./frontend
249+
celery-worker:
250+
build: ./app
251+
command: celery -A app.tasks worker
252+
```
253+
254+
For single-app self-hosting (fork scenario), a repository may bundle platform services in its own Compose file so it can run standalone.

docs/ecosystem.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,11 @@ New apps are created by:
4343

4444
### Application Repositories
4545

46-
Individual deployable applications. Each one:
46+
Each application is a **separate GitHub repository** under the `towlion` organization. Each one:
4747

48-
- Is a standalone web application
49-
- Contains its own deployment workflow
50-
- Can be forked and self-hosted
48+
- Is a standalone web application in its own repo
49+
- Contains its own Docker configuration and deployment workflow
50+
- Can be forked and self-hosted independently
5151
- Follows the [application specification](spec.md)
5252

5353
## Multi-Application Runtime

docs/spec.md

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,17 @@ All applications must be:
1313

1414
## Repository Structure
1515

16-
Every application repository should follow this structure:
16+
Each application lives in its own GitHub repository under the `towlion` organization. Every application repository should follow this structure:
1717

1818
```
1919
repo/
2020
app/ # FastAPI backend
2121
frontend/ # Next.js frontend
2222
2323
deploy/
24-
docker-compose.yml
25-
Caddyfile
24+
docker-compose.yml # App-specific containers
25+
docker-compose.standalone.yml # Full stack for self-hosted forks
26+
Caddyfile # Caddy site config for this app
2627
env.template
2728
2829
.github/workflows/
@@ -34,6 +35,8 @@ repo/
3435
README.md
3536
```
3637

38+
In the multi-app setup, `docker-compose.yml` defines only the application containers (app, frontend, workers). Shared platform services (Caddy, PostgreSQL, Redis, MinIO) are managed at the server level. The `docker-compose.standalone.yml` file bundles everything for self-hosted fork deployments.
39+
3740
## Backend Requirements
3841

3942
Applications must expose an HTTP server on **port 8000**.

0 commit comments

Comments
 (0)