spb/trouve-ka Public
Trouve-KA — moteur de recherche web indépendant, Québec-first. Crawler distribué, index OpenSearch, ranking bilingue, galerie d'images. En prod : www.trouve-ka.com
Python 76.8%
TypeScript 15.7%
SQL 3.9%
Shell 1.4%
CSS 1.3%
Dockerfile 0.7%
1# Trouve-KA — Python monorepo build configuration2# Author: Simon-Pierre Boucher3# Contact: contact@spboucher.ai45[project]6name = "trouveka"7version = "0.1.0"8description = "Trouve-KA — moteur de recherche web indépendant, Québec-first"9requires-python = ">=3.12"10authors = [{ name = "Simon-Pierre Boucher", email = "contact@spboucher.ai" }]11dependencies = [12 "fastapi>=0.115",13 "uvicorn[standard]>=0.30",14 "httpx>=0.27",15 "brotli>=1.1",16 "selectolax>=0.3.21",17 "protego>=0.3.1",18 "asyncpg>=0.29",19 "redis>=5.0",20 "opensearch-py[async]>=2.6",21 "pydantic>=2.7",22 "pydantic-settings>=2.3",23 "langdetect>=1.0.9",24 "python-dateutil>=2.9",25]2627[project.optional-dependencies]28dev = [29 "pytest>=8",30 "pytest-asyncio>=0.23",31 "ruff>=0.5",32]3334[build-system]35requires = ["setuptools>=69"]36build-backend = "setuptools.build_meta"3738# The "trouveka" namespace package is assembled from the monorepo layout:39# packages/* hold shared libraries, services/* hold pipeline services,40# apps/api holds the FastAPI application (see CLAUDE.md §2).41[tool.setuptools]42packages = [43 "trouveka.config",44 "trouveka.logging",45 "trouveka.types",46 "trouveka.shared",47 "trouveka.database",48 "trouveka.queue",49 "trouveka.search_core",50 "trouveka.crawler",51 "trouveka.frontier",52 "trouveka.parser",53 "trouveka.classifier",54 "trouveka.indexer",55 "trouveka.ranking",56 "trouveka.scheduler",57 "trouveka.enrichment",58 "trouveka.api",59]6061[tool.setuptools.package-dir]62"trouveka.config" = "packages/config"63"trouveka.logging" = "packages/logging"64"trouveka.types" = "packages/types"65"trouveka.shared" = "packages/shared"66"trouveka.database" = "packages/database"67"trouveka.queue" = "packages/queue"68"trouveka.search_core" = "packages/search-core"69"trouveka.crawler" = "services/crawler"70"trouveka.frontier" = "services/frontier"71"trouveka.parser" = "services/parser"72"trouveka.classifier" = "services/classifier"73"trouveka.indexer" = "services/indexer"74"trouveka.ranking" = "services/ranking"75"trouveka.scheduler" = "services/scheduler"76"trouveka.enrichment" = "services/enrichment"77"trouveka.api" = "apps/api"7879[tool.pytest.ini_options]80asyncio_mode = "auto"81testpaths = ["tests"]8283[tool.ruff]84line-length = 11085target-version = "py312"86