# komuness/proyecto-komuness architecture

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

- Interactive diagram: https://gitdiagram.com/komuness/proyecto-komuness
- Repository: https://github.com/komuness/proyecto-komuness

## Overview

Komuness is a community platform for publishing and discovering posts, events and professional resources, with profiles, a document library, notifications and paid features. The main workflow is a user creating or browsing a publication: the frontend provides the interaction, the backend routes requests to publication handlers, and handlers update publication records or related services. The graph also preserves other major product areas visible in the tree. The README is empty; several UI and backend modules were not sampled, so those areas are shown without speculative connections.

Main entry points: [`backend/src/index.ts`](https://github.com/komuness/proyecto-komuness/blob/main/backend/src/index.ts) (HTTP application), [`backend/src/controllers/publicacion.controller.ts`](https://github.com/komuness/proyecto-komuness/blob/main/backend/src/controllers/publicacion.controller.ts) (Publication handlers), [`backend/src/middlewares/auth.middleware.ts`](https://github.com/komuness/proyecto-komuness/blob/main/backend/src/middlewares/auth.middleware.ts) (Authentication guard), [`backend/src/routes/usuario.routes.ts`](https://github.com/komuness/proyecto-komuness/blob/main/backend/src/routes/usuario.routes.ts) (Account routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web client"]
  node_app["Client entry<br/>[App.js]"]
  node_routes_ui["Page routing<br/>[Rutas.js]"]
  node_client_api["API client<br/>[api.js]"]
end

subgraph group_identity["Accounts and profiles"]
  node_profile_ui["User profile<br/>[perfilUsuario.js]"]
  node_auth_context["Authentication state<br/>[AuthContext.js]"]
  node_auth_routes["Account routes<br/>[usuario.routes.ts]"]
  node_user_controller["Account handlers"]
  node_user_model[("User records<br/>[usuario.model.ts]")]
end

subgraph group_content["Community content"]
  node_publication_form["Publication form<br/>[formulario.js]"]
  node_publication_ui["Publication browsing<br/>[publicaciones.js]"]
  node_publication_detail["Publication detail"]
  node_publication_routes["Publication routes"]
  node_publication_controller["Publication handlers"]
  node_publication_model[("Publication records")]
  node_publication_types["Publication data types"]
  node_publication_expiry["Expiry rules"]
  node_expiration_job["Expiry service"]
end

subgraph group_resources["Resources and discovery"]
  node_library_ui["Document library<br/>[biblioteca.js]"]
  node_professional_bank["Professional bank"]
  node_library_routes["Library routes"]
  node_library_controller["Library handlers"]
  node_file_model[("Library file records<br/>[archivo.model.ts]")]
  node_folder_model[("Library folders<br/>[folder.model.ts]")]
end

subgraph group_platform["Backend platform"]
  node_backend_entry["HTTP application<br/>[index.ts]"]
  node_notification_service["Notification service"]
  node_auth_middleware["Authentication guard<br/>[auth.middleware.ts]"]
  node_role_middleware["Role guard"]
  node_jwt["Token utilities<br/>[jwt.ts]"]
end

node_user(("Community user"))
node_mongo[("MongoDB")]

node_user -->|"uses"| node_app
node_app -->|"renders"| node_routes_ui
node_publication_form -->|"imports"| node_client_api
node_profile_ui -->|"uses"| node_client_api
node_auth_context -->|"uses"| node_client_api
node_user -.->|"requests"| node_backend_entry
node_backend_entry -->|"mounts"| node_publication_routes
node_backend_entry -->|"mounts"| node_library_routes
node_backend_entry -->|"mounts"| node_auth_routes
node_publication_routes -->|"dispatches"| node_publication_controller
node_publication_routes -->|"guards"| node_auth_middleware
node_publication_routes -->|"guards"| node_role_middleware
node_publication_controller -->|"reads and writes"| node_publication_model
node_publication_controller -->|"uses"| node_publication_types
node_publication_controller -->|"filters active"| node_publication_expiry
node_publication_controller -->|"notifies"| node_notification_service
node_expiration_job -->|"checks records"| node_publication_model
node_expiration_job -->|"uses rules"| node_publication_expiry
node_library_routes -->|"dispatches"| node_library_controller
node_library_routes -->|"guards"| node_auth_middleware
node_library_routes -->|"guards"| node_role_middleware
node_library_controller -->|"manages files"| node_file_model
node_library_controller -->|"manages folders"| node_folder_model
node_auth_routes -->|"dispatches"| node_user_controller
node_auth_routes -->|"guards"| node_auth_middleware
node_auth_routes -->|"guards"| node_role_middleware
node_user_controller -->|"reads and writes"| node_user_model
node_auth_middleware -->|"verifies token"| node_jwt
node_auth_middleware -->|"loads user"| node_user_model
node_backend_entry -->|"starts"| node_expiration_job
node_backend_entry -->|"connects"| node_mongo

click node_app "https://github.com/komuness/proyecto-komuness/blob/main/FrontEnd/src/App.js"
click node_routes_ui "https://github.com/komuness/proyecto-komuness/blob/main/FrontEnd/src/components/Rutas.js"
click node_client_api "https://github.com/komuness/proyecto-komuness/blob/main/FrontEnd/src/utils/api.js"
click node_publication_form "https://github.com/komuness/proyecto-komuness/blob/main/FrontEnd/src/pages/formulario.js"
click node_publication_ui "https://github.com/komuness/proyecto-komuness/blob/main/FrontEnd/src/components/publicaciones.js"
click node_publication_detail "https://github.com/komuness/proyecto-komuness/blob/main/FrontEnd/src/components/publicacionDetalle.js"
click node_profile_ui "https://github.com/komuness/proyecto-komuness/blob/main/FrontEnd/src/components/perfilUsuario.js"
click node_auth_context "https://github.com/komuness/proyecto-komuness/blob/main/FrontEnd/src/components/context/AuthContext.js"
click node_library_ui "https://github.com/komuness/proyecto-komuness/blob/main/FrontEnd/src/components/biblioteca.js"
click node_professional_bank "https://github.com/komuness/proyecto-komuness/blob/main/FrontEnd/src/components/BancoProfesionales.js"
click node_backend_entry "https://github.com/komuness/proyecto-komuness/blob/main/backend/src/index.ts"
click node_publication_routes "https://github.com/komuness/proyecto-komuness/blob/main/backend/src/routes/publicaciones.routes.ts"
click node_publication_controller "https://github.com/komuness/proyecto-komuness/blob/main/backend/src/controllers/publicacion.controller.ts"
click node_publication_model "https://github.com/komuness/proyecto-komuness/blob/main/backend/src/models/publicacion.model.ts"
click node_publication_types "https://github.com/komuness/proyecto-komuness/blob/main/backend/src/interfaces/publicacion.interface.ts"
click node_publication_expiry "https://github.com/komuness/proyecto-komuness/blob/main/backend/src/utils/publicacionExpiration.ts"
click node_expiration_job "https://github.com/komuness/proyecto-komuness/blob/main/backend/src/services/publicacionExpiration.service.ts"
click node_notification_service "https://github.com/komuness/proyecto-komuness/blob/main/backend/src/services/notificacion.service.ts"
click node_library_routes "https://github.com/komuness/proyecto-komuness/blob/main/backend/src/routes/biblioteca.routes.ts"
click node_library_controller "https://github.com/komuness/proyecto-komuness/blob/main/backend/src/controllers/biblioteca.controller.ts"
click node_file_model "https://github.com/komuness/proyecto-komuness/blob/main/backend/src/models/archivo.model.ts"
click node_folder_model "https://github.com/komuness/proyecto-komuness/blob/main/backend/src/models/folder.model.ts"
click node_auth_routes "https://github.com/komuness/proyecto-komuness/blob/main/backend/src/routes/usuario.routes.ts"
click node_user_controller "https://github.com/komuness/proyecto-komuness/blob/main/backend/src/controllers/usuario.controller.ts"
click node_user_model "https://github.com/komuness/proyecto-komuness/blob/main/backend/src/models/usuario.model.ts"
click node_auth_middleware "https://github.com/komuness/proyecto-komuness/blob/main/backend/src/middlewares/auth.middleware.ts"
click node_role_middleware "https://github.com/komuness/proyecto-komuness/blob/main/backend/src/middlewares/roles.middleware.ts"
click node_jwt "https://github.com/komuness/proyecto-komuness/blob/main/backend/src/utils/jwt.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_app,node_routes_ui,node_client_api,node_user toneBlue
class node_profile_ui,node_auth_context,node_auth_routes,node_user_controller,node_user_model,node_mongo toneAmber
class node_publication_form,node_publication_ui,node_publication_detail,node_publication_routes,node_publication_controller,node_publication_model,node_publication_types,node_publication_expiry,node_expiration_job toneMint
class node_library_ui,node_professional_bank,node_library_routes,node_library_controller,node_file_model,node_folder_model toneRose
class node_backend_entry,node_notification_service,node_auth_middleware,node_role_middleware,node_jwt toneIndigo
```

## Components

### Web client

- [Client entry](https://github.com/komuness/proyecto-komuness/blob/main/FrontEnd/src/App.js): `FrontEnd/src/App.js`
- [Page routing](https://github.com/komuness/proyecto-komuness/blob/main/FrontEnd/src/components/Rutas.js): `FrontEnd/src/components/Rutas.js`
- [API client](https://github.com/komuness/proyecto-komuness/blob/main/FrontEnd/src/utils/api.js): `FrontEnd/src/utils/api.js`

### Accounts and profiles

- [User profile](https://github.com/komuness/proyecto-komuness/blob/main/FrontEnd/src/components/perfilUsuario.js): `FrontEnd/src/components/perfilUsuario.js`
- [Authentication state](https://github.com/komuness/proyecto-komuness/blob/main/FrontEnd/src/components/context/AuthContext.js): `FrontEnd/src/components/context/AuthContext.js`
- [Account routes](https://github.com/komuness/proyecto-komuness/blob/main/backend/src/routes/usuario.routes.ts): `backend/src/routes/usuario.routes.ts`
- [Account handlers](https://github.com/komuness/proyecto-komuness/blob/main/backend/src/controllers/usuario.controller.ts): `backend/src/controllers/usuario.controller.ts`
- [User records](https://github.com/komuness/proyecto-komuness/blob/main/backend/src/models/usuario.model.ts): `backend/src/models/usuario.model.ts`

### Community content

- [Publication form](https://github.com/komuness/proyecto-komuness/blob/main/FrontEnd/src/pages/formulario.js): `FrontEnd/src/pages/formulario.js`
- [Publication browsing](https://github.com/komuness/proyecto-komuness/blob/main/FrontEnd/src/components/publicaciones.js): `FrontEnd/src/components/publicaciones.js`
- [Publication detail](https://github.com/komuness/proyecto-komuness/blob/main/FrontEnd/src/components/publicacionDetalle.js): `FrontEnd/src/components/publicacionDetalle.js`
- [Publication routes](https://github.com/komuness/proyecto-komuness/blob/main/backend/src/routes/publicaciones.routes.ts): `backend/src/routes/publicaciones.routes.ts`
- [Publication handlers](https://github.com/komuness/proyecto-komuness/blob/main/backend/src/controllers/publicacion.controller.ts): `backend/src/controllers/publicacion.controller.ts`
- [Publication records](https://github.com/komuness/proyecto-komuness/blob/main/backend/src/models/publicacion.model.ts): `backend/src/models/publicacion.model.ts`
- [Publication data types](https://github.com/komuness/proyecto-komuness/blob/main/backend/src/interfaces/publicacion.interface.ts): `backend/src/interfaces/publicacion.interface.ts`
- [Expiry rules](https://github.com/komuness/proyecto-komuness/blob/main/backend/src/utils/publicacionExpiration.ts): `backend/src/utils/publicacionExpiration.ts`
- [Expiry service](https://github.com/komuness/proyecto-komuness/blob/main/backend/src/services/publicacionExpiration.service.ts): `backend/src/services/publicacionExpiration.service.ts`

### Resources and discovery

- [Document library](https://github.com/komuness/proyecto-komuness/blob/main/FrontEnd/src/components/biblioteca.js): `FrontEnd/src/components/biblioteca.js`
- [Professional bank](https://github.com/komuness/proyecto-komuness/blob/main/FrontEnd/src/components/BancoProfesionales.js): `FrontEnd/src/components/BancoProfesionales.js`
- [Library routes](https://github.com/komuness/proyecto-komuness/blob/main/backend/src/routes/biblioteca.routes.ts): `backend/src/routes/biblioteca.routes.ts`
- [Library handlers](https://github.com/komuness/proyecto-komuness/blob/main/backend/src/controllers/biblioteca.controller.ts): `backend/src/controllers/biblioteca.controller.ts`
- [Library file records](https://github.com/komuness/proyecto-komuness/blob/main/backend/src/models/archivo.model.ts): `backend/src/models/archivo.model.ts`
- [Library folders](https://github.com/komuness/proyecto-komuness/blob/main/backend/src/models/folder.model.ts): `backend/src/models/folder.model.ts`

### Backend platform

- [HTTP application](https://github.com/komuness/proyecto-komuness/blob/main/backend/src/index.ts): `backend/src/index.ts`
- [Notification service](https://github.com/komuness/proyecto-komuness/blob/main/backend/src/services/notificacion.service.ts): `backend/src/services/notificacion.service.ts`
- [Authentication guard](https://github.com/komuness/proyecto-komuness/blob/main/backend/src/middlewares/auth.middleware.ts): `backend/src/middlewares/auth.middleware.ts`
- [Role guard](https://github.com/komuness/proyecto-komuness/blob/main/backend/src/middlewares/roles.middleware.ts): `backend/src/middlewares/roles.middleware.ts`
- [Token utilities](https://github.com/komuness/proyecto-komuness/blob/main/backend/src/utils/jwt.ts): `backend/src/utils/jwt.ts`

### Other components

- **Community user**
- **MongoDB**

## Connections

- Community user → Client entry: uses
- Client entry → Page routing: renders (evidence: `FrontEnd/src/App.js`)
- Publication form → API client: imports (evidence: `FrontEnd/src/pages/formulario.js`)
- User profile → API client: uses (evidence: `FrontEnd/src/components/perfilUsuario.js`)
- Authentication state → API client: uses (evidence: `FrontEnd/src/components/context/AuthContext.js`)
- Community user → HTTP application: requests
- HTTP application → Publication routes: mounts (evidence: `backend/src/index.ts`)
- HTTP application → Library routes: mounts (evidence: `backend/src/index.ts`)
- HTTP application → Account routes: mounts (evidence: `backend/src/index.ts`)
- Publication routes → Publication handlers: dispatches (evidence: `backend/src/routes/publicaciones.routes.ts`)
- Publication routes → Authentication guard: guards (evidence: `backend/src/routes/publicaciones.routes.ts`)
- Publication routes → Role guard: guards (evidence: `backend/src/routes/publicaciones.routes.ts`)
- Publication handlers → Publication records: reads and writes (evidence: `backend/src/controllers/publicacion.controller.ts`)
- Publication handlers → Publication data types: uses (evidence: `backend/src/controllers/publicacion.controller.ts`)
- Publication handlers → Expiry rules: filters active (evidence: `backend/src/controllers/publicacion.controller.ts`)
- Publication handlers → Notification service: notifies (evidence: `backend/src/controllers/publicacion.controller.ts`)
- Expiry service → Publication records: checks records (evidence: `backend/src/services/publicacionExpiration.service.ts`)
- Expiry service → Expiry rules: uses rules (evidence: `backend/src/services/publicacionExpiration.service.ts`)
- Library routes → Library handlers: dispatches (evidence: `backend/src/routes/biblioteca.routes.ts`)
- Library routes → Authentication guard: guards (evidence: `backend/src/routes/biblioteca.routes.ts`)
- Library routes → Role guard: guards (evidence: `backend/src/routes/biblioteca.routes.ts`)
- Library handlers → Library file records: manages files (evidence: `backend/src/controllers/biblioteca.controller.ts`)
- Library handlers → Library folders: manages folders (evidence: `backend/src/controllers/biblioteca.controller.ts`)
- Account routes → Account handlers: dispatches (evidence: `backend/src/routes/usuario.routes.ts`)
- Account routes → Authentication guard: guards (evidence: `backend/src/routes/usuario.routes.ts`)
- Account routes → Role guard: guards (evidence: `backend/src/routes/usuario.routes.ts`)
- Account handlers → User records: reads and writes (evidence: `backend/src/controllers/usuario.controller.ts`)
- Authentication guard → Token utilities: verifies token (evidence: `backend/src/middlewares/auth.middleware.ts`)
- Authentication guard → User records: loads user (evidence: `backend/src/middlewares/auth.middleware.ts`)
- HTTP application → Expiry service: starts (evidence: `backend/src/index.ts`)
- HTTP application → MongoDB: connects (evidence: `backend/src/index.ts`)
