AET-DevOps26/team-colleague-md

Repository for team Colleague.md

3

stars

414

commits

HTML

primary language

Jul 17, 2026

updated

README

Verita — AI news digests, automatically summarized and personalized for you

Verita is an AI-focused community platform where developers, researchers, and enthusiasts share and discover practical AI knowledge through intelligent curation, automated summarization, and personalized recommendations. It is built as four backend microservices (three Spring Boot, one FastAPI) behind a React frontend.

API Docs

Architecture at a Glance

Verita request flow: the browser calls the API gateway, which routes by path prefix to the user, content, and recommendation Spring Boot services, each with its own PostgreSQL database. Content-service forwards to the FastAPI GenAI service over an internal service-token channel.

Full rationale in System Overview & Architecture and the ADRs.

Quick Start with Docker Compose (Local)

The fastest way to run the full platform.

First-time setup. Create genai-service/.env from the template:

cp genai-service/.env.example genai-service/.env

The placeholder values are enough to boot. The recommended setup for testing GenAI is Logos with openai/gpt-oss-120b, which is already the template default — add a real LOGOS_API_KEY in genai-service/.env to enable AI summaries and daily digest generation, or point the service at a local Ollama instead. A GNEWS_API_KEY is recommended for reliable digest source coverage, but is not required to run the service. See GenAI Environment Setup for the other providers and source API keys.

Run the docker compose from the repository root:

docker compose up --build

This builds the application services plus one PostgreSQL database per service, MinIO object storage, and a local mail sink:

ServiceURLDescription
frontendhttp://localhost:3000React UI (served by nginx)
user-servicehttp://localhost:8081Spring Boot — user identity & auth
content-servicehttp://localhost:8082Spring Boot — posts, comments & topics
recommendation-servicehttp://localhost:8083Spring Boot — feeds & notifications
genai-servicehttp://localhost:8000FastAPI — AI summaries & daily digest
user-dblocalhost:5432PostgreSQL — user-service data
content-dblocalhost:5433PostgreSQL — content-service data
recommendation-dblocalhost:5434PostgreSQL — recommendation-service data
miniohttp://localhost:9000S3-compatible object storage (admin console: http://localhost:9001)
mailpithttp://localhost:8025Local mail sink — captures password-reset mail

Common lifecycle commands:

docker compose down                       # stop all services (data is kept)
docker compose down -v                    # stop and delete all data (DBs + object storage)
docker compose up --build user-service    # start a single service only

Database and MinIO connection details and credentials live in Local Development.

Seed Demo Data

A fresh stack starts empty. Once the services are healthy, seed the local databases with demo users, posts, topics, comments, bookmarks, votes, follows, and notifications:

npm install
npm run seed:local

The seed is idempotent and non-destructive; options and the full breakdown are in Local Development.

Then open http://localhost:3000, sign in as a demo account, and follow the Review Guide for a guided tour.

A Prometheus + Grafana stack can be layered on top — see the Review Guide to bring it up, and infra/monitoring/README.md for what is collected and the Azure/Kubernetes variants.

Cloud Deployments

Live environments:

EnvironmentURLPlatform
Productionhttps://verita.stud.k8s.aet.cit.tum.de/Kubernetes (Rancher)
Developmenthttps://dev.verita.stud.k8s.aet.cit.tum.de/Kubernetes (Rancher)
Azure VMhttp://68.210.231.173/Docker Compose on a single VM

Note: don't forget to type thisisunsafe when the browser warns about the self-signed TLS certificate on the dev environment.

See Infrastructure Design and the Helm Chart for how these are provisioned and deployed.

Demo Accounts

Authentication is always against the real backend. Seed the database (npm run seed:local) to create the demo users, then log in at http://localhost:3000. All seed users share the password Password123!; profiles, posts, bookmarks, and likes are populated by the seed.

Display NameEmail (sign in with this)UsernameRole
Alex Chenalex@example.comalexchenAdmin
Sarah Kimsarah.kim@example.comsarahjkimVerified
Marcello Rossimarcello.rossi@example.commarcello_rUser

Documentation

Project-wide documentation lives under docs/ — full index in docs/README.md. Component and tooling docs live next to the code they describe. Key entry points:

DocumentWhat's inside
Review GuideReviewer walkthrough: explore checklist, health checks, monitoring
Team ResponsibilitiesWho owned which area, derived from the pull-request history
Problem StatementThe problem Verita solves, target users, and epics/user stories
System Overview & ArchitectureServices, technology decisions, data architecture, UML diagrams
Infrastructure DesignInfrastructure hub: environments, IaC, CI/CD, and deployments
API Gateway & RoutingPath-prefix routing across local, Azure, and Kubernetes
Database SchemasDatabase-per-service model and per-service schema docs
Testing StrategyTest tooling, coverage gates, and how to run tests per service
Local DevelopmentPrerequisites, backend infrastructure, seed data, per-service builds
Git Branching GuideBranch naming and pull-request workflow
MonitoringPrometheus + Grafana stack for Compose and Kubernetes
Helm ChartKubernetes deployment via the verita umbrella chart

See It Running

Recorded against a real, seeded stack — every screen below is the running application, not a mockup. Clips are sped up to keep them short.

The core loop

Signing in from a guest session, browsing the personalized For you feed, opening a post, and liking, saving, sharing, and commenting on it.

Sign in against the real user-service, and the guest banner gives way to a personally ranked For you feed. Read a post, then like, save, share, and comment — every count moves against the live backend.

The daily digest

Opening the digest archive, reading a personalized daily digest, and following one of its citations out to the GitHub release it was written from.

One digest per day, the reader's own badged Personalized. It is assembled from Hugging Face, GNews, and GitHub, then written by the LLM — the clip follows a citation out to the real release page behind it.

Authoring

Writing a post in Markdown with a live preview rendering headings, lists, and KaTeX math, then adding a source and tags and publishing it.

Write in Markdown and watch it render live, KaTeX math included. Add sources and tags, publish, and the post goes straight to the AI for summarizing.

Admin: operating the AI

An admin opening the Operations panel, re-summarizing a post by ID, and reading the summary the live LLM just wrote.

The Operations panel reads active: back from GenAI and can switch the provider and model at runtime. Re-summarize a real post, watch the job land COMPLETED against a live LLM, then read the summary it just wrote — stamped with the model behind it.

Contributors

MichaelChennn

231 commits

Arpad-H

96 commits

ByudH

86 commits

spethso

1 commits

AET-DevOps26/team-colleague-md

Repository for team Colleague.md

3

stars

414

commits

HTML

primary language

Jul 17, 2026

updated

README

Verita — AI news digests, automatically summarized and personalized for you

Verita is an AI-focused community platform where developers, researchers, and enthusiasts share and discover practical AI knowledge through intelligent curation, automated summarization, and personalized recommendations. It is built as four backend microservices (three Spring Boot, one FastAPI) behind a React frontend.

API Docs

Architecture at a Glance

Verita request flow: the browser calls the API gateway, which routes by path prefix to the user, content, and recommendation Spring Boot services, each with its own PostgreSQL database. Content-service forwards to the FastAPI GenAI service over an internal service-token channel.

Full rationale in System Overview & Architecture and the ADRs.

Quick Start with Docker Compose (Local)

The fastest way to run the full platform.

First-time setup. Create genai-service/.env from the template:

cp genai-service/.env.example genai-service/.env

The placeholder values are enough to boot. The recommended setup for testing GenAI is Logos with openai/gpt-oss-120b, which is already the template default — add a real LOGOS_API_KEY in genai-service/.env to enable AI summaries and daily digest generation, or point the service at a local Ollama instead. A GNEWS_API_KEY is recommended for reliable digest source coverage, but is not required to run the service. See GenAI Environment Setup for the other providers and source API keys.

Run the docker compose from the repository root:

docker compose up --build

This builds the application services plus one PostgreSQL database per service, MinIO object storage, and a local mail sink:

ServiceURLDescription
frontendhttp://localhost:3000React UI (served by nginx)
user-servicehttp://localhost:8081Spring Boot — user identity & auth
content-servicehttp://localhost:8082Spring Boot — posts, comments & topics
recommendation-servicehttp://localhost:8083Spring Boot — feeds & notifications
genai-servicehttp://localhost:8000FastAPI — AI summaries & daily digest
user-dblocalhost:5432PostgreSQL — user-service data
content-dblocalhost:5433PostgreSQL — content-service data
recommendation-dblocalhost:5434PostgreSQL — recommendation-service data
miniohttp://localhost:9000S3-compatible object storage (admin console: http://localhost:9001)
mailpithttp://localhost:8025Local mail sink — captures password-reset mail

Common lifecycle commands:

docker compose down                       # stop all services (data is kept)
docker compose down -v                    # stop and delete all data (DBs + object storage)
docker compose up --build user-service    # start a single service only

Database and MinIO connection details and credentials live in Local Development.

Seed Demo Data

A fresh stack starts empty. Once the services are healthy, seed the local databases with demo users, posts, topics, comments, bookmarks, votes, follows, and notifications:

npm install
npm run seed:local

The seed is idempotent and non-destructive; options and the full breakdown are in Local Development.

Then open http://localhost:3000, sign in as a demo account, and follow the Review Guide for a guided tour.

A Prometheus + Grafana stack can be layered on top — see the Review Guide to bring it up, and infra/monitoring/README.md for what is collected and the Azure/Kubernetes variants.

Cloud Deployments

Live environments:

EnvironmentURLPlatform
Productionhttps://verita.stud.k8s.aet.cit.tum.de/Kubernetes (Rancher)
Developmenthttps://dev.verita.stud.k8s.aet.cit.tum.de/Kubernetes (Rancher)
Azure VMhttp://68.210.231.173/Docker Compose on a single VM

Note: don't forget to type thisisunsafe when the browser warns about the self-signed TLS certificate on the dev environment.

See Infrastructure Design and the Helm Chart for how these are provisioned and deployed.

Demo Accounts

Authentication is always against the real backend. Seed the database (npm run seed:local) to create the demo users, then log in at http://localhost:3000. All seed users share the password Password123!; profiles, posts, bookmarks, and likes are populated by the seed.

Display NameEmail (sign in with this)UsernameRole
Alex Chenalex@example.comalexchenAdmin
Sarah Kimsarah.kim@example.comsarahjkimVerified
Marcello Rossimarcello.rossi@example.commarcello_rUser

Documentation

Project-wide documentation lives under docs/ — full index in docs/README.md. Component and tooling docs live next to the code they describe. Key entry points:

DocumentWhat's inside
Review GuideReviewer walkthrough: explore checklist, health checks, monitoring
Team ResponsibilitiesWho owned which area, derived from the pull-request history
Problem StatementThe problem Verita solves, target users, and epics/user stories
System Overview & ArchitectureServices, technology decisions, data architecture, UML diagrams
Infrastructure DesignInfrastructure hub: environments, IaC, CI/CD, and deployments
API Gateway & RoutingPath-prefix routing across local, Azure, and Kubernetes
Database SchemasDatabase-per-service model and per-service schema docs
Testing StrategyTest tooling, coverage gates, and how to run tests per service
Local DevelopmentPrerequisites, backend infrastructure, seed data, per-service builds
Git Branching GuideBranch naming and pull-request workflow
MonitoringPrometheus + Grafana stack for Compose and Kubernetes
Helm ChartKubernetes deployment via the verita umbrella chart

See It Running

Recorded against a real, seeded stack — every screen below is the running application, not a mockup. Clips are sped up to keep them short.

The core loop

Signing in from a guest session, browsing the personalized For you feed, opening a post, and liking, saving, sharing, and commenting on it.

Sign in against the real user-service, and the guest banner gives way to a personally ranked For you feed. Read a post, then like, save, share, and comment — every count moves against the live backend.

The daily digest

Opening the digest archive, reading a personalized daily digest, and following one of its citations out to the GitHub release it was written from.

One digest per day, the reader's own badged Personalized. It is assembled from Hugging Face, GNews, and GitHub, then written by the LLM — the clip follows a citation out to the real release page behind it.

Authoring

Writing a post in Markdown with a live preview rendering headings, lists, and KaTeX math, then adding a source and tags and publishing it.

Write in Markdown and watch it render live, KaTeX math included. Add sources and tags, publish, and the post goes straight to the AI for summarizing.

Admin: operating the AI

An admin opening the Operations panel, re-summarizing a post by ID, and reading the summary the live LLM just wrote.

The Operations panel reads active: back from GenAI and can switch the provider and model at runtime. Re-summarize a real post, watch the job land COMPLETED against a live LLM, then read the summary it just wrote — stamped with the model behind it.

Contributors

MichaelChennn

231 commits

Arpad-H

96 commits

ByudH

86 commits

spethso

1 commits

Languages

HTML

45.7%

TypeScript

23.4%

Java

19.8%

CSS

4.5%

Python

4.2%

Bru

1.2%