European Parliament Intelligence Platform
Monitor political activity with systematic transparency
|
|
European Parliament Intelligence Platform โ an automated multi-language news platform that monitors EU Parliament activities with 14-language support, covering plenary sessions, committee reports, propositions, and breaking news. |
๐ Quick Links:
๐ ISMS Compliance:
MCP Server Integration: The project is designed to use the European-Parliament-MCP-Server for accessing real EU Parliament data.
USE_EP_MCP=false to disable MCP client
connection attemptsOnce the European-Parliament-MCP-Server is fully implemented, the system will automatically:
Note: The current implementation generates placeholder content in English for all languages when MCP server is unavailable. To enable full functionality:
Complete the MCP Server: The European-Parliament-MCP-Server needs implementation of:
get_plenary_sessions toolsearch_documents toolget_parliamentary_questions toolget_committee_info toolInstall MCP Server: Once ready, install the MCP server:
npm install -g european-parliament-mcp-server
# or clone and build locally
Enable MCP Client: The news generator will automatically connect when the server is available
EU Parliament Monitor is an automated news generation platform that monitors European Parliament activities and generates multi-language news articles covering:
EU Parliament Monitor implements security-by-design with comprehensive security controls and ISMS compliance.
Classification (per ISMS Classification Framework):
Key Security Controls:
Security Metrics:
This project follows Hack23 ISMS Secure Development Policy:
EU Parliament Monitor is an open source project with transparent governance and community standards.
This project adheres to:
EU Parliament Monitor maintains high code quality standards with comprehensive testing:
Code Standards: See docs/CODE_STANDARDS.md for detailed coding guidelines.
Comprehensive test suite with Vitest and Playwright covering all functionality:
# Run unit & integration tests
npm test
# Run with coverage
npm run test:coverage
# Run tests in watch mode
npm run test:watch
# Run with UI (browser interface)
npm run test:ui
# Run E2E tests
npm run test:e2e
# Run with UI (interactive)
npm run test:e2e:ui
# Run in headed mode (see browser)
npm run test:e2e:headed
# View test report
npm run test:e2e:report
Testing Documentation:
EU Parliament Monitor includes 8 specialized GitHub Copilot custom agents to streamline development:
Usage Example:
# Use product-task-agent to analyze repository and create improvement issues
@product-task-agent analyze the multi-language support and create issues for any gaps
# Use news-journalist to generate content
@news-journalist create a week-ahead article for the upcoming plenary session
# Use frontend-specialist for UI improvements
@frontend-specialist make the language switcher fully keyboard accessible
Learn More: See Custom Agents Documentation for detailed agent capabilities, usage patterns, and examples.
You can verify your Node.js version with:
node --version # Should be v24.x.x or higher
npm --version # Should be 10.x.x or higher
# Clone the repository
git clone https://github.com/Hack23/euparliamentmonitor.git
cd euparliamentmonitor
# Install dependencies
npm install
For real EU Parliament data integration, install the MCP server:
# Clone the MCP server repository
git clone https://github.com/Hack23/European-Parliament-MCP-Server.git
cd European-Parliament-MCP-Server
# Install dependencies and build
npm install
npm run build
# The server will be available at dist/index.js
# You can install it globally or reference the path
Configure the MCP server path in environment variables:
export EP_MCP_SERVER_PATH="/path/to/European-Parliament-MCP-Server/dist/index.js"
Note: The MCP server is currently in development. News generation works without it using placeholder content.
# Generate week ahead article in English
npm run generate-news -- --types=week-ahead --languages=en
# Generate multiple article types in multiple languages
npm run generate-news -- --types=week-ahead,committee-reports --languages=en,de,fr
# Generate in all EU core languages
npm run generate-news -- --types=week-ahead --languages=eu-core
# Generate in all supported languages
npm run generate-news -- --types=week-ahead --languages=all
# Generate language-specific index pages
npm run generate-news-indexes
# Generate sitemap.xml
npm run generate-sitemap
# Serve the site locally
npm run serve
# Open http://localhost:8080 in your browser
euparliamentmonitor/
โโโ .github/
โ โโโ agents/ # Custom GitHub Copilot agents
โ โโโ workflows/ # CI/CD workflow configurations
โ โโโ release-drafter.yml # Release notes configuration
โโโ src/ # TypeScript source (compiles to scripts/)
โ โโโ constants/ # Language data, configuration
โ โโโ generators/ # News, index, sitemap generators
โ โโโ mcp/ # European Parliament MCP client
โ โโโ templates/ # HTML article templates
โ โโโ types/ # Shared TypeScript interfaces
โ โโโ utils/ # File utilities, metadata
โโโ scripts/ # Compiled JavaScript output
โ โโโ constants/ # Compiled constants
โ โโโ generators/ # Compiled generators
โ โโโ mcp/ # Compiled MCP client
โ โโโ templates/ # Compiled templates
โ โโโ types/ # Compiled type definitions
โ โโโ utils/ # Compiled utilities
โโโ news/ # Generated news articles
โ โโโ metadata/ # Generation metadata
โโโ test/ # Vitest unit & integration tests
โโโ e2e/ # Playwright E2E tests
โโโ docs/ # Generated documentation
โโโ styles.css # Article styling
โโโ index-{lang}.html # Language-specific index pages
โโโ typedoc.json # TypeDoc configuration
โโโ tsconfig.json # TypeScript configuration
โโโ sitemap.xml # SEO sitemap
โโโ package.json # Project dependencies
The repository includes comprehensive GitHub Actions workflows for automation and quality assurance:
.github/workflows/news-generation.ymlWorkflow Inputs:
article_types: Comma-separated list of article types (default: week-ahead)languages: Languages to generate (en, eu-core, all, or custom list)force_generation: Force generation even if recent articles exist.github/labeler.yml.github/workflows/labeler.yml.github/workflows/setup-labels.yml once to create all labels.github/workflows/release.yml.github/release-drafter.yml.github/workflows/codeql.yml, .github/workflows/scorecards.yml, .github/dependabot.yml, .github/workflows/dependency-review.yml.github/workflows/reuse.yml, .github/workflows/sonarcloud.yml, .github/workflows/slsa-provenance.yml.github/workflows/test-and-report.yml๐ Evidence: See Workflow Status Badges at top of README.
Core Workflows:
Security Workflows:
Compliance Workflows:
To create a new release:
v1.0.0)๐ ISMS Evidence:
Every release automatically generates comprehensive documentation:
| Documentation | Description | Link |
|---|---|---|
| API Documentation | TypeDoc-generated API reference from TypeScript source | View Docs |
| Test Coverage | Interactive Vitest coverage reports (82%+) | View Coverage |
| E2E Test Reports | Playwright test results with screenshots | View Report |
| Documentation Index | Beautiful hub linking all reports | View Index |
๐ How It Works:
docs/main branch๐ฏ Run Locally:
npm run docs:generate # Generate all documentation
npm run docs:api # Generate API docs only
npm run docs:index # Generate index page
๐ ISMS Compliance:
First-time setup requires running the label creation workflow:
en - English onlyeu-core - English, German, French, Spanish, Italian, Dutchnordic - English, Swedish, Danish, Finnishall - All 14 supported languagesweek-ahead - Preview of upcoming parliamentary eventscommittee-reports - Committee activity analysis (coming soon)propositions - Legislative proposals analysis (coming soon)motions - Parliamentary motions analysis (coming soon)breaking - Breaking news coverage (coming soon)We welcome contributions from developers, journalists, translators, and security researchers!
Please read our comprehensive Contributing Guide for:
This project adheres to the Contributor Covenant Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to conduct@hack23.com.
If you discover a security vulnerability, please follow our Security Policy for responsible disclosure. Do not report security issues through public GitHub issues.
See AUTHORS.md for a list of contributors who have helped make this project possible. Contributions are welcome! Please see CONTRIBUTING.md for detailed guidelines on:
Security-Critical Contributions: All security-related changes must align with SECURITY_ARCHITECTURE.md and Hack23 ISMS Secure Development Policy.
For security vulnerability reporting and disclosure process, please see SECURITY.md.
Responsible Disclosure:
EU Parliament Monitor maintains security excellence through continuous compliance with OpenSSF best practices:
Current Optimizations:
main branchMonitoring: View current score at OpenSSF Scorecard Dashboard
Requirements Met:
Registration: Complete questionnaire at CII Best Practices
Provenance Generation:
.github/workflows/slsa-provenance.ymlactions/attest-build-provenance@v2Verification: View attestations at https://github.com/Hack23/euparliamentmonitor/attestations/
Setup Required:
SONAR_TOKEN secret to GitHub repositoryWorkflow: Runs automatically on push to main and pull requests
Setup Required:
Badge: Updates automatically after scan completion
Compliance Verification:
.reuse/dep5 covers all files without headersWorkflow: Runs on push, pull requests, and weekly via .github/workflows/reuse.yml
This project adheres to Hack23 ISMS policies:
| Policy | Relevance | Implementation |
|---|---|---|
| Open Source Policy | Security badge requirements | All required badges implemented |
| Secure Development Policy | Development security standards | SECURITY_ARCHITECTURE.md, SAST/SCA/DAST |
| Threat Modeling Policy | Threat analysis requirements | STRIDE analysis in SECURITY_ARCHITECTURE.md |
| Vulnerability Management | Remediation SLAs | SECURITY.md disclosure timeline |
| Classification Framework | Data classification | Public/Medium/Medium (L1/L2/L2) |
| Incident Response Plan | Security incident procedures | Linked in SECURITY.md |
EU Parliament Monitor aligns with multiple compliance frameworks:
| Framework | Controls | Evidence |
|---|---|---|
| ISO 27001 | A.12.6.1 (Vulnerability Management), A.14.2.8 (Security Testing) | CodeQL, Dependabot, npm audit |
| NIST CSF 2.0 | Identify, Protect, Detect, Respond, Recover | SECURITY_ARCHITECTURE.md compliance matrix |
| CIS Controls v8.1 | 18.3 (Remediate Vulnerabilities), 2.7 (Allowlisting) | Automated scanning, SBOM |
| GDPR | Data Protection by Design | European Parliament open data (public) |
| NIS2 | Article 20, 21 (Cybersecurity Risk Management) | Threat model, security controls |
| EU Cyber Resilience Act | SBOM, Vulnerability Disclosure | SLSA provenance, SECURITY.md |
Copyright 2024-2026 Hack23 AB
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
See LICENSE file for full details.
This project is based on the news generation implementation from Hack23/riksdagsmonitor.
Hack23 AB - Intelligence Operations Team