# fazza-abiyyu/exnestjs-starter architecture

> Architecture diagram of the GitHub repository fazza-abiyyu/exnestjs-starter, 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/fazza-abiyyu/exnestjs-starter
- Repository: https://github.com/fazza-abiyyu/exnestjs-starter

## Overview

Exnest is a multi-runtime, OData-oriented resource framework accompanied by three independently usable engines. The main user workflow is an HTTP request entering either framework app, reaching a resource controller, and returning OData data or metadata; the customer implementation is sampled for Elysia, while Nest’s app mounting is sampled. The README documents ORM and media-engine capabilities retained here, but their unsampled route and service wiring is not inferred. Engine internals and adapter calls are shown only where excerpts support them.

Main entry points: [`packages/elysia/src/modules/customers/customers.controller.ts`](https://github.com/fazza-abiyyu/exnestjs-starter/blob/main/packages/elysia/src/modules/customers/customers.controller.ts) (Customer controller), [`engine/video-stream/engine.ts`](https://github.com/fazza-abiyyu/exnestjs-starter/blob/main/engine/video-stream/engine.ts) (Video engine), [`engine/pdf-stream/engine.ts`](https://github.com/fazza-abiyyu/exnestjs-starter/blob/main/engine/pdf-stream/engine.ts) (PDF engine), [`packages/elysia/src/app.ts`](https://github.com/fazza-abiyyu/exnestjs-starter/blob/main/packages/elysia/src/app.ts) (Elysia app)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_apps["Framework Apps"]
  node_elysia_app["Elysia app<br/>[app.ts]"]
  node_elysia_customer_endpoint["Customer endpoint"]
  node_nest_app["Nest app<br/>[main.ts]"]
  node_nest_endpoints["Endpoint mounting<br/>[index.ts]"]
end

subgraph group_resources["Resources And OData"]
  node_elysia_customer_controller["Customer controller"]
  node_customer_service["Customer service"]
  node_odata["OData response<br/>[index.ts]"]
  node_metadata_controller["Metadata controller"]
  node_metadata_service["Metadata service"]
  node_nest_customer["Nest customer module"]
  node_nest_metadata["Nest metadata"]
end

subgraph group_orm["VA ORM"]
  node_schema_tools["Schema and CLI"]
  node_schema_parser["Schema parser<br/>[schema.parser.ts]"]
  node_orm_client["ORM client<br/>[va.client.ts]"]
  node_query_builder["Query builder<br/>[query-builder.ts]"]
  node_repository["Repositories<br/>[repository.ts]"]
  node_db_drivers["SQL drivers"]
end

subgraph group_engines["Media Engines"]
  node_video_adapter["Video Nest adapter<br/>[nest.controller.ts]"]
  node_video_engine["Video engine<br/>[engine.ts]"]
  node_video_store["Video store adapter<br/>[prisma.store.ts]"]
  node_video_files["Video files<br/>[files.ts]"]
  node_pdf_adapter["PDF Nest adapter<br/>[nest.controller.ts]"]
  node_pdf_engine["PDF engine<br/>[engine.ts]"]
  node_pdf_raster["PDF rasterizer<br/>[raster.ts]"]
  node_pdf_store["Document store adapter<br/>[prisma.store.ts]"]
  node_pdf_files["PDF files<br/>[files.ts]"]
end

node_caller(("API caller"))
node_sql_db[("SQL databases")]
node_video_source(("Remote media source"))
node_ffmpeg["FFmpeg"]

node_caller -->|"sends request"| node_elysia_app
node_elysia_app -->|"dispatches route"| node_elysia_customer_endpoint
node_elysia_customer_endpoint -->|"invokes handler"| node_elysia_customer_controller
node_elysia_customer_controller -->|"calls service"| node_customer_service
node_elysia_customer_controller -->|"builds response"| node_odata
node_elysia_customer_controller -->|"reads metadata URL"| node_metadata_service
node_elysia_app -->|"dispatches module"| node_metadata_controller
node_metadata_controller -->|"requests metadata"| node_metadata_service
node_metadata_controller -->|"builds response"| node_odata
node_caller -->|"sends request"| node_nest_app
node_nest_app -->|"mounts endpoints"| node_nest_endpoints
node_nest_endpoints -->|"mounts resource"| node_nest_customer
node_nest_endpoints -->|"mounts resource"| node_nest_metadata
node_nest_metadata -->|"requests metadata"| node_metadata_service
node_schema_tools -->|"parses schema"| node_schema_parser
node_schema_tools -->|"generates client"| node_orm_client
node_orm_client -->|"exposes repositories"| node_repository
node_repository -->|"builds queries"| node_query_builder
node_query_builder -->|"uses driver"| node_db_drivers
node_db_drivers -->|"executes SQL"| node_sql_db
node_video_source -->|"submits source"| node_video_adapter
node_caller -->|"requests stream"| node_video_adapter
node_video_adapter -->|"calls engine"| node_video_engine
node_video_engine -->|"reads and writes"| node_video_store
node_video_engine -->|"stores segments"| node_video_files
node_video_engine -->|"packages HLS"| node_ffmpeg
node_caller -->|"requests document"| node_pdf_adapter
node_pdf_adapter -->|"calls engine"| node_pdf_engine
node_pdf_engine -->|"reads and writes"| node_pdf_store
node_pdf_engine -->|"stores pages"| node_pdf_files
node_pdf_engine -->|"rasterizes pages"| node_pdf_raster

click node_elysia_app "https://github.com/fazza-abiyyu/exnestjs-starter/blob/main/packages/elysia/src/app.ts"
click node_elysia_customer_endpoint "https://github.com/fazza-abiyyu/exnestjs-starter/blob/main/packages/elysia/src/endpoints/customers/customers.endpoint.ts"
click node_elysia_customer_controller "https://github.com/fazza-abiyyu/exnestjs-starter/blob/main/packages/elysia/src/modules/customers/customers.controller.ts"
click node_customer_service "https://github.com/fazza-abiyyu/exnestjs-starter/blob/main/packages/elysia/src/modules/customers/customers.service.ts"
click node_odata "https://github.com/fazza-abiyyu/exnestjs-starter/blob/main/packages/elysia/src/lib/odata/index.ts"
click node_metadata_controller "https://github.com/fazza-abiyyu/exnestjs-starter/blob/main/packages/elysia/src/modules/metadata/metadata.controller.ts"
click node_metadata_service "https://github.com/fazza-abiyyu/exnestjs-starter/blob/main/packages/elysia/src/modules/metadata/metadata.service.ts"
click node_nest_app "https://github.com/fazza-abiyyu/exnestjs-starter/blob/main/packages/nestjs/src/main.ts"
click node_nest_endpoints "https://github.com/fazza-abiyyu/exnestjs-starter/blob/main/packages/nestjs/src/endpoints/index.ts"
click node_nest_customer "https://github.com/fazza-abiyyu/exnestjs-starter/tree/main/packages/nestjs/src/modules"
click node_nest_metadata "https://github.com/fazza-abiyyu/exnestjs-starter/blob/main/packages/nestjs/src/modules/metadata/metadata.controller.ts"
click node_schema_tools "https://github.com/fazza-abiyyu/exnestjs-starter/tree/main/engine/va-orm/packages/cli/src"
click node_schema_parser "https://github.com/fazza-abiyyu/exnestjs-starter/blob/main/engine/va-orm/packages/schema/src/schema.parser.ts"
click node_orm_client "https://github.com/fazza-abiyyu/exnestjs-starter/blob/main/engine/va-orm/packages/client/src/core/va.client.ts"
click node_query_builder "https://github.com/fazza-abiyyu/exnestjs-starter/blob/main/engine/va-orm/packages/client/src/core/query-builder.ts"
click node_repository "https://github.com/fazza-abiyyu/exnestjs-starter/blob/main/engine/va-orm/packages/client/src/repository/repository.ts"
click node_db_drivers "https://github.com/fazza-abiyyu/exnestjs-starter/tree/main/engine/va-orm/packages/client/src/drivers"
click node_video_adapter "https://github.com/fazza-abiyyu/exnestjs-starter/blob/main/engine/video-stream/adapters/nest.controller.ts"
click node_video_engine "https://github.com/fazza-abiyyu/exnestjs-starter/blob/main/engine/video-stream/engine.ts"
click node_video_store "https://github.com/fazza-abiyyu/exnestjs-starter/blob/main/engine/video-stream/adapters/prisma.store.ts"
click node_video_files "https://github.com/fazza-abiyyu/exnestjs-starter/blob/main/engine/video-stream/internals/files.ts"
click node_pdf_adapter "https://github.com/fazza-abiyyu/exnestjs-starter/blob/main/engine/pdf-stream/adapters/nest.controller.ts"
click node_pdf_engine "https://github.com/fazza-abiyyu/exnestjs-starter/blob/main/engine/pdf-stream/engine.ts"
click node_pdf_raster "https://github.com/fazza-abiyyu/exnestjs-starter/blob/main/engine/pdf-stream/internals/raster.ts"
click node_pdf_store "https://github.com/fazza-abiyyu/exnestjs-starter/blob/main/engine/pdf-stream/adapters/prisma.store.ts"
click node_pdf_files "https://github.com/fazza-abiyyu/exnestjs-starter/blob/main/engine/pdf-stream/internals/files.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_elysia_app,node_elysia_customer_endpoint,node_nest_app,node_nest_endpoints toneBlue
class node_elysia_customer_controller,node_customer_service,node_odata,node_metadata_controller,node_metadata_service,node_nest_customer,node_nest_metadata,node_sql_db toneAmber
class node_schema_tools,node_schema_parser,node_orm_client,node_query_builder,node_repository,node_db_drivers,node_caller toneMint
class node_video_adapter,node_video_engine,node_video_store,node_video_files,node_pdf_adapter,node_pdf_engine,node_pdf_raster,node_pdf_store,node_pdf_files toneRose
class node_video_source,node_ffmpeg toneIndigo
```

## Components

### Framework Apps

- [Elysia app](https://github.com/fazza-abiyyu/exnestjs-starter/blob/main/packages/elysia/src/app.ts): `packages/elysia/src/app.ts`
- [Customer endpoint](https://github.com/fazza-abiyyu/exnestjs-starter/blob/main/packages/elysia/src/endpoints/customers/customers.endpoint.ts): `packages/elysia/src/endpoints/customers/customers.endpoint.ts`
- [Nest app](https://github.com/fazza-abiyyu/exnestjs-starter/blob/main/packages/nestjs/src/main.ts): `packages/nestjs/src/main.ts`
- [Endpoint mounting](https://github.com/fazza-abiyyu/exnestjs-starter/blob/main/packages/nestjs/src/endpoints/index.ts): `packages/nestjs/src/endpoints/index.ts`

### Resources And OData

- [Customer controller](https://github.com/fazza-abiyyu/exnestjs-starter/blob/main/packages/elysia/src/modules/customers/customers.controller.ts): `packages/elysia/src/modules/customers/customers.controller.ts`
- [Customer service](https://github.com/fazza-abiyyu/exnestjs-starter/blob/main/packages/elysia/src/modules/customers/customers.service.ts): `packages/elysia/src/modules/customers/customers.service.ts`
- [OData response](https://github.com/fazza-abiyyu/exnestjs-starter/blob/main/packages/elysia/src/lib/odata/index.ts): `packages/elysia/src/lib/odata/index.ts`
- [Metadata controller](https://github.com/fazza-abiyyu/exnestjs-starter/blob/main/packages/elysia/src/modules/metadata/metadata.controller.ts): `packages/elysia/src/modules/metadata/metadata.controller.ts`
- [Metadata service](https://github.com/fazza-abiyyu/exnestjs-starter/blob/main/packages/elysia/src/modules/metadata/metadata.service.ts): `packages/elysia/src/modules/metadata/metadata.service.ts`
- [Nest customer module](https://github.com/fazza-abiyyu/exnestjs-starter/tree/main/packages/nestjs/src/modules): `packages/nestjs/src/modules`
- [Nest metadata](https://github.com/fazza-abiyyu/exnestjs-starter/blob/main/packages/nestjs/src/modules/metadata/metadata.controller.ts): `packages/nestjs/src/modules/metadata/metadata.controller.ts`

### VA ORM

- [Schema and CLI](https://github.com/fazza-abiyyu/exnestjs-starter/tree/main/engine/va-orm/packages/cli/src): `engine/va-orm/packages/cli/src`
- [Schema parser](https://github.com/fazza-abiyyu/exnestjs-starter/blob/main/engine/va-orm/packages/schema/src/schema.parser.ts): `engine/va-orm/packages/schema/src/schema.parser.ts`
- [ORM client](https://github.com/fazza-abiyyu/exnestjs-starter/blob/main/engine/va-orm/packages/client/src/core/va.client.ts): `engine/va-orm/packages/client/src/core/va.client.ts`
- [Query builder](https://github.com/fazza-abiyyu/exnestjs-starter/blob/main/engine/va-orm/packages/client/src/core/query-builder.ts): `engine/va-orm/packages/client/src/core/query-builder.ts`
- [Repositories](https://github.com/fazza-abiyyu/exnestjs-starter/blob/main/engine/va-orm/packages/client/src/repository/repository.ts): `engine/va-orm/packages/client/src/repository/repository.ts`
- [SQL drivers](https://github.com/fazza-abiyyu/exnestjs-starter/tree/main/engine/va-orm/packages/client/src/drivers): `engine/va-orm/packages/client/src/drivers`

### Media Engines

- [Video Nest adapter](https://github.com/fazza-abiyyu/exnestjs-starter/blob/main/engine/video-stream/adapters/nest.controller.ts): `engine/video-stream/adapters/nest.controller.ts`
- [Video engine](https://github.com/fazza-abiyyu/exnestjs-starter/blob/main/engine/video-stream/engine.ts): `engine/video-stream/engine.ts`
- [Video store adapter](https://github.com/fazza-abiyyu/exnestjs-starter/blob/main/engine/video-stream/adapters/prisma.store.ts): `engine/video-stream/adapters/prisma.store.ts`
- [Video files](https://github.com/fazza-abiyyu/exnestjs-starter/blob/main/engine/video-stream/internals/files.ts): `engine/video-stream/internals/files.ts`
- [PDF Nest adapter](https://github.com/fazza-abiyyu/exnestjs-starter/blob/main/engine/pdf-stream/adapters/nest.controller.ts): `engine/pdf-stream/adapters/nest.controller.ts`
- [PDF engine](https://github.com/fazza-abiyyu/exnestjs-starter/blob/main/engine/pdf-stream/engine.ts): `engine/pdf-stream/engine.ts`
- [PDF rasterizer](https://github.com/fazza-abiyyu/exnestjs-starter/blob/main/engine/pdf-stream/internals/raster.ts): `engine/pdf-stream/internals/raster.ts`
- [Document store adapter](https://github.com/fazza-abiyyu/exnestjs-starter/blob/main/engine/pdf-stream/adapters/prisma.store.ts): `engine/pdf-stream/adapters/prisma.store.ts`
- [PDF files](https://github.com/fazza-abiyyu/exnestjs-starter/blob/main/engine/pdf-stream/internals/files.ts): `engine/pdf-stream/internals/files.ts`

### Other components

- **API caller**
- **SQL databases**
- **Remote media source**
- **FFmpeg**

## Connections

- API caller → Elysia app: sends request
- Elysia app → Customer endpoint: dispatches route
- Customer endpoint → Customer controller: invokes handler
- Customer controller → Customer service: calls service
- Customer controller → OData response: builds response
- Customer controller → Metadata service: reads metadata URL
- Elysia app → Metadata controller: dispatches module
- Metadata controller → Metadata service: requests metadata
- Metadata controller → OData response: builds response
- API caller → Nest app: sends request
- Nest app → Endpoint mounting: mounts endpoints
- Endpoint mounting → Nest customer module: mounts resource
- Endpoint mounting → Nest metadata: mounts resource
- Nest metadata → Metadata service: requests metadata
- Schema and CLI → Schema parser: parses schema
- Schema and CLI → ORM client: generates client
- ORM client → Repositories: exposes repositories
- Repositories → Query builder: builds queries
- Query builder → SQL drivers: uses driver
- SQL drivers → SQL databases: executes SQL
- Remote media source → Video Nest adapter: submits source
- API caller → Video Nest adapter: requests stream
- Video Nest adapter → Video engine: calls engine
- Video engine → Video store adapter: reads and writes
- Video engine → Video files: stores segments
- Video engine → FFmpeg: packages HLS
- API caller → PDF Nest adapter: requests document
- PDF Nest adapter → PDF engine: calls engine
- PDF engine → Document store adapter: reads and writes
- PDF engine → PDF files: stores pages
- PDF engine → PDF rasterizer: rasterizes pages
