aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2025-11-30 16:48:43 +0900
committernsfisis <nsfisis@gmail.com>2025-12-04 23:26:15 +0900
commit9233b72dcfd4f44f7e30dd0d699530493e87072d (patch)
tree0b4c2cc975881f6f67577b1e10ffc1a46482428d
parent3708851e2f9a32e16a70d5dfe09e35d930344aaa (diff)
downloadkioku-9233b72dcfd4f44f7e30dd0d699530493e87072d.tar.gz
kioku-9233b72dcfd4f44f7e30dd0d699530493e87072d.tar.zst
kioku-9233b72dcfd4f44f7e30dd0d699530493e87072d.zip
feat(db): add Docker Compose for PostgreSQL
Add docker-compose.yml with PostgreSQL 17 Alpine image for local development. Includes healthcheck, volume persistence, and environment variable configuration. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
-rw-r--r--.env.example3
-rw-r--r--.envrc1
-rw-r--r--.gitignore1
-rw-r--r--README.md9
-rw-r--r--compose.yaml21
-rw-r--r--docs/dev/roadmap.md2
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
diff --git a/.envrc b/.envrc
new file mode 100644
index 0000000..fe7c01a
--- /dev/null
+++ b/.envrc
@@ -0,0 +1 @@
+dotenv
diff --git a/.gitignore b/.gitignore
index 06e6038..946936c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
node_modules
dist
*.tsbuildinfo
+.env
diff --git a/README.md b/README.md
index 46bfb35..4d90b2f 100644
--- a/README.md
+++ b/README.md
@@ -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