Page, crawl, Playwright and Lighthouse coverage now include both pitch locales, and the contributor docs match the new route table and chrome. Co-authored-by: Cursor <cursoragent@cursor.com>
69 lines
4.1 KiB
Markdown
69 lines
4.1 KiB
Markdown
# Portfolio
|
|
|
|
Bilingual portfolio for Antonio Ledebuhr, a software and DevOps engineer. German is the default language at `/`. English is the full second version under `/en`. Home speaks to small-company customers. `/pitch` is the recruiter-oriented page and is not in the primary navigation.
|
|
|
|
This repository is the Angular 21 standalone, zoneless, SSR application that serves both locales from one build.
|
|
|
|
## Prerequisites
|
|
|
|
- Node.js 22 or newer
|
|
- npm 11 or newer (npm 12 prints an engine-compatibility warning on some Node 24 builds; that warning is not an error)
|
|
|
|
## Install
|
|
|
|
```bash
|
|
npm install
|
|
```
|
|
|
|
## Scripts
|
|
|
|
| Script | Description |
|
|
| ----------------------------- | -------------------------------------------------------------------------- |
|
|
| `npm start` | Start the Angular dev server. |
|
|
| `npm run build` | Production build (default configuration), including SSR and prerendering. |
|
|
| `npm run watch` | Development rebuild on change. |
|
|
| `npm test` | Unit tests in watch mode. |
|
|
| `npm run test:ci` | Unit tests once; exits when finished. |
|
|
| `npm run lint` | Run ESLint. |
|
|
| `npm run lint:fix` | Run ESLint with autofix. |
|
|
| `npm run format` | Format the workspace with Prettier. |
|
|
| `npm run format:check` | Check formatting without writing. |
|
|
| `npm run serve:ssr` | Serve the production SSR bundle from `dist/`. |
|
|
| `npm run serve:ssr:Portfolio` | Alias of `serve:ssr`. |
|
|
| `npm run e2e` | Playwright + axe-core against the production SSR bundle. |
|
|
| `npm run e2e:install` | Install the pinned Chromium build for Playwright. |
|
|
| `npm run lighthouse` | Production build, then Lighthouse CI (`lighthouserc.json`). |
|
|
| `npm run ci` | lint, format check, tests, then production build. |
|
|
| `npm run cv:link` | Add the visible `/pitch` URL and link annotation to `CV.pdf` (idempotent). |
|
|
|
|
## Local SSR build
|
|
|
|
```bash
|
|
npm run build
|
|
npm run serve:ssr
|
|
```
|
|
|
|
The server listens on `http://localhost:4000` unless `PORT` is set. The CV is copied into the browser output at `/cv/CV.pdf`. The header no longer offers that download; Pitch and the terminal `navigate cv` command still do. The lower-right terminal dock replaces the old centered command palette (`Ctrl+K` / `⌘K`).
|
|
|
|
`npm run e2e` builds the SSR bundle and serves it on port 4173. `npm run lighthouse` builds, then starts the SSR server on port 4000. Browser binaries and generated reports (`test-results`, `playwright-report`, `.lighthouseci`) are not committed.
|
|
|
|
## Project structure
|
|
|
|
```
|
|
src/app/core/ Typed contracts: locale, routing, navigation, content, platform
|
|
src/app/features/ One standalone page per route id
|
|
src/app/shared/ Reusable UI primitives
|
|
src/app/components/ Existing decorative widgets (skills, dot background)
|
|
src/styles.scss Design tokens and global primitives
|
|
src/_breakpoints.scss Breakpoint map and respond-to mixin
|
|
public/ Static SVG assets
|
|
```
|
|
|
|
Design tokens live in `src/styles.scss` as CSS custom properties. Content contracts and the placeholder provider live in `src/app/core/content`. Route ids and locale path tables live in `src/app/core/routing`.
|
|
|
|
Contributor and agent conventions are in [AGENTS.md](./AGENTS.md).
|
|
|
|
## Legal pages
|
|
|
|
The Impressum (`/impressum`, `/en/legal-notice`) and Datenschutz (`/datenschutz`, `/en/privacy`) pages contain unreviewed placeholders. They must be checked by the site owner before publication.
|