Bootstrap project for verifying changes in a Go + React app with Postgres and an nginx dev proxy.
backend/Go API server (multi-module withshared/).frontend/React app (Vite).nginx/reverse proxy for/(frontend) and/api(backend).
docker-compose up --buildFrontend dependencies are installed inside the container with a dedicated frontend-node-modules volume, and the compose file only bind-mounts the frontend sources/config, so node_modules is not created on the host.
Visit:
http://localhost:8088(nginx proxy)http://localhost:8080/api/health(backend direct)http://localhost:5173(frontend direct)
GET /api/healthGET /api/messagesPOST /api/messages{ "content": "hello" }
This target starts the stack and stops it afterward:
make e2e-playwrightRun Playwright inside Docker:
make e2e-playwright-in-dockerRun Playwright against a remote browser already exposed on localhost:3000:
make e2e-playwright-remoteThis uses host networking and PLAYWRIGHT_WS_ENDPOINT=ws://localhost:3000/chrome/playwright.
This target starts the stack and stops it afterward:
make e2e-cypressRun Cypress inside Docker:
make e2e-cypress-in-dockerThis target starts the stack and stops it afterward:
make e2e-seleniumTo run Selenium against a remote browser exposed on localhost:3000:
make e2e-selenium-remoteThis uses host networking so the test container can reach both the app and the remote browser. The defaults are SELENIUM_REMOTE_URL=http://localhost:3000 and SELENIUM_BASE_URL=http://localhost:8088.
Override endpoints as needed:
SELENIUM_REMOTE_URL(defaults tohttp://localhost:3000)
This target starts the stack and stops it afterward:
make e2e-puppeteerTo run Puppeteer against a remote browser exposed on localhost:3000:
make e2e-puppeteer-remoteThis uses host networking so the test container can reach both the app and the remote browser. The defaults are PUPPETEER_WS_ENDPOINT=ws://localhost:3000 and PUPPETEER_BASE_URL=http://localhost:8088.