π§βπ» Develop
Everything you need to contribute to the Panoramax frontend: architecture, dev workflow, tests, linting and build steps.
ποΈ Architecture at a Glance
| Layer | Description |
|---|---|
app/ |
Front-office (public website). Contains Vue components, routes, stores and views. |
admin/ |
Back-office (admin dashboard). Same structure as app. |
shared/ |
Shared utilities, components, services, locales⦠consumed by both app and admin. |
The repository uses pnpm workspaces to manage dependencies efficiently across these packages.
π Typical Folder Layout (app/ & admin/)
components/β Reusable Vue componentsviews/β Route-level pagesrouter/β Vue Router configurationstore/β Pinia stores (only when needed)tests/β Unit tests (Vitest + Vue Test Utils)App.vueβ Root componentmain.tsβ Application entry point (mounts Vue app)
β‘ Development Workflow
Run front-office (app)
Run back-office (admin)
β Unit Tests (Vitest)
| Scope | pnpm |
|---|---|
| All workspaces | pnpm test:unit |
| App only | pnpm test:unit:app |
| Admin only | pnpm test:unit:admin |
| Shared only | pnpm test:unit:shared |
Tests are located under each package (
app/src/tests,admin/src/tests,shared/tests).
π§Ή Linting
ESLint is configured with Vue + TypeScript presets and Prettier integration. Fix issues before opening a PR.
π¦ Build & Deploy
This command runs pnpm build and copies dist/app/index.html to dist/404.html. The output is served by server.js (Express) in production environments:
π Documentation
- Remember to generate the doc sometimes with
pnpm docs:generate - Markdown docs live in the
docs/folder. - During
pnpm docs:generateorpnpm build, theyβre converted to HTML and appear indist/docs/.
Note
Want to add new sections? Drop a NN_Title.md file in docs/ and itβll show up automatically (thanks to the markdown pipeline).