bolts/AGENTS.md

1.8 KiB

Project Rules

General

  • Follow the existing code style and patterns.
  • Use npm for running project commands.
  • Keep code in TypeScript unless migration is required.

Frontend Stack

  • Framework: Vue 3 + Vite
  • UI Library: Vuetify0
  • Enabled Features: ESLint, Vue Router, UnoCSS

Backend Stack

  • Language: Java
  • Server: Javalin
  • Persistence: Postgres with JDBC
  • Maven for dependency management

Tests

Use JUnit 5 for backend unit test Use Playwright for frontend end-to-end tests

Full-stack end-to-end tests

Agents running end-to-end tests must use free ports so they do not interfere with an existing development server. Find two currently available ports with:

node -e "const net=require('net');let left=2,ports=[];for(let i=0;i<2;i++){const s=net.createServer();s.listen(0,'127.0.0.1',()=>{ports.push(s.address().port);s.close(()=>{if(!--left)console.log(ports.join(' '))})})}"

Start the backend from the repository root, substituting the first free port and the normal local database credentials:

DB_URL=jdbc:postgresql://localhost:5432/postgres \
DB_USERNAME=root \
DB_PASSWORD=root \
DB_REINITIALIZE=true \
SERVER_PORT=<backend-port> \
mvn exec:java

DB_REINITIALIZE=true drops and recreates the application's tables at startup, so only use it for a disposable test database. SERVER_PORT defaults to 7070 when omitted.

From frontend/, run Playwright using the second free port. Playwright starts Vite on that port, and Vite proxies API requests to the backend:

VITE_API_TARGET=http://127.0.0.1:<backend-port> \
PLAYWRIGHT_BASE_URL=http://127.0.0.1:<frontend-port> \
npm run test:e2e

Keep the backend running until Playwright finishes, then stop it. The free-port check and server startup should happen close together because another process can claim a released port in between.