# variamosple/variamos_ms_languages architecture

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

- Interactive diagram: https://gitdiagram.com/variamosple/variamos_ms_languages
- Repository: https://github.com/variamosple/variamos_ms_languages

## Overview

Variamos Languages is a TypeScript microservice for managing language definitions and user access. Its principal flow is an HTTP request through an Express entry point, into a domain use case, and—where evidenced—through persistence to PostgreSQL before an API response. The tree shows separate v1, v2, administration, and user-language surfaces, plus language semantics/drawing queries and session management. The README describes an unrelated Drupal menu module, so product identification relies on package metadata and source. Several domain and entry-point files were not sampled; their internal wiring is not assumed.

Main entry points: [`src/DataProviders/dataBase/VariamosORM.ts`](https://github.com/variamosple/variamos_ms_languages/blob/main/src/DataProviders/dataBase/VariamosORM.ts) (Sequelize connection), [`src/Domain/Init/StartServiceUseCases.ts`](https://github.com/variamosple/variamos_ms_languages/blob/main/src/Domain/Init/StartServiceUseCases.ts) (Express service), [`src/EntryPoints/languagesV2EntryPoints.ts`](https://github.com/variamosple/variamos_ms_languages/blob/main/src/EntryPoints/languagesV2EntryPoints.ts) (Languages v2 API), [`src/Domain/Session/SessionDao.ts`](https://github.com/variamosple/variamos_ms_languages/blob/main/src/Domain/Session/SessionDao.ts) (Session DAO)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Service runtime"]
  node_server["Express service"]
end

subgraph group_api["HTTP entry points"]
  node_language_api["Language API"]
  node_admin_api["Admin language API"]
  node_languages_v2["Languages v2 API"]
  node_user_languages_v2["User languages API"]
  node_users_v2["Users v2 API"]
end

subgraph group_domain["Language and session domain"]
  node_legacy_language["Language management"]
  node_language_usecase["Language use cases<br/>[LanguageUseCase.ts]"]
  node_admin_language["Admin language use case"]
  node_external_functions["External functions"]
  node_session_usecases["Session management<br/>[sessionUseCases.ts]"]
  node_users_usecase["User access use cases<br/>[UsersUseCase.ts]"]
end

subgraph group_persistence["Persistence"]
  node_language_repo["Language repository"]
  node_admin_repo["Admin language repository"]
  node_users_repo["Users repository<br/>[UsersRepository.ts]"]
  node_session_dao["Session DAO<br/>[SessionDao.ts]"]
  node_orm["Sequelize connection<br/>[VariamosORM.ts]"]
end

node_client(("API client"))
node_postgres[("PostgreSQL database")]

node_client -->|"sends HTTP"| node_server
node_server -->|"mounts routes"| node_language_api
node_server -->|"mounts routes"| node_admin_api
node_server -->|"mounts routes"| node_languages_v2
node_server -->|"mounts routes"| node_users_v2
node_languages_v2 -->|"calls use cases"| node_language_usecase
node_legacy_language -->|"queries data"| node_orm
node_session_usecases -->|"calls DAO"| node_session_dao
node_session_dao -->|"queries and writes"| node_orm
node_language_repo -->|"queries data"| node_orm
node_admin_repo -->|"queries and writes"| node_orm
node_users_repo -->|"queries data"| node_orm
node_orm -->|"connects to"| node_postgres

click node_server "https://github.com/variamosple/variamos_ms_languages/blob/main/src/Domain/Init/StartServiceUseCases.ts"
click node_language_api "https://github.com/variamosple/variamos_ms_languages/blob/main/src/EntryPoints/languageEntryPoints.ts"
click node_admin_api "https://github.com/variamosple/variamos_ms_languages/blob/main/src/EntryPoints/adminLanguagesV1EntryPoints.ts"
click node_languages_v2 "https://github.com/variamosple/variamos_ms_languages/blob/main/src/EntryPoints/languagesV2EntryPoints.ts"
click node_user_languages_v2 "https://github.com/variamosple/variamos_ms_languages/blob/main/src/EntryPoints/userLanguagesV2EntryPoints.ts"
click node_users_v2 "https://github.com/variamosple/variamos_ms_languages/blob/main/src/EntryPoints/usersV2EntryPoints.ts"
click node_legacy_language "https://github.com/variamosple/variamos_ms_languages/blob/main/src/Domain/Language/languageUseCases.ts"
click node_language_usecase "https://github.com/variamosple/variamos_ms_languages/blob/main/src/Domain/Language/LanguageUseCase.ts"
click node_admin_language "https://github.com/variamosple/variamos_ms_languages/blob/main/src/Domain/Language/AdminLanguageUseCase.ts"
click node_external_functions "https://github.com/variamosple/variamos_ms_languages/blob/main/src/Domain/Language/externalFunctionUseCases.ts"
click node_session_usecases "https://github.com/variamosple/variamos_ms_languages/blob/main/src/Domain/Session/sessionUseCases.ts"
click node_users_usecase "https://github.com/variamosple/variamos_ms_languages/blob/main/src/Domain/Session/UsersUseCase.ts"
click node_language_repo "https://github.com/variamosple/variamos_ms_languages/blob/main/src/DataProviders/repository/Language/LanguagesRepository.ts"
click node_admin_repo "https://github.com/variamosple/variamos_ms_languages/blob/main/src/DataProviders/repository/Language/AdminLanguagesRepository.ts"
click node_users_repo "https://github.com/variamosple/variamos_ms_languages/blob/main/src/DataProviders/repository/Session/UsersRepository.ts"
click node_session_dao "https://github.com/variamosple/variamos_ms_languages/blob/main/src/Domain/Session/SessionDao.ts"
click node_orm "https://github.com/variamosple/variamos_ms_languages/blob/main/src/DataProviders/dataBase/VariamosORM.ts"

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_server,node_client toneBlue
class node_language_api,node_admin_api,node_languages_v2,node_user_languages_v2,node_users_v2,node_postgres toneAmber
class node_legacy_language,node_language_usecase,node_admin_language,node_external_functions,node_session_usecases,node_users_usecase toneMint
class node_language_repo,node_admin_repo,node_users_repo,node_session_dao,node_orm toneRose
```

## Components

### Service runtime

- [Express service](https://github.com/variamosple/variamos_ms_languages/blob/main/src/Domain/Init/StartServiceUseCases.ts): `src/Domain/Init/StartServiceUseCases.ts`

### HTTP entry points

- [Language API](https://github.com/variamosple/variamos_ms_languages/blob/main/src/EntryPoints/languageEntryPoints.ts): `src/EntryPoints/languageEntryPoints.ts`
- [Admin language API](https://github.com/variamosple/variamos_ms_languages/blob/main/src/EntryPoints/adminLanguagesV1EntryPoints.ts): `src/EntryPoints/adminLanguagesV1EntryPoints.ts`
- [Languages v2 API](https://github.com/variamosple/variamos_ms_languages/blob/main/src/EntryPoints/languagesV2EntryPoints.ts): `src/EntryPoints/languagesV2EntryPoints.ts`
- [User languages API](https://github.com/variamosple/variamos_ms_languages/blob/main/src/EntryPoints/userLanguagesV2EntryPoints.ts): `src/EntryPoints/userLanguagesV2EntryPoints.ts`
- [Users v2 API](https://github.com/variamosple/variamos_ms_languages/blob/main/src/EntryPoints/usersV2EntryPoints.ts): `src/EntryPoints/usersV2EntryPoints.ts`

### Language and session domain

- [Language management](https://github.com/variamosple/variamos_ms_languages/blob/main/src/Domain/Language/languageUseCases.ts): `src/Domain/Language/languageUseCases.ts`
- [Language use cases](https://github.com/variamosple/variamos_ms_languages/blob/main/src/Domain/Language/LanguageUseCase.ts): `src/Domain/Language/LanguageUseCase.ts`
- [Admin language use case](https://github.com/variamosple/variamos_ms_languages/blob/main/src/Domain/Language/AdminLanguageUseCase.ts): `src/Domain/Language/AdminLanguageUseCase.ts`
- [External functions](https://github.com/variamosple/variamos_ms_languages/blob/main/src/Domain/Language/externalFunctionUseCases.ts): `src/Domain/Language/externalFunctionUseCases.ts`
- [Session management](https://github.com/variamosple/variamos_ms_languages/blob/main/src/Domain/Session/sessionUseCases.ts): `src/Domain/Session/sessionUseCases.ts`
- [User access use cases](https://github.com/variamosple/variamos_ms_languages/blob/main/src/Domain/Session/UsersUseCase.ts): `src/Domain/Session/UsersUseCase.ts`

### Persistence

- [Language repository](https://github.com/variamosple/variamos_ms_languages/blob/main/src/DataProviders/repository/Language/LanguagesRepository.ts): `src/DataProviders/repository/Language/LanguagesRepository.ts`
- [Admin language repository](https://github.com/variamosple/variamos_ms_languages/blob/main/src/DataProviders/repository/Language/AdminLanguagesRepository.ts): `src/DataProviders/repository/Language/AdminLanguagesRepository.ts`
- [Users repository](https://github.com/variamosple/variamos_ms_languages/blob/main/src/DataProviders/repository/Session/UsersRepository.ts): `src/DataProviders/repository/Session/UsersRepository.ts`
- [Session DAO](https://github.com/variamosple/variamos_ms_languages/blob/main/src/Domain/Session/SessionDao.ts): `src/Domain/Session/SessionDao.ts`
- [Sequelize connection](https://github.com/variamosple/variamos_ms_languages/blob/main/src/DataProviders/dataBase/VariamosORM.ts): `src/DataProviders/dataBase/VariamosORM.ts`

### Other components

- **API client**
- **PostgreSQL database**

## Connections

- API client → Express service: sends HTTP
- Express service → Language API: mounts routes
- Express service → Admin language API: mounts routes
- Express service → Languages v2 API: mounts routes
- Express service → Users v2 API: mounts routes
- Languages v2 API → Language use cases: calls use cases
- Language management → Sequelize connection: queries data
- Session management → Session DAO: calls DAO
- Session DAO → Sequelize connection: queries and writes
- Language repository → Sequelize connection: queries data
- Admin language repository → Sequelize connection: queries and writes
- Users repository → Sequelize connection: queries data
- Sequelize connection → PostgreSQL database: connects to
