# yaltunbicak/repofit-lite architecture

> Architecture diagram of the GitHub repository yaltunbicak/repofit-lite, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/yaltunbicak/repofit-lite
- Repository: https://github.com/yaltunbicak/repofit-lite

## Overview

RepoFit Lite turns a project document into a ranked repository comparison: the CLI runs a staged parse, multi-platform search, metadata enrichment, scoring, and report workflow. Profiles tune evaluation, pipeline modes bound work, and caches can reuse enrichment and fit results. The graph reflects the documented workflow and sampled orchestration/client behavior; some CLI, configuration, and enrichment wiring is supported by the README but was not fully visible in the excerpts.

Main entry points: [`src/repofit/pipeline.py`](https://github.com/yaltunbicak/repofit-lite/blob/main/src/repofit/pipeline.py) (Pipeline orchestration), [`src/repofit/enrichment.py`](https://github.com/yaltunbicak/repofit-lite/blob/main/src/repofit/enrichment.py) (Metadata enrichment), [`src/repofit/search.py`](https://github.com/yaltunbicak/repofit-lite/blob/main/src/repofit/search.py) (Search orchestration), [`src/repofit/analyzer.py`](https://github.com/yaltunbicak/repofit-lite/blob/main/src/repofit/analyzer.py) (Fit analysis)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workflow["Analysis workflow"]
  node_cli["CLI commands<br/>[cli.py]"]
  node_pipeline["Pipeline orchestration<br/>[pipeline.py]"]
  node_parser["Document parser<br/>[parser.py]"]
  node_search["Search orchestration<br/>[search.py]"]
  node_enrichment["Metadata enrichment<br/>[enrichment.py]"]
end

subgraph group_integrations["External integrations"]
  node_github["GitHub client<br/>[github_client.py]"]
  node_gitlab["GitLab client<br/>[gitlab_client.py]"]
  node_ecosystems["ecosyste.ms client"]
  node_scorecard["OpenSSF client"]
  node_llm["LLM client<br/>[llm_client.py]"]
end

subgraph group_evaluation["Evaluation and output"]
  node_analyzer["Fit analysis<br/>[analyzer.py]"]
  node_scoring["Rule-based scoring<br/>[scoring.py]"]
  node_report["Report generation<br/>[report.py]"]
end

subgraph group_support["Configuration and state"]
  node_settings["Settings and profiles<br/>[config.py]"]
  node_profile_files["Profile definitions"]
  node_cache[("Cache and rate limits<br/>[utils.py]")]
  node_models["Domain models<br/>[models.py]"]
end

node_developer(("Developer"))
node_platforms(("Repository platforms"))
node_ecosystems_service(("ecosyste.ms service"))
node_scorecard_service(("OpenSSF service"))
node_llm_provider(("LLM providers"))
node_report_file["Ranked report"]

node_developer -->|"runs"| node_cli
node_cli -->|"loads settings"| node_settings
node_cli -->|"starts analysis"| node_pipeline
node_settings -->|"loads profiles"| node_profile_files
node_pipeline -->|"parses input"| node_parser
node_parser -->|"extracts requirements"| node_llm
node_llm -->|"requests completion"| node_llm_provider
node_pipeline -->|"searches candidates"| node_search
node_search -->|"searches"| node_github
node_search -.->|"searches"| node_gitlab
node_search -->|"searches"| node_ecosystems
node_github -->|"queries"| node_platforms
node_gitlab -.->|"queries"| node_platforms
node_ecosystems -->|"queries"| node_ecosystems_service
node_search -->|"returns candidates"| node_models
node_pipeline -->|"enriches candidates"| node_enrichment
node_enrichment -->|"fetches metadata"| node_github
node_enrichment -.->|"fetches metadata"| node_gitlab
node_enrichment -.->|"looks up details"| node_ecosystems
node_enrichment -.->|"checks security"| node_scorecard
node_scorecard -->|"requests scores"| node_scorecard_service
node_enrichment -->|"reads and writes"| node_cache
node_pipeline -->|"scores enriched repos"| node_analyzer
node_analyzer -->|"computes dimensions"| node_scoring
node_analyzer -->|"scores fit"| node_llm
node_analyzer -->|"reads and writes"| node_cache
node_pipeline -->|"formats results"| node_report
node_report -->|"produces"| node_report_file
node_pipeline -->|"writes output"| node_report_file

click node_cli "https://github.com/yaltunbicak/repofit-lite/blob/main/src/repofit/cli.py"
click node_pipeline "https://github.com/yaltunbicak/repofit-lite/blob/main/src/repofit/pipeline.py"
click node_parser "https://github.com/yaltunbicak/repofit-lite/blob/main/src/repofit/parser.py"
click node_search "https://github.com/yaltunbicak/repofit-lite/blob/main/src/repofit/search.py"
click node_enrichment "https://github.com/yaltunbicak/repofit-lite/blob/main/src/repofit/enrichment.py"
click node_github "https://github.com/yaltunbicak/repofit-lite/blob/main/src/repofit/github_client.py"
click node_gitlab "https://github.com/yaltunbicak/repofit-lite/blob/main/src/repofit/gitlab_client.py"
click node_ecosystems "https://github.com/yaltunbicak/repofit-lite/blob/main/src/repofit/ecosystems_client.py"
click node_scorecard "https://github.com/yaltunbicak/repofit-lite/blob/main/src/repofit/scorecard_client.py"
click node_llm "https://github.com/yaltunbicak/repofit-lite/blob/main/src/repofit/llm_client.py"
click node_analyzer "https://github.com/yaltunbicak/repofit-lite/blob/main/src/repofit/analyzer.py"
click node_scoring "https://github.com/yaltunbicak/repofit-lite/blob/main/src/repofit/scoring.py"
click node_report "https://github.com/yaltunbicak/repofit-lite/blob/main/src/repofit/report.py"
click node_settings "https://github.com/yaltunbicak/repofit-lite/blob/main/src/repofit/config.py"
click node_profile_files "https://github.com/yaltunbicak/repofit-lite/tree/main/profiles"
click node_cache "https://github.com/yaltunbicak/repofit-lite/blob/main/src/repofit/utils.py"
click node_models "https://github.com/yaltunbicak/repofit-lite/blob/main/src/repofit/models.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_cli,node_pipeline,node_parser,node_search,node_enrichment toneBlue
class node_github,node_gitlab,node_ecosystems,node_scorecard,node_llm toneAmber
class node_analyzer,node_scoring,node_report toneMint
class node_settings,node_profile_files,node_cache,node_models toneRose
class node_developer,node_platforms,node_ecosystems_service,node_scorecard_service,node_llm_provider,node_report_file toneIndigo
```

## Components

### Analysis workflow

- [CLI commands](https://github.com/yaltunbicak/repofit-lite/blob/main/src/repofit/cli.py): `src/repofit/cli.py`
- [Pipeline orchestration](https://github.com/yaltunbicak/repofit-lite/blob/main/src/repofit/pipeline.py): `src/repofit/pipeline.py`
- [Document parser](https://github.com/yaltunbicak/repofit-lite/blob/main/src/repofit/parser.py): `src/repofit/parser.py`
- [Search orchestration](https://github.com/yaltunbicak/repofit-lite/blob/main/src/repofit/search.py): `src/repofit/search.py`
- [Metadata enrichment](https://github.com/yaltunbicak/repofit-lite/blob/main/src/repofit/enrichment.py): `src/repofit/enrichment.py`

### External integrations

- [GitHub client](https://github.com/yaltunbicak/repofit-lite/blob/main/src/repofit/github_client.py): `src/repofit/github_client.py`
- [GitLab client](https://github.com/yaltunbicak/repofit-lite/blob/main/src/repofit/gitlab_client.py): `src/repofit/gitlab_client.py`
- [ecosyste.ms client](https://github.com/yaltunbicak/repofit-lite/blob/main/src/repofit/ecosystems_client.py): `src/repofit/ecosystems_client.py`
- [OpenSSF client](https://github.com/yaltunbicak/repofit-lite/blob/main/src/repofit/scorecard_client.py): `src/repofit/scorecard_client.py`
- [LLM client](https://github.com/yaltunbicak/repofit-lite/blob/main/src/repofit/llm_client.py): `src/repofit/llm_client.py`

### Evaluation and output

- [Fit analysis](https://github.com/yaltunbicak/repofit-lite/blob/main/src/repofit/analyzer.py): `src/repofit/analyzer.py`
- [Rule-based scoring](https://github.com/yaltunbicak/repofit-lite/blob/main/src/repofit/scoring.py): `src/repofit/scoring.py`
- [Report generation](https://github.com/yaltunbicak/repofit-lite/blob/main/src/repofit/report.py): `src/repofit/report.py`

### Configuration and state

- [Settings and profiles](https://github.com/yaltunbicak/repofit-lite/blob/main/src/repofit/config.py): `src/repofit/config.py`
- [Profile definitions](https://github.com/yaltunbicak/repofit-lite/tree/main/profiles): `profiles`
- [Cache and rate limits](https://github.com/yaltunbicak/repofit-lite/blob/main/src/repofit/utils.py): `src/repofit/utils.py`
- [Domain models](https://github.com/yaltunbicak/repofit-lite/blob/main/src/repofit/models.py): `src/repofit/models.py`

### Other components

- **Developer**
- **Repository platforms**
- **ecosyste.ms service**
- **OpenSSF service**
- **LLM providers**
- **Ranked report**

## Connections

- Developer → CLI commands: runs
- CLI commands → Settings and profiles: loads settings
- CLI commands → Pipeline orchestration: starts analysis
- Settings and profiles → Profile definitions: loads profiles
- Pipeline orchestration → Document parser: parses input
- Document parser → LLM client: extracts requirements
- LLM client → LLM providers: requests completion
- Pipeline orchestration → Search orchestration: searches candidates
- Search orchestration → GitHub client: searches
- Search orchestration → GitLab client: searches
- Search orchestration → ecosyste.ms client: searches
- GitHub client → Repository platforms: queries
- GitLab client → Repository platforms: queries
- ecosyste.ms client → ecosyste.ms service: queries
- Search orchestration → Domain models: returns candidates
- Pipeline orchestration → Metadata enrichment: enriches candidates
- Metadata enrichment → GitHub client: fetches metadata
- Metadata enrichment → GitLab client: fetches metadata
- Metadata enrichment → ecosyste.ms client: looks up details
- Metadata enrichment → OpenSSF client: checks security
- OpenSSF client → OpenSSF service: requests scores
- Metadata enrichment → Cache and rate limits: reads and writes
- Pipeline orchestration → Fit analysis: scores enriched repos
- Fit analysis → Rule-based scoring: computes dimensions
- Fit analysis → LLM client: scores fit
- Fit analysis → Cache and rate limits: reads and writes
- Pipeline orchestration → Report generation: formats results
- Report generation → Ranked report: produces
- Pipeline orchestration → Ranked report: writes output
