@@ -0,0 +1,57 @@
|
||||
# Swansea Airport Website
|
||||
|
||||
Production-ready airfield website stack built with Astro, Directus, PostgreSQL, and Docker Compose.
|
||||
|
||||
## Local setup
|
||||
|
||||
1. Copy `.env.example` to `.env` and fill in the values.
|
||||
2. Start the stack with Docker Compose.
|
||||
3. Point your external Caddy instance at the frontend and Directus ports defined in `.env`.
|
||||
|
||||
## Services
|
||||
|
||||
- Frontend: Astro dev server running in a bind-mounted container for live preview
|
||||
- CMS: Directus
|
||||
- Database: PostgreSQL
|
||||
- CMS bootstrap: one-shot schema initializer (`directus-bootstrap`)
|
||||
|
||||
## Notes
|
||||
|
||||
- All deploy-time variables live in `.env`.
|
||||
- The frontend service bind-mounts the project into `/app`, keeps `node_modules` and `.astro` in named volumes, and serves the site with `astro dev` on the published frontend port.
|
||||
- Layout and page structure are controlled entirely by Astro.
|
||||
- Frontend source edits should appear without rebuilding the container image.
|
||||
|
||||
## Programmatic Directus schema bootstrap
|
||||
|
||||
The schema bootstrap is automatic on `docker compose up` via the `directus-bootstrap` service.
|
||||
It creates collections, fields, and core tag relations idempotently.
|
||||
|
||||
If the frontend dependency graph changes, restart the frontend container to rerun `npm install` inside the container volume:
|
||||
|
||||
```bash
|
||||
docker compose up --build -d web
|
||||
```
|
||||
|
||||
You can still run the script manually if needed:
|
||||
|
||||
```bash
|
||||
docker compose run --rm directus-bootstrap
|
||||
```
|
||||
|
||||
The bootstrap script is idempotent, so reruns are safe.
|
||||
|
||||
## Troubleshooting bootstrap permissions
|
||||
|
||||
If you see `403 FORBIDDEN` during bootstrap:
|
||||
|
||||
- Most commonly, the Directus database volume was initialized earlier with different admin credentials.
|
||||
- `DIRECTUS_ADMIN_EMAIL` and `DIRECTUS_ADMIN_PASSWORD` are only used when Directus initializes a new database.
|
||||
- For stable bootstrap auth across restarts, set `DIRECTUS_ADMIN_TOKEN` in `.env` and keep it constant.
|
||||
|
||||
To start from a clean Directus state (development only):
|
||||
|
||||
```bash
|
||||
docker compose down -v
|
||||
docker compose up -d
|
||||
```
|
||||
Reference in New Issue
Block a user