Movie Finder¶
AI-powered movie discovery and Q&A. Describe a film you half-remember and the system finds it, enriches it with live IMDb data, and answers follow-up questions in a streamed conversation.
Quick navigation¶
-
Getting Started
Zero-to-running guide for all roles — prerequisites, cloning, secrets, local stack.
-
API Reference
OpenAPI 3.1.0 specification with interactive Swagger UI.
-
Architecture
C4 model, class diagrams, sequence diagrams, and architecture decision records.
-
DevOps & Platform
Jenkins setup, Azure provisioning, CI/CD pipeline guide, secrets management.
-
Services
Individual service documentation — backend, frontend, chain, IMDb client, RAG ingestion.
-
Contributing
Branching strategy, commit conventions, PR process, code standards, testing requirements.
System overview¶
Browser (Angular 21 SPA)
│ REST + SSE (JWT Bearer)
▼
FastAPI Backend ─────────────────────────────────────────────────┐
│ │
▼ ▼
LangGraph Chain PostgreSQL
├── Shared checkpoints ◄── backend-owned checkpointer users / sessions /
├── RAG Search ──► Qdrant Cloud (3072-dim vector store) messages / checkpoints
├── IMDb Enrichment ──► imdbapi.dev / token blocklist
├── Validation
├── Presentation
├── Confirmation ◄── user picks a movie
├── Q&A Agent (Claude Sonnet — answers questions)
└── Refinement (up to 3 re-query cycles)
LLMs: Anthropic Claude (chain) · OpenAI text-embedding-3-large
Cloud: Azure Container Apps · Azure PostgreSQL Flexible Server · ACR · Key Vault
CI/CD: Jenkins (CONTRIBUTION → INTEGRATION → RELEASE)
Repository map¶
| Submodule | Description |
|---|---|
backend/ |
FastAPI + LangGraph integration root |
backend/app/ |
Auth, chat routers, session store |
backend/chain/ |
LangGraph multi-agent pipeline |
backend/chain/imdbapi/ |
Async IMDb REST API client |
backend/rag_ingestion/ |
Dataset → embed → Qdrant ingestion |
frontend/ |
Angular 21 SPA |
docs/ |
This documentation site |
infrastructure/ |
IaC and provisioning scripts |
Tech stack at a glance¶
| Layer | Technology |
|---|---|
| Frontend | Angular 21, TypeScript 5.9, Vitest, ESLint 9, nginx |
| Backend | Python 3.13, FastAPI, LangGraph, asyncpg |
| AI — reasoning | Anthropic Claude Haiku (classification) + Sonnet (Q&A) |
| AI — embeddings | OpenAI text-embedding-3-large (3072 dim) |
| Vector store | Qdrant Cloud |
| Relational DB | PostgreSQL 16 |
| Containerisation | Docker multi-stage builds |
| CI/CD | Jenkins (Multibranch Pipelines) |
| Registry | Azure Container Registry |
| Cloud | Azure Container Apps + PostgreSQL Flexible Server + Key Vault |
License¶
This project is released under the MIT License.