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.