- name
- c4-architecture-documentation
- description
- Document system architecture using C4 model: context, container, component, code diagrams per ARCHITECTURE.md
# C4 Architecture Documentation Skill
## Purpose
Document CIA platform architecture using C4 model for different abstraction levels.
## When to Use
- ✅ Documenting system architecture
- ✅ Onboarding new developers
- ✅ Architecture decision records
- ✅ Security architecture reviews
## C4 Model Levels
### Level 1: System Context
```
[External Users] --uses--> [CIA Platform] --uses--> [Riksdagen API]
[CIA Platform] --uses--> [World Bank API]
[CIA Platform] --uses--> [PostgreSQL Database]
```
### Level 2: Container Diagram
```
[Web Browser] --HTTPS--> [Spring MVC App] --JDBC--> [PostgreSQL]
[Spring MVC App] --HTTPS--> [External APIs]
[Spring MVC App] --uses--> [Redis Cache]
```
### Level 3: Component Diagram
```java
// Service Layer Components
@Component PoliticianService --uses--> @Repository PoliticianRepository
@Component VotingAnalysisService --uses--> @Repository VotingRecordRepository
@Component RiksdagenClient --calls--> [External Riksdagen API]
```
### Level 4: Code
```java
// Detailed class design
public class PoliticianService {
private final PoliticianRepository repository;
private final RiksdagenClient riksdagenClient;
// Implementation details...
}
```
## PlantUML Diagrams
```plantuml
@startuml
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml
Person(user, "Citizen", "Wants political transparency")
System_Boundary(cia, "CIA Platform") {
Container(web, "Web Application", "Spring MVC, Vaadin 8", "Provides UI")
ContainerDb(db, "Database", "PostgreSQL", "Stores data")
}
System_Ext(riksdagen, "Riksdagen API", "Government data")
Rel(user, web, "Uses", "HTTPS")
Rel(web, db, "Reads/Writes", "JDBC")
Rel(web, riksdagen, "Fetches data", "HTTPS/REST")
@enduml
```
## References
- C4 Model: https://c4model.com/
- ARCHITECTURE.md
- FUTURE_ARCHITECTURE.md
Ver en GitHub