Files
dashback/README.md
2026-10-09 10:41:21 +02:00

83 lines
2.7 KiB
Markdown

# dashback
Backend API for Dash — Google SSO auth, MSSQL allowlist, and session cookies.
## Setup
```bash
cp .env.example .env
npm install
```
Configure `.env` (see `.env.example`). Required for auth: `GOOGLE_CLIENT_ID`, `JWT_SECRET`, and `CORS_ORIGINS`.
## Run
```bash
npm start
```
Default port: `4208`.
## API
See [docs/api](docs/api/README.md) for endpoints, auth flow, and frontend integration.
Docs are generated from `@openapi` JSDoc on route handlers:
```bash
npm run docs:api
```
That writes `docs/api/routes.md`, `docs/api/routes-all.md`, and per-route Markdown under `docs/api/routes/`. 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:
```bash
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:
```bash
npm run manage-users
```