# olmps/memo architecture

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

- Interactive diagram: https://gitdiagram.com/olmps/memo
- Repository: https://github.com/olmps/memo

## Overview

Memo is a Flutter spaced-repetition app for programming-oriented learning. Its principal user workflow is to browse collections, inspect or edit their memos, run an execution, and review progress. The tree identifies separate application, domain, and persistence layers, plus bundled learning content. Source excerpts are limited to platform bootstrapping, so the graph uses module responsibilities and the README’s product description; internal call wiring is not verified.

Main entry points: [`lib/domain/services`](https://github.com/olmps/memo/tree/main/lib/domain/services) (Domain services), [`lib/data/repositories`](https://github.com/olmps/memo/tree/main/lib/data/repositories) (Repositories), [`lib/application/pages/execution`](https://github.com/olmps/memo/tree/main/lib/application/pages/execution) (Study execution), [`lib/main.dart`](https://github.com/olmps/memo/blob/main/lib/main.dart) (App entry)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Application"]
  node_entry["App entry<br/>[main.dart]"]
  node_navigation["Navigation"]
  node_collections["Collections"]
  node_details["Collection details"]
  node_editing["Collection editing"]
  node_execution["Study execution"]
  node_progress["Progress view"]
  node_settings["Settings"]
end

subgraph group_domain["Learning Domain"]
  node_domain_services["Domain services"]
  node_models["Learning models"]
  node_recall["Recall services"]
end

subgraph group_data["Data Access"]
  node_repositories["Repositories"]
  node_database[("Local database")]
  node_serializers["Serializers"]
end

subgraph group_content["Bundled Content"]
  node_collection_assets["Collection content"]
  node_resource_assets["Resource catalog<br/>[resources.json]"]
end

node_learner(("Learner"))

node_learner -->|"opens app"| node_entry
node_entry -->|"starts navigation"| node_navigation
node_learner -->|"browses"| node_collections
node_learner -->|"views"| node_details
node_learner -->|"edits"| node_editing
node_learner -->|"studies"| node_execution
node_learner -->|"reviews"| node_progress
node_collections -->|"requests collections"| node_domain_services
node_details -->|"requests details"| node_domain_services
node_editing -->|"updates collection"| node_domain_services
node_execution -->|"runs session"| node_domain_services
node_progress -->|"requests progress"| node_domain_services
node_domain_services -->|"uses data access"| node_repositories
node_repositories -->|"persists data"| node_database
node_repositories -->|"serializes data"| node_serializers
node_domain_services -->|"operates on"| node_models
node_execution -.->|"supports recall"| node_recall
node_repositories -.->|"loads bundled collections"| node_collection_assets
node_repositories -.->|"loads resources"| node_resource_assets

click node_entry "https://github.com/olmps/memo/blob/main/lib/main.dart"
click node_navigation "https://github.com/olmps/memo/tree/main/lib/application/coordinator"
click node_collections "https://github.com/olmps/memo/tree/main/lib/application/pages/home/collections"
click node_details "https://github.com/olmps/memo/tree/main/lib/application/pages/details"
click node_editing "https://github.com/olmps/memo/tree/main/lib/application/pages/home/collections/update"
click node_execution "https://github.com/olmps/memo/tree/main/lib/application/pages/execution"
click node_progress "https://github.com/olmps/memo/tree/main/lib/application/pages/home/progress"
click node_settings "https://github.com/olmps/memo/tree/main/lib/application/pages/settings"
click node_domain_services "https://github.com/olmps/memo/tree/main/lib/domain/services"
click node_models "https://github.com/olmps/memo/tree/main/lib/domain/models"
click node_recall "https://github.com/olmps/memo/blob/main/lib/domain/isolated_services/memory_recall_services.dart"
click node_repositories "https://github.com/olmps/memo/tree/main/lib/data/repositories"
click node_database "https://github.com/olmps/memo/blob/main/lib/data/gateways/sembast_database.dart"
click node_serializers "https://github.com/olmps/memo/tree/main/lib/data/serializers"
click node_collection_assets "https://github.com/olmps/memo/tree/main/assets/collections"
click node_resource_assets "https://github.com/olmps/memo/blob/main/assets/resources.json"

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_entry,node_navigation,node_collections,node_details,node_editing,node_execution,node_progress,node_settings toneBlue
class node_domain_services,node_models,node_recall toneAmber
class node_repositories,node_database,node_serializers toneMint
class node_collection_assets,node_resource_assets toneRose
class node_learner toneIndigo
```

## Components

### Application

- [App entry](https://github.com/olmps/memo/blob/main/lib/main.dart): `lib/main.dart`
- [Navigation](https://github.com/olmps/memo/tree/main/lib/application/coordinator): `lib/application/coordinator`
- [Collections](https://github.com/olmps/memo/tree/main/lib/application/pages/home/collections): `lib/application/pages/home/collections`
- [Collection details](https://github.com/olmps/memo/tree/main/lib/application/pages/details): `lib/application/pages/details`
- [Collection editing](https://github.com/olmps/memo/tree/main/lib/application/pages/home/collections/update): `lib/application/pages/home/collections/update`
- [Study execution](https://github.com/olmps/memo/tree/main/lib/application/pages/execution): `lib/application/pages/execution`
- [Progress view](https://github.com/olmps/memo/tree/main/lib/application/pages/home/progress): `lib/application/pages/home/progress`
- [Settings](https://github.com/olmps/memo/tree/main/lib/application/pages/settings): `lib/application/pages/settings`

### Learning Domain

- [Domain services](https://github.com/olmps/memo/tree/main/lib/domain/services): `lib/domain/services`
- [Learning models](https://github.com/olmps/memo/tree/main/lib/domain/models): `lib/domain/models`
- [Recall services](https://github.com/olmps/memo/blob/main/lib/domain/isolated_services/memory_recall_services.dart): `lib/domain/isolated_services/memory_recall_services.dart`

### Data Access

- [Repositories](https://github.com/olmps/memo/tree/main/lib/data/repositories): `lib/data/repositories`
- [Local database](https://github.com/olmps/memo/blob/main/lib/data/gateways/sembast_database.dart): `lib/data/gateways/sembast_database.dart`
- [Serializers](https://github.com/olmps/memo/tree/main/lib/data/serializers): `lib/data/serializers`

### Bundled Content

- [Collection content](https://github.com/olmps/memo/tree/main/assets/collections): `assets/collections`
- [Resource catalog](https://github.com/olmps/memo/blob/main/assets/resources.json): `assets/resources.json`

### Other components

- **Learner**

## Connections

- Learner → App entry: opens app
- App entry → Navigation: starts navigation
- Learner → Collections: browses
- Learner → Collection details: views
- Learner → Collection editing: edits
- Learner → Study execution: studies
- Learner → Progress view: reviews
- Collections → Domain services: requests collections
- Collection details → Domain services: requests details
- Collection editing → Domain services: updates collection
- Study execution → Domain services: runs session
- Progress view → Domain services: requests progress
- Domain services → Repositories: uses data access
- Repositories → Local database: persists data
- Repositories → Serializers: serializes data
- Domain services → Learning models: operates on
- Study execution → Recall services: supports recall
- Repositories → Collection content: loads bundled collections
- Repositories → Resource catalog: loads resources
