The nuxt-client is the primary frontend application for the dBildungscloud ecosystem. It is a Vue 3 single-page application built with Vite, Vuetify, and TypeScript. The application serves teachers, students, and administrators across multiple German federal states (branded via a theming system). It communicates with the Schulcloud-Server REST and Socket API and coexists with the legacy client during an ongoing migration.
π Architecture Diagram (open in diagrams.net or the draw.io IDE plugin)
- Node.js and npm (see
enginesinpackage.json) - Schulcloud-Server
- Schulcloud-Client
For a full walkthrough of the local development environment, see the Getting Started guide.
npm install
npm run serveThe app will be available at http://localhost:4000.
/config # βοΈ Vite plugins and build configuration
/public # π Static assets and theme files
/src # π§© Application source code
βββ assets/ # π¨ Fonts, images, SVGs
βββ components/ # π§© Shared Vue components
βββ composables/ # πͺ Shared Vue composables
βββ generated/ # π€ Auto-generated API clients (OpenAPI)
βββ layouts/ # π Page layout wrappers
βββ locales/ # π i18n translation files
βββ modules/ # π¦ Building Block modules
βββ pages/ # π Route-level page components
βββ plugins/ # π Vue plugins (Vuetify, i18n, etc.)
βββ router/ # π€οΈ Vue Router configuration
βββ store/ # ποΈ Pinia state stores
βββ styles/ # π¨ Global SCSS styles
βββ themes/ # π¨ Theme definitions
βββ types/ # π Shared TypeScript types
βββ utils/ # π§ Utility functions
/tests # π§ͺ Test setup and helpers
| Script | Purpose |
|---|---|
serve |
Start the Vite dev server with HMR |
build |
Type-check and build for production |
type-check |
Run vue-tsc without emitting files |
test:unit |
Run unit tests with Vitest |
test:unit:watch |
Run unit tests in watch mode |
test:unit:ci |
Run unit tests with coverage |
lint |
Lint source files with ESLint |
lint:fix |
Lint and auto-fix source files |
generate-client:server |
Regenerate the server API client from OpenAPI spec |
generate-client:fwu |
Regenerate the FWU API client from OpenAPI spec |
generate-client:filestorage |
Regenerate the file storage API client from OpenAPI spec |
generate-client:h5p-editor |
Regenerate the H5P editor API client from OpenAPI spec |
generate-client:common-cartridge |
Regenerate the Common Cartridge API client from OpenAPI spec |
Unit tests use Vitest with Vue Test Utils and vitest-mock-extended for type-safe mocking.
npm run test:unitAPI clients are auto-generated from OpenAPI specs via openapi-generator-cli. Configuration lives in openapitools.json.
npm run generate-client:server
npm run generate-client:fwu
npm run generate-client:filestorage
npm run generate-client:h5p-editor
npm run generate-client:common-cartridge- Use
async/awaitfor better readability instead of callbacks - Leverage TypeScript for type safety β use inference over declared return types
- Avoid
// @ts-ignoreβ define types properly instead - File naming: kebab-case, e.g.
MyComponent.vue,my-util.ts - Context meta tags separated by dots:
MyComponent.unit.ts - Function names:
camelCase - Pure functions as directly importable utils/ES modules
- Avoid assigning a variable only to immediately return it
- Avoid
asyncas part of function names
- Global styles live in a central
styles/directory, imported viamain.ts - Use scoped styles by default in page and module components
- Font sizes via CSS custom properties defined in
src/styles/css-variables/_typography.scss(e.g.--heading-1,--text-md) β do not use hardcoded pixel values - Prefer CSS Grid / Flexbox for column/row layouts
- Font changes exclusively in
src/styles/utility/_fonts.scss - Refer to the official Vue Style Guide for component conventions
The comprehensive guide covering architecture, design patterns, and development workflows is available in the documentation.
- Schulcloud-Server - the backend (Node.js / Nest.js)
- Schulcloud-Client - the (partly still in use) legacy frontend
- file-storage - file storage service
- h5p-server - H5P editor service
- dof_app_deploy - DevOpsFuture β CI/CD and instance configurations
- e2e-system-tests - BDD end-to-end tests