2.9 KiB
dashback
Backend API for Dash — Google SSO auth, MSSQL allowlist, and session cookies.
Setup
cp .env.example .env
npm install
Configure .env (see .env.example). Required for auth: GOOGLE_CLIENT_ID, JWT_SECRET, and CORS_ORIGINS.
Run
npm start
Default port: 4208.
API
See docs/api for endpoints, auth flow, and frontend integration.
Docs are generated from @openapi JSDoc on route handlers:
npm run docs:api
npm run api-graph # regenerate api-graph.svg + api-graph.dot
That writes docs/api/routes.md, docs/api/routes-all.md, and per-route Markdown under docs/api/routes/. npm run api-graph generates api-graph.svg and api-graph.dot visualizing the API resources, endpoints, and dataflow relationships. There is no generated openapi.json on disk — the interactive Swagger UI at /docs/ builds the spec from the same @openapi JSDoc at runtime (src/api/openapiSpec.js).
Function review files
Create one JavaScript file per function in the project:
npm run review:functions
The generated files are written to output/ and include each function's source filename and line numbers. The same directory also contains functions.txt, an index of source filenames, line numbers, and function signatures. Existing generated function files and the index are replaced each time the command runs. Dependencies, runtime data, and the output directory itself are excluded from the scan.
Brands (company-scoped, selectedCompanyId aus der Session)
| Methode | Route | Store-Methode |
|---|---|---|
GET |
/api/brand |
brand.list |
PUT |
/api/brand |
brand.upsert |
DELETE |
/api/brand/:id |
brand.delete |
Artikel-Felder (liefern dasselbe Shape wie GET /api/article/:sku)
| Methode | Route | Store-Methode |
|---|---|---|
PUT |
/api/article/:sku/eans |
article.setEansBySku |
PUT |
/api/article/:sku/brand |
article.setBrandIdBySku |
PUT |
/api/article/:sku/weight |
article.setWeightBySku |
PUT |
/api/article/:sku/categories |
article.setCategoryIdsBySku |
Kategorien
| Methode | Route | Store-Methode |
|---|---|---|
PATCH |
/api/category/:id |
category.rename und/oder category.move (Name+Slug und/oder Verschieben unter neuen Eltern) |
PUT |
/api/category/order |
category.order (Geschwister-Sortierung unter einem Elternteil) |
Public Product Catalog (ohne Auth, company-scoped)
| Methode | Route | Beschreibung |
|---|---|---|
GET |
/api/public/:companyId/categories |
Liefert den Kategoriebaum der Firma |
GET |
/api/public/:companyId/articles |
Liefert paginierte Artikelliste (optional gefiltert nach ?categoryId=, ?search=) |
GET |
/api/public/:companyId/articles/:sku |
Liefert öffentliche Artikeldetails (Preise, Bilder, Kategorien, EANs, Varianten) |
Users
Manage the email allowlist:
npm run manage-users