feat(init): initialisation du projet Angular 19 PWA — v0.0.1
- Angular 19 avec routing, SCSS, PWA (Service Worker + manifest) - Couverture de tests ≥ 90% configurée dans karma.conf.js - Docker pour tests isolés (Dockerfile.test + docker-compose.test.yml) - Image de production multi-stage (Dockerfile + nginx.conf) - Hook pre-commit bloquant si tests échouent ou couverture < 90% - CI Gitea (.gitea/workflows/ci.yml) : tests + build/push image Docker - Versioning SemVer depuis 0.0.1 avec scripts npm version:* - Feature flags par environnement (src/environments/) - Documentation fonctionnelle (docs/functional/) et technique (docs/technical/) - CLAUDE.md avec toutes les règles de développement Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
# Documentation technique — Olhar PWA
|
||||
|
||||
## Stack technique
|
||||
|
||||
| Composant | Technologie | Version |
|
||||
|-----------|-------------|---------|
|
||||
| Framework | Angular | 19.x |
|
||||
| Style | SCSS | — |
|
||||
| PWA | @angular/pwa + Service Worker | 19.x |
|
||||
| Tests | Karma + Jasmine + Chrome headless | — |
|
||||
| Conteneur tests | Docker (node:24-slim + Chromium) | — |
|
||||
| CI | Hook pre-commit Docker | — |
|
||||
|
||||
## Architecture
|
||||
|
||||
```
|
||||
src/
|
||||
├── app/
|
||||
│ ├── core/ # Services globaux, guards, interceptors
|
||||
│ ├── features/ # Modules fonctionnels (un dossier par feature)
|
||||
│ │ ├── auth/
|
||||
│ │ ├── photos/
|
||||
│ │ └── sorting/
|
||||
│ ├── shared/ # Composants, pipes, directives réutilisables
|
||||
│ └── app.routes.ts # Routes principales
|
||||
├── environments/ # Feature flags et config par environnement
|
||||
└── styles.scss # Styles globaux
|
||||
```
|
||||
|
||||
## Feature flags
|
||||
|
||||
Les feature flags permettent à l'application de fonctionner sans API backend.
|
||||
Voir `src/environments/environment.ts` et `src/environments/environment.prod.ts`.
|
||||
|
||||
Pattern : chaque service vérifie `environment.features.<flag>` avant tout appel HTTP.
|
||||
Si le flag est `false`, des données mockées sont retournées depuis `src/app/core/mocks/`.
|
||||
|
||||
## Tests
|
||||
|
||||
- Couverture minimale : **90%** (statements, branches, functions, lines)
|
||||
- Exécution via Docker pour isolation et reproductibilité
|
||||
- Hook `pre-commit` bloque si tests échouent ou couverture < 90%
|
||||
|
||||
## Documents techniques par domaine
|
||||
|
||||
| Domaine | Document |
|
||||
|---------|----------|
|
||||
| Architecture générale | Ce fichier |
|
||||
| Service photos | [photo-service.md](photo-service.md) |
|
||||
| Authentification | [auth.md](auth.md) |
|
||||
| PWA & Service Worker | [pwa.md](pwa.md) |
|
||||
@@ -0,0 +1,23 @@
|
||||
# PWA — Service Worker
|
||||
|
||||
## Configuration
|
||||
|
||||
Le Service Worker est généré par `@angular/pwa` via `ngsw-config.json`.
|
||||
|
||||
## Stratégies de cache
|
||||
|
||||
| Ressource | Stratégie | Description |
|
||||
|-----------|-----------|-------------|
|
||||
| App shell (HTML/JS/CSS) | `freshness` | Réseau d'abord, cache en fallback |
|
||||
| Assets statiques | `performance` | Cache d'abord |
|
||||
| Images photos | Non géré par SW | Chargées depuis l'API |
|
||||
|
||||
## Manifest
|
||||
|
||||
Le fichier `public/manifest.webmanifest` déclare l'application comme installable.
|
||||
Icônes disponibles dans `public/icons/` (72px à 512px).
|
||||
|
||||
## Mode hors-ligne
|
||||
|
||||
Grâce aux feature flags, l'application charge des données mockées quand l'API n'est pas disponible,
|
||||
ce qui la rend utilisable en mode hors-ligne pour la consultation.
|
||||
Reference in New Issue
Block a user