diff options
| -rw-r--r-- | .env.example | 3 | ||||
| -rw-r--r-- | .envrc | 1 | ||||
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | README.md | 9 | ||||
| -rw-r--r-- | compose.yaml | 21 | ||||
| -rw-r--r-- | docs/dev/roadmap.md | 2 |
6 files changed, 32 insertions, 5 deletions
diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..012ade7 --- /dev/null +++ b/.env.example @@ -0,0 +1,3 @@ +POSTGRES_USER=kioku +POSTGRES_PASSWORD=kioku +POSTGRES_DB=kioku @@ -0,0 +1 @@ +dotenv @@ -1,3 +1,4 @@ node_modules dist *.tsbuildinfo +.env @@ -15,8 +15,9 @@ A spaced repetition learning application (Anki clone) with PWA offline support a - Node.js 22+ - pnpm 10+ -- PostgreSQL 15+ -- Docker (optional) +- PostgreSQL 18+ +- Docker +- Direnv (optional) ### Development @@ -24,8 +25,8 @@ A spaced repetition learning application (Anki clone) with PWA offline support a # Install dependencies pnpm install -# Start PostgreSQL (with Docker) -docker compose up -d postgres +# Start containers +docker compose up # Run database migrations pnpm --filter server db:migrate diff --git a/compose.yaml b/compose.yaml new file mode 100644 index 0000000..494e60f --- /dev/null +++ b/compose.yaml @@ -0,0 +1,21 @@ +services: + db: + image: postgres:18 + container_name: kioku-db + restart: unless-stopped + environment: + POSTGRES_USER: ${POSTGRES_USER} + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} + POSTGRES_DB: ${POSTGRES_DB} + expose: + - 5432 + volumes: + - db_data:/var/lib/postgresql + healthcheck: + test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"] + interval: 10s + timeout: 5s + retries: 5 + +volumes: + db_data: diff --git a/docs/dev/roadmap.md b/docs/dev/roadmap.md index 9f49f5d..4ca1ef1 100644 --- a/docs/dev/roadmap.md +++ b/docs/dev/roadmap.md @@ -17,7 +17,7 @@ - [x] Logger middleware ### Database -- [ ] Docker Compose with PostgreSQL +- [x] Docker Compose with PostgreSQL - [ ] Drizzle ORM setup - [ ] Database migrations |
