This is a Next.js project bootstrapped with create-next-app.
First, run the development server:
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun devOpen http://localhost:3000 with your browser to see the result.
You can start editing the page by modifying app/page.tsx. The page auto-updates as you edit the file.
This project uses next/font to automatically optimize and load Geist, a new font family for Vercel.
To learn more about Next.js, take a look at the following resources:
- Next.js Documentation - learn about Next.js features and API.
- Learn Next.js - an interactive Next.js tutorial.
You can check out the Next.js GitHub repository - your feedback and contributions are welcome!
The project includes a script to populate the database with realistic signal data for testing and development.
Warning: Do not run this script against a production database.
npx tsx --require dotenv/config scripts/seed-signals.ts [options]| Option | Description | Default |
|---|---|---|
--month <1-12> |
Month to seed | Current month |
--year <number> |
Year to seed | Current year |
# Seed the current month with default settings
npx tsx --require dotenv/config scripts/seed-signals.ts
# Seed a specific month
npx tsx --require dotenv/config scripts/seed-signals.ts --month 3 --year 2026
Each day in the target month gets 1–6 signals with randomized titles, descriptions, risk levels, and a mix of active/resolved statuses. Resolved signals include a full event trail (created → resolved). To add more title patterns, edit the TITLE_TEMPLATES array at the top of scripts/seed-signals.ts.
The recommended way to run Hermes is via Docker Compose, which bundles the app and a PostgreSQL database together.
- Docker Desktop installed and running
docker compose up --buildThis will:
- Start a PostgreSQL 17 database (data persisted in a Docker volume)
- Run Prisma migrations automatically
- Build and start the Next.js app
The app will be available at http://localhost:3001.
| Service | Port |
|---|---|
| App | 3001 |
| Prod database | 5433 (exposed for external access) |
To seed the Docker-hosted production database:
# Create a .env.production.local with the prod connection string
# DATABASE_URL="postgresql://postgres:hermes-prod@localhost:5433/hermes"
npx tsx --require dotenv/config scripts/seed-signals.ts --month 4 --year 2026After code or schema changes, rebuild and restart with a single command:
docker compose up --buildThis will rebuild the app image, apply any new Prisma migrations, and restart the services. No separate docker build step is needed.
docker compose downDatabase data is stored in the hermes-pgdata volume and persists across restarts. To delete all data:
docker compose down -vA separate local PostgreSQL container is used for development (port 5432). See .env for the dev connection string. The Docker Compose stack uses its own isolated database so dev and prod data stay separate.
Hermes stores its live app data in the Docker volume behind the db-prod service. The safest way to migrate that data is to create a SQL dump on the old machine and restore it on the new one.
From the repo root, run:
powershell -ExecutionPolicy Bypass -File .\scripts\backup-prod.ps1This creates:
- a database dump in
backups\hermes-prod-<timestamp>.sql - a copy of
.envinbackups\env-<timestamp>.txtif that file exists
Copy:
- your repo folder, or re-clone it from git
- the generated
.sqlbackup file - the copied env file if you want the same local settings
On the new machine:
- Install Docker Desktop.
- Put the backup
.sqlfile somewhere inside the repo, such asbackups\. - Start the database and restore the dump:
powershell -ExecutionPolicy Bypass -File .\scripts\restore-prod.ps1 -BackupFile .\backups\hermes-prod-YYYYMMDD-HHMMSS.sql- Start the full app if it is not already running:
docker compose up --buildAfter that, Hermes should open with your existing data at http://localhost:3001.