A self-hosted app for goals, daily intentions, and progress reviews.
Use a published image from ghcr.io/drewbitt/someplice (amd64/arm64), or build from a checkout:
docker build -t someplice .
docker run -d --name someplice --restart unless-stopped --stop-timeout 35 \
--read-only --tmpfs /tmp --cap-drop ALL --security-opt no-new-privileges \
-v someplice-data:/app/data -p 127.0.0.1:3000:3000 somepliceOpen http://localhost:3000. Published version tags omit the release's v prefix, for example :0.2.0.
There is no built-in authentication. Keep access local or use an authenticated reverse proxy.
Your data is stored in the someplice-data volume. If you use a bind mount instead, its directory must be writable by UID/GID 1000.
Pass environment variables with Docker's -e, or set them before starting the Node server.
| Variable | Purpose |
|---|---|
DATABASE_PATH |
SQLite file; defaults to ./data/db.sqlite, or /app/data/db.sqlite in Docker. |
SOMEPLICE_TIMEZONE |
Initial IANA timezone, e.g. America/New_York; otherwise detected on the first browser visit. A stored setting takes precedence. |
PORT |
Node server port; defaults to 3000. |
The database initializes automatically. Older development databases aren't migrated to the current schema.
From a checkout with pnpm installed:
pnpm install
pnpm devFor a production server without Docker, run pnpm build, then NODE_ENV=production pnpm exec node build/index.js.
See package.json for available scripts and CI for validation.