Run the dashboard without Docker
Install and start each app with Node.js and Yarn, one terminal per app.
For the Full Stack package
Before you start: install Node.js 22.9 or newer and run corepack enable once. No database server is needed.
Open each terminal in the dashboard-2-full-stack folder. Start the API first: the dashboard reads all of its data from it.
| App | Folder | Address |
|---|---|---|
| API | back-end | localhost:8000/ |
| Dashboard | front-end | localhost:3030Local |
Start the API
Install and configure
.env.exampleworks as it is for local development: SQLite in./database.sqlite, the API on port8000, and the dashboard allowed fromhttp://localhost:3030.Terminalindashboard-2-full-stackcorepack enable cd back-end yarn install cp .env.example .envHaving trouble?Create the database
yarn seedcreatesdatabase.sqlite, its tables and the sample data: 12 admins, 5 roles and 25 permissions, 15 users and 12 deleted ones, 15 projects and 12 deleted ones, 10 tasks, 13 app settings and 50 countries. Running it again keeps your admins and their passwords, users, projects, tasks and countries, and adds what is missing. It puts the app settings and the five built-in roles' permissions back to their sample values, and gives the Viewer role to every admin other thanadmin@example.comthat does not hold it yet.Terminalinback-endyarn seedStart the server
yarn devrestarts the API whenever you save a file.Terminalinback-endyarn devExpected result: The health checkLocal answers with
Having trouble?"status":"ok"and"database":"up".
Start the dashboard
In a second terminal:
Install and configure
The copied
.envpoints the dashboard at the API on port8000, and at the same server for the live permission updates.Terminalindashboard-2-full-stackcd front-end yarn install cp .env.example .envStart it and sign in
Terminalinfront-endyarn devExpected result: localhost:3030Local opens the sign-in page. Sign in with
Having trouble?admin@example.comand the passwordAdmin@123.
Without the copied .env, the dashboard does not look for the API at all: it runs on its built-in mock API with sample data kept in your browser.
Start the dashboard
No .env file is needed: with no API address set, the dashboard runs on its built-in mock API with sample data.
Start it and sign in
Terminalindashboard-2-front-endyarn devExpected result: localhost:3030Local opens the sign-in page. Sign in with
Having trouble?admin@example.comand the passwordAdmin@123, and the overview opens with a "Sample data" notice.
To point it at your API, copy the example settings with cp .env.example .env: they expect the API at http://localhost:8000/api. Change NEXT_PUBLIC_API_BASE_URL and NEXT_PUBLIC_WEBSOCKET_BASE_URL if yours runs elsewhere, then restart yarn dev.
Production build of the API
First set the API's .env for production: with NODE_ENV=production the API creates no tables on start, and it refuses to start while JWT_SECRET is empty or still the example value, or while CORS_ORIGIN is empty.
NODE_ENV=production
JWT_SECRET=paste-the-generated-secret-here
CORS_ORIGIN=https://admin.your-domain.com
FRONTEND_URL=https://admin.your-domain.comGenerate the secret with node -e "console.log(require('crypto').randomBytes(48).toString('hex'))". Then, in back-end, build it, create the tables once with yarn seed:prod, and start it:
back-endyarn build
yarn seed:prod
yarn start:prodyarn seed:prod is the only command that creates the tables, and it also adds the sample data and the sample admins with their public passwords. Before going live, sign in and change the sample admins' passwords under Settings, Security, or delete them, and keep your own JWT_SECRET as above, before the dashboard is reachable by anyone else. Run it once: a second run puts the app settings and the built-in roles' permissions back to their sample values.
Production build of the dashboard
In the dashboard's folder, build once and start. It serves on port 3030, or on PORT from .env or the environment.
yarn build
yarn startThe dashboard compiles its NEXT_PUBLIC_* values in at build time, so run yarn build again after changing .env.
Start over with fresh sample data
Stop the API, then delete the database file and seed it again, in back-end. This deletes everything you created.
back-endrm -f database.sqlite* && yarn seedIn PowerShell:
back-endRemove-Item database.sqlite*; yarn seedyarn reset empties every table and keeps them; yarn drop drops every table. Run yarn seed after either.