Skip to content

AI-powered platform for German Green Party members - text generation, sharepics, image transformation, and video subtitles

License

Notifications You must be signed in to change notification settings

netzbegruenung/Gruenerator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

596 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Grรผnerator

Grรผnerator

The Green AI โ€” AI-powered content creation for sustainable politics

Version Node.js React PostgreSQL Mistral AI License PRs Welcome

Live Demo ยท Documentation ยท Report Bug ยท Request Feature


Table of Contents


About

The Problem

Political organizations need to create compelling, consistent content across multiple channels โ€” press releases, social media graphics, video subtitles, and more. Traditional AI tools lack the specialized knowledge and ethical considerations required for political communication, and generic solutions don't understand party-specific terminology, style guides, or compliance requirements.

The Solution

Grรผnerator is a purpose-built AI platform for members and supporters of the German Green Party (Die Grรผnen). It combines state-of-the-art AI models with domain-specific knowledge to generate high-quality political content while maintaining transparency, privacy, and EU compliance.

Pro-EU: Digital Sovereignty First

Grรผnerator is built on 100% European infrastructure with a commitment to digital sovereignty:

Principle Implementation
100% EU Hosting All servers located exclusively in the European Union
European AI Providers Default: Mistral AI (France), Images: Black Forest Labs (Germany)
Privacy Mode Self-hosted by netzbegrรผnung e.V. on German servers
75% EU Target Minimum 75% of spending with European companies

Key Features

Feature Description
AI Modes Kreativ (Mistral), Reasoning (Magistral), Ultra (Claude via EU Bedrock), Self-hosted (LiteLLM)
Web Search Real-time integration of facts, statistics, and political developments
Privacy Mode Maximum data protection โ€” self-hosted AI on German servers
Knowledge Base Custom instructions and organizational knowledge for tailored outputs
EU Compliance GDPR-focused design with transparency guidelines

Built With

React Vite Node.js Express PostgreSQL Redis Mistral AI Keycloak


Features

Text Generation

Generate professional political content with AI assistance:

  • Press releases and statements
  • Social media posts (optimized per platform)
  • Policy documents and motions
  • Accessible language translations

Sharepic Generator

Create branded social media graphics:

  • Quote cards and infographics
  • Campaign visuals
  • Consistent party branding
  • Multiple export formats

Video Subtitler

Professional subtitle generation for videos:

  • AI-powered transcription
  • Multiple styling options
  • Instagram/TikTok optimized formats
  • HD+ resolution support

Real-time Collaboration

Y.js-powered collaborative editing:

  • Multi-user document editing
  • Conflict-free synchronization
  • Persistent document storage

Additional Features

  • Grรผne Wolke โ€” Nextcloud integration for file sharing
  • Custom Instructions โ€” Personalized AI guidelines
  • Multi-domain Support โ€” .de, .at, .eu domains
  • PWA Support โ€” Install as native app on mobile devices

Architecture

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                         FRONTEND                                 โ”‚
โ”‚  React 19 + Vite 7 โ”‚ Zustand โ”‚ React Query โ”‚ React Router v7    โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                 โ”‚ REST API
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                         BACKEND                                  โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚  โ”‚   Express   โ”‚  โ”‚   Cluster   โ”‚  โ”‚      AI Worker Pool     โ”‚  โ”‚
โ”‚  โ”‚   Server    โ”‚โ”€โ”€โ”‚   Workers   โ”‚โ”€โ”€โ”‚  Claude โ”‚ OpenAI โ”‚ etc  โ”‚  โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
โ”‚                                                                  โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚  โ”‚  Keycloak   โ”‚  โ”‚    Redis    โ”‚  โ”‚       PostgreSQL        โ”‚  โ”‚
โ”‚  โ”‚    OIDC     โ”‚  โ”‚   Sessions  โ”‚  โ”‚        Database         โ”‚  โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
โ”‚                                                                  โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”‚
โ”‚  โ”‚   Qdrant    โ”‚  โ”‚              Y.js WebSocket             โ”‚   โ”‚
โ”‚  โ”‚   Vectors   โ”‚  โ”‚         Real-time Collaboration         โ”‚   โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Key Patterns

  • Cluster-based Workers โ€” Express servers scaled across CPU cores
  • AI Worker Pool โ€” Dedicated threads for AI API calls (non-blocking)
  • Feature-Sliced Design โ€” Modular frontend architecture
  • Multi-Source SSO โ€” Keycloak with identity brokering (SAML/OIDC)

Getting Started

Prerequisites

  • Node.js >= 22.x
  • PostgreSQL >= 15
  • Redis >= 7
  • Keycloak (for authentication)
  • FFmpeg (for video processing)

Installation

  1. Clone the repository

    git clone https://github.com/netzbegruenung/Gruenerator.git
    cd gruenerator
  2. Install dependencies

    # Install all dependencies with pnpm
    pnpm install
  3. Configure environment

    # Copy example configs
    cp apps/api/.env.example apps/api/.env
    cp apps/web/.env.example apps/web/.env
    
    # Edit with your values (see Configuration section)
  4. Initialize database

    # Run PostgreSQL schema
    psql -d gruenerator -f apps/api/database/postgres/schema.sql
  5. Start development servers

    # Terminal 1: Backend
    pnpm dev:backend
    
    # Terminal 2: Frontend
    pnpm dev:web
    
    # Terminal 3: Y.js collaboration server (optional)
    pnpm --filter @gruenerator/api start:yjs
  6. Access the application


Configuration

Backend Environment Variables

# AI APIs
MISTRAL_API_KEY=...                    # Primary AI provider
AWS_ACCESS_KEY_ID=...                  # For Ultra mode (Claude via Bedrock)
AWS_SECRET_ACCESS_KEY=...
LITELLM_API_KEY=...                    # Self-hosted fallback

# Keycloak Authentication
KEYCLOAK_BASE_URL=https://auth.example.com
KEYCLOAK_REALM=Gruenerator
KEYCLOAK_CLIENT_ID=gruenerator
KEYCLOAK_CLIENT_SECRET=...

# Database
DATABASE_URL=postgresql://user:pass@localhost:5432/gruenerator

# Redis
REDIS_URL=redis://localhost:6379

# Base URLs
BASE_URL=http://localhost:3000
AUTH_BASE_URL=http://localhost:5173

Frontend Environment Variables

VITE_BACKEND_URL=http://localhost:3000
VITE_SUPABASE_URL=...  # Legacy, being migrated
VITE_SUPABASE_ANON_KEY=...

Usage

Development Commands

# Frontend
npm start           # Start dev server
npm run build       # Production build
npm run analyze     # Bundle analysis

# Backend
npm run dev         # Start with nodemon
npm run start:yjs   # Y.js collaboration server
npm test            # Run tests
npm run test:auth   # Authentication tests

Mobile Installation (PWA)

Android (Chrome)

  1. Open https://gruenerator.de
  2. Tap menu (โ‹ฎ)
  3. Select "Add to Home Screen"

iOS (Safari)

  1. Open https://gruenerator.de
  2. Tap Share button
  3. Select "Add to Home Screen"

Documentation

User-facing documentation is maintained in the /documentation directory using Docusaurus.

Development

pnpm run dev:documentation     # Start documentation dev server (localhost:3000)
pnpm run build:documentation   # Build documentation site

Documentation Structure

documentation/
โ”œโ”€โ”€ docs/           # Main documentation pages
โ”‚   โ”œโ”€โ”€ Grundlagen/        # Basics and guides
โ”‚   โ”œโ”€โ”€ Profil/            # Profile and cloud features
โ”‚   โ”œโ”€โ”€ gruenerieren/      # Content generation features
โ”‚   โ”œโ”€โ”€ llm-basics/        # AI/LLM fundamentals
โ”‚   โ””โ”€โ”€ ueber-den-gruenerator/  # About Grรผnerator
โ”œโ”€โ”€ blog/           # News and updates
โ”œโ”€โ”€ src/            # Custom pages and components
โ””โ”€โ”€ static/         # Images and assets

Deployment

Documentation is deployed to: https://xgwok08o0ccgo4g4cgcoksc8.services.moritz-waechter.de


Roadmap

  • Core text generation
  • Sharepic generator
  • Video subtitler
  • Real-time collaboration
  • Multi-domain support (.de, .at, .eu)
  • Native mobile apps
  • Plugin system
  • API for third-party integrations
  • Multi-language interface (EN, FR)

See the CHANGELOG for recent updates.


Contributing

Contributions are welcome! Please read our Contributing Guidelines for details.

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Development Guidelines

  • Use CSS variables from variables.css โ€” never hardcode colors
  • Follow feature-sliced architecture patterns
  • Test in both light and dark modes
  • Check authentication flows after auth-related changes

License

All Rights Reserved โ€” See LICENSE.md for details.


Acknowledgments

  • Netzbegrรผnung e.V. โ€” Technical support, hosting, and Privacy Mode infrastructure
  • Mistral AI โ€” Primary AI provider (France)
  • Black Forest Labs โ€” Image generation (Germany)
  • All contributors and supporters of European digital sovereignty

Contact


Built with ๐Ÿ’š in Europe for sustainable politics

About

AI-powered platform for German Green Party members - text generation, sharepics, image transformation, and video subtitles

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors 3

  •  
  •  
  •