The Citizen Intelligence Agency (CIA) is an open-source intelligence (OSINT) platform for monitoring and analyzing Swedish political activity. This document provides a high-level overview of the system architecture, technology stack, and major components. For detailed information about specific subsystems, see:
The system is implemented as a Maven multi-module Java project using a three-tier architecture with Spring Framework for business logic, Vaadin for the web interface, and PostgreSQL for data persistence. It integrates with four Swedish government data sources (Riksdagen, ESV, WorldBank, Val) and deploys to AWS infrastructure or as a standalone Debian package.
Sources: README.md1-15 parent-pom/pom.xml1-46
The CIA platform follows a modular, layered architecture organized through Maven's multi-module project structure. The system aggregates political data from external Swedish government APIs, processes it through a service layer with business rules, persists it in PostgreSQL with full-text search capabilities, and presents it through an interactive Vaadin web interface.
Maven Module Hierarchy
The project root is defined in parent-pom with artifact ID com.hack23.cia and contains six top-level modules that organize the codebase into logical layers. Each parent POM manages dependencies and build configuration for its child modules.
Sources: parent-pom/pom.xml39-46 parent-service-pom/pom.xml26-39 parent-web-pom/pom.xml26-30
Framework Versions and Dependencies
The technology stack is defined centrally in parent-pom/pom.xml using Maven dependency management. Key version properties include:
| Component | Version Property | Version |
|---|---|---|
| Java | jdk.src.version | 21 |
| Spring Framework | cia.project.versions.spring | 5.3.39.hack23java25 |
| Spring Security | cia.project.versions.spring.security | 5.8.16 |
| Hibernate | cia.project.versions.hibernate | 5.6.15.Final |
| Vaadin | cia.project.versions.vaadin | 8.14.4 |
| PostgreSQL JDBC | cia.project.versions.postgresql | 42.7.10 |
| Drools | cia.project.versions.drools | 10.1.0 |
| Jetty | cia.project.versions.jetty | 10.0.26 |
Sources: parent-pom/pom.xml83-158 citizen-intelligence-agency/pom.xml1-13 service.data.impl/pom.xml1-14
Component Responsibilities
The system implements a clear separation of concerns across layers:
Web Layer (citizen-intelligence-agency, web-widgets):
Service Layer (service.impl):
ApplicationManager interface defines the public service APIData Access Layer (service.data.impl):
Import Agents (service.component.agent.impl):
Sources: citizen-intelligence-agency/pom.xml10-13 service.impl/pom.xml10-13 service.data.impl/pom.xml10-13 service.component.agent.impl/pom.xml10-13
Data Processing Pipeline
The data flow follows a multi-stage pipeline from external APIs to database persistence:
service.component.agent.impl at configured intervalsSources: service.component.agent.impl/pom.xml1-14 jms-broker/pom.xml10-14 service.impl/pom.xml10-13 service.data.impl/pom.xml122-175
Deployment Options
The system provides two primary deployment strategies:
AWS CloudFormation Deployment:
cia-dist-cloudformation modulehttps://github.com/Hack23/cia/releases/download/2025.1.2/cia-dist-deb-2025.1.2.all.debDebian Package Deployment:
cia-dist-deb module using unix-maven-plugin/etc/default/ciaBuild Artifacts:
citizen-intelligence-agency/target/Sources: cia-dist-cloudformation/src/main/resources/cia-dist-cloudformation.yml1-98 cia-dist-cloudformation/src/main/resources/cia-dist-cloudformation.json1-118 cia-dist-deb/pom.xml1-46
The project includes a Dev Container configuration for reproducible development environments. The container provides:
mcr.microsoft.com/devcontainers/java:21 with Maven 3.9.9cia_dev database, user eris, SSL certificatesThe dev container automatically initializes the database schema using Liquibase changesets and configures performance tuning parameters for development workloads.
Sources: README.md1-15 parent-pom/pom.xml162-171
The system implements defense-in-depth security across multiple layers:
Network Security:
Application Security:
Data Security:
Build Security:
Sources: service.impl/pom.xml139-158 cia-dist-cloudformation/src/main/resources/cia-dist-cloudformation.yml210-270
Refresh this wiki
This wiki was recently refreshed. Please wait 5 days to refresh again.