An Angular single‑page application (SPA) aimed at creating a playful environment where kids can learn to code. The project favors clean code, small focused classes/components, composition over inheritance, and DRY principles.
- Stack: TypeScript + Angular 18
- Build tooling: Angular CLI (@angular/cli), @angular-devkit/build-angular
- Package manager: npm (package-lock.json present)
- Entry points:
src/main.ts(bootstrap)src/index.html(HTML shell)- Global styles:
src/styles.scss - Assets served from
src/assets/**
- Output: production build emitted to
dist/lauf
Some domain models and stage rendering utilities live under src/app/core/models and src/app/features/stage, e.g. canvas drawing for stage items and HTML-backed game items.
- Node.js 18 LTS or 20+
- npm 9/10+
- A modern browser (Chrome, Edge, Firefox, Safari)
Optional:
- Angular CLI installed globally (
npm i -g @angular/cli), though the local CLI in devDependencies is sufficient via npm scripts.
-
Install dependencies:
npm install
-
Run the dev server:
npm start
Then open http://localhost:4200/ in your browser. The app will reload on file changes.
-
Run tests:
npm test
Defined in package.json:
npm start→ng servenpm run build→ng buildnpm run watch→ng build --watch --configuration developmentnpm test→ng test(Karma + Jasmine)
- Development build (default configuration):
npm run build
- Production build:
Artifacts are output to
npx ng build --configuration production
dist/lauf.
To serve a production build locally, use any static server, for example:
npx http-server dist/lauf -p 8080.
├─ angular.json # Angular workspace & project config
├─ package.json # Scripts & deps
├─ package-lock.json
├─ tsconfig.json # TS compiler options
├─ tsconfig.app.json # App-specific TS config
├─ src/
│ ├─ index.html # App shell
│ ├─ main.ts # Bootstrap entry point
│ ├─ styles.scss # Global styles
│ ├─ assets/
│ │ └─ examples/
│ │ └─ map.example.json # Example map
│ └─ app/
│ ├─ core/
│ │ └─ models/
│ │ ├─ canvas-geometry.ts
│ │ ├─ point.ts
│ │ ├─ pose.ts
│ │ └─ game-items/
│ │ ├─ stage-item.ts
│ │ └─ stage-items.ts
│ └─ features/
│ └─ stage/
│ └─ components/
│ └─ html-game-item/
│ ├─ html-game-item.component.ts
│ ├─ html-game-item.component.html
│ └─ html-game-item.component.scss
└─ dist/ # Build output (generated)
- Angular environment files (e.g.,
environment.ts) are not present in the provided listing. If runtime configuration or API endpoints are needed, add them undersrc/environments/and wire them inangular.json. - No required environment variables are currently documented.
- TODO: Document any API base URLs, feature flags, or auth configuration if/when introduced.
- Unit tests: Jasmine + Karma via
npm test. - The Karma configuration is managed by the Angular CLI tooling. Chrome is used via
karma-chrome-launcher. - Add new specs alongside components/services (
*.spec.ts).
- Follow clean code practices: small, focused classes and methods; prefer composition over inheritance; avoid duplication (DRY).
- Canvas-based rendering exists in models such as
StageItem(src/app/core/models/game-items/stage-item.ts). These leverage grid geometry utilities and design/pose models.
- TODO: No linter configuration found (e.g., ESLint config). If linting is desired, add ESLint and document related scripts.
- TODO: Not configured. If required, set up Angular i18n and document usage.
- TODO: Document accessibility guidelines and checks applied to components.
- TODO: No CI config found. Add workflow files (e.g., GitHub Actions) and document build/test/deploy steps if applicable.
No license file found in the repository root.
- TODO: Add a
LICENSEfile and update this section to clarify licensing.
- AI was used to a certain degree