This is the frontend/ half of the GEWIS/sudosos monorepo -- the
dashboard and point-of-sale Vue apps, plus the shared libraries they depend on. It assumes you already
have a bootstrapped monorepo checkout; see the root README if you don't (pnpm bootstrap && pnpm dev is the one-command version). For component/store/i18n conventions, see
../CLAUDE.md and ./CLAUDE.md.
| Path | Package | What it is |
|---|---|---|
apps/dashboard |
sudosos-dashboard |
Admin/seller dashboard, Vue 3 |
apps/point-of-sale |
@sudosos/point-of-sale |
POS kiosk app, Vue 3 |
lib/common |
@sudosos/sudosos-frontend-common |
Shared components, composables, services, Pinia stores |
lib/themes |
@sudosos/themes |
PrimeVue theme shared by both apps |
lib/nginx |
(not a workspace package) | Nginx config + Dockerfile for serving the built apps |
pnpm dev # backend :3000 + dashboard :5173
pnpm dev:pos # point-of-sale :5174 (run alongside pnpm dev)Dashboard at localhost:5173, point of sale at localhost:5174. See the root
command reference for the full list (pnpm frontend:lint,
pnpm frontend:build, pnpm format / pnpm format:fix, ...).
Tip
To point a running dev server at a different backend, edit VITE_ENV in apps/dashboard/.env or
apps/point-of-sale/.env (local | test | prod) rather than switching scripts.
- Linting and formatting extend the central GEWIS JS configs.
Run
pnpm frontend:lintandpnpm formatfrom the repo root (pnpm format:fixto autofix); both are enforced by CI on every pull request. - Translation consistency. The dashboard ships English, Dutch, and Polish locale files under
apps/dashboard/src/locales/; CI runsfrontend/scripts/check-translations.jsto make sure all three stay in sync key-for-key. Run it locally after adding or renaming a translation key:node scripts/check-translations.js(fromfrontend/).
Contributing conventions and the license are the same for the whole monorepo -- see the root README.