fix: modal onClose callback, calendar popup truncation, datetime validation
- modal.js: add onClose callback to openModal(), fix _initialFormTimeout cleanup, deduplicate escape/overlay-click handlers in confirmModal, promptModal, selectModal using the new callback - calendar.js: replace popup.innerHTML with insertAdjacentHTML (constraint), add truncateDescription() to cap long event descriptions at 500 chars - validate.js: extend DATETIME_RE to cover ISO 8601 with ms/timezone, normalise datetime values to YYYY-MM-DDTHH:MM on input - index.js: include app version in startup log message - docker-compose.yml / .env.example: switch from named volume to host-mounted DATA_DIR/BACKUP_DIR with sane defaults - docs/installation.md: document host-mount data paths Co-Authored-By: Rafael Foster <rafaelfoster@users.noreply.github.com> Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+11
-2
@@ -59,7 +59,7 @@ Complete setup instructions for Oikos - from Docker installation to your first l
|
||||
|
||||
## Architecture Overview
|
||||
|
||||
Oikos is a self-hosted family planner that runs as a single Docker container. The Express.js backend serves both the API and the static frontend files. All data is stored in a SQLCipher-encrypted SQLite database inside a Docker volume.
|
||||
Oikos is a self-hosted family planner that runs as a single Docker container. The Express.js backend serves both the API and the static frontend files. All data is stored in a SQLCipher-encrypted SQLite database inside a host-mounted data folder, and automated backups are written to a separate host-mounted backup folder.
|
||||
|
||||
```
|
||||
Browser ──HTTP──▶ Docker Container (Express.js :3000) ──▶ SQLite/SQLCipher (/data/oikos.db)
|
||||
@@ -453,7 +453,9 @@ docker compose up -d --build
|
||||
|
||||
### Where is the Data?
|
||||
|
||||
The SQLite database lives in a Docker named volume called `oikos_data`, mounted at `/data` inside the container. The database file is `/data/oikos.db`.
|
||||
The SQLite database lives in the host folder configured through `DATA_DIR` and is mounted at `/data` inside the container. The database file is `/data/oikos.db`.
|
||||
|
||||
Scheduled backups are written to the host folder configured through `BACKUP_DIR` and mounted at `/backups` inside the container.
|
||||
|
||||
### Backup
|
||||
|
||||
@@ -466,6 +468,13 @@ docker cp oikos:/data/oikos-backup.db ./oikos-backup-$(date +%Y%m%d).db
|
||||
|
||||
Admins can also download a backup from **Settings → Backup Management**.
|
||||
|
||||
If you want to store the database and backups in specific local folders, set these in `.env` before starting Compose:
|
||||
|
||||
```bash
|
||||
DATA_DIR=./data
|
||||
BACKUP_DIR=./backups
|
||||
```
|
||||
|
||||
### Restore
|
||||
|
||||
Admins can restore a backup from **Settings → Backup Management**. For operational restores via Docker Compose, stop the running app, mount the backup into a temporary container that uses the same Docker volume, and replace the database file:
|
||||
|
||||
Reference in New Issue
Block a user