# kotnalasanskriti/echo architecture

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

- Interactive diagram: https://gitdiagram.com/kotnalasanskriti/echo
- Repository: https://github.com/kotnalasanskriti/echo

## Overview

ECHO is a platform for innovators and investors to develop and share ideas, discover one another, build connections, and message. The main backend workflow enters through authenticated API routes and reaches controllers that manage profiles, ideas, analysis, connections, and conversations. Innovator and investor interface modules are also present, but their runtime calls are not shown in the excerpts; those capabilities are represented without inferred links. The source index supports several backend dependencies; unsampled route and controller details are not expanded.

Main entry points: [`backend/server.js`](https://github.com/kotnalasanskriti/echo/blob/main/backend/server.js) (API Server), [`backend/middleware/authMiddleware.js`](https://github.com/kotnalasanskriti/echo/blob/main/backend/middleware/authMiddleware.js) (Authentication), [`backend/routes/ideaRoutes.js`](https://github.com/kotnalasanskriti/echo/blob/main/backend/routes/ideaRoutes.js) (Idea Routes), [`backend/controllers/messageController.js`](https://github.com/kotnalasanskriti/echo/blob/main/backend/controllers/messageController.js) (Conversations and Messages)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Role Interfaces"]
  node_innovator_ui["Innovator Interface"]
  node_investor_ui["Investor Interface"]
end

subgraph group_api["API and Identity"]
  node_user_routes["User Routes<br/>[userRoutes.js]"]
  node_auth["Authentication<br/>[authMiddleware.js]"]
  node_user_controller["User Accounts<br/>[userController.js]"]
  node_user_model[("User Records<br/>[User.js]")]
  node_server["API Server<br/>[server.js]"]
  node_db[("MongoDB Connection<br/>[db.js]")]
end

subgraph group_ideas["Ideas and Profiles"]
  node_idea_routes["Idea Routes<br/>[ideaRoutes.js]"]
  node_idea_controller["Idea Management<br/>[ideaController.js]"]
  node_idea_model[("Idea Records<br/>[Idea.js]")]
  node_analysis_controller["Idea Analysis"]
  node_analyzer["Analysis Service<br/>[ideaAnalyzer.js]"]
  node_analysis_model[("Analysis Records<br/>[IdeaAnalysis.js]")]
  node_assistant["AI Assistant"]
  node_profile_routes["Innovator Profile Routes"]
  node_profile_controller["Profile Management"]
  node_profile_model[("Innovator Profiles")]
  node_photo_controller["Profile Photos"]
  node_gridfs[("Photo Storage<br/>[gridfs.js]")]
end

subgraph group_network["Connections and Messaging"]
  node_connection_routes["Connection Routes"]
  node_connection_controller["Connections"]
  node_connection_model[("Connection Records<br/>[Connection.js]")]
  node_interest_routes["Interest Routes<br/>[interestRoutes.js]"]
  node_interest_controller["Idea Interests"]
  node_interest_model[("Interest Records<br/>[Interest.js]")]
  node_message_routes["Message Routes<br/>[messageRoutes.js]"]
  node_message_controller["Conversations and Messages"]
  node_conversation_model[("Conversation Records<br/>[Conversation.js]")]
  node_message_model[("Message Records<br/>[Message.js]")]
end

node_server -->|"connects"| node_db
node_server -->|"mounts"| node_user_routes
node_server -->|"mounts"| node_profile_routes
node_server -->|"mounts"| node_idea_routes
node_server -->|"mounts"| node_message_routes
node_server -->|"mounts"| node_connection_routes
node_server -->|"mounts"| node_interest_routes
node_server -->|"initializes"| node_gridfs
node_user_routes -->|"protects routes"| node_auth
node_user_routes -->|"dispatches"| node_user_controller
node_auth -->|"checks account"| node_user_model
node_user_controller -->|"manages"| node_user_model
node_idea_routes -->|"protects routes"| node_auth
node_idea_routes -->|"dispatches"| node_idea_controller
node_idea_routes -->|"dispatches"| node_analysis_controller
node_idea_routes -->|"dispatches"| node_assistant
node_idea_controller -->|"reads and writes"| node_idea_model
node_analysis_controller -->|"loads idea"| node_idea_model
node_analysis_controller -->|"requests analysis"| node_analyzer
node_analysis_controller -->|"reads and writes"| node_analysis_model
node_profile_routes -->|"protects routes"| node_auth
node_profile_routes -->|"dispatches"| node_profile_controller
node_profile_routes -->|"dispatches"| node_photo_controller
node_profile_controller -->|"reads account"| node_user_model
node_profile_controller -->|"manages profile"| node_profile_model
node_photo_controller -->|"updates profile"| node_profile_model
node_photo_controller -->|"stores photos"| node_gridfs
node_connection_routes -->|"protects routes"| node_auth
node_connection_routes -->|"dispatches"| node_connection_controller
node_connection_controller -->|"discovers users"| node_user_model
node_connection_controller -->|"manages requests"| node_connection_model
node_interest_routes -->|"protects routes"| node_auth
node_interest_routes -->|"dispatches"| node_interest_controller
node_interest_controller -->|"manages interests"| node_interest_model
node_interest_controller -->|"looks up ideas"| node_idea_model
node_message_routes -->|"protects routes"| node_auth
node_message_routes -->|"dispatches"| node_message_controller
node_message_controller -->|"checks connection"| node_connection_model
node_message_controller -->|"checks recipient"| node_user_model
node_message_controller -->|"manages conversations"| node_conversation_model
node_message_controller -->|"manages messages"| node_message_model

click node_user_routes "https://github.com/kotnalasanskriti/echo/blob/main/backend/routes/userRoutes.js"
click node_auth "https://github.com/kotnalasanskriti/echo/blob/main/backend/middleware/authMiddleware.js"
click node_user_controller "https://github.com/kotnalasanskriti/echo/blob/main/backend/controllers/userController.js"
click node_user_model "https://github.com/kotnalasanskriti/echo/blob/main/backend/models/User.js"
click node_server "https://github.com/kotnalasanskriti/echo/blob/main/backend/server.js"
click node_db "https://github.com/kotnalasanskriti/echo/blob/main/backend/config/db.js"
click node_idea_routes "https://github.com/kotnalasanskriti/echo/blob/main/backend/routes/ideaRoutes.js"
click node_idea_controller "https://github.com/kotnalasanskriti/echo/blob/main/backend/controllers/ideaController.js"
click node_idea_model "https://github.com/kotnalasanskriti/echo/blob/main/backend/models/Idea.js"
click node_analysis_controller "https://github.com/kotnalasanskriti/echo/blob/main/backend/controllers/ideaAnalysisController.js"
click node_analyzer "https://github.com/kotnalasanskriti/echo/blob/main/backend/services/ideaAnalyzer.js"
click node_analysis_model "https://github.com/kotnalasanskriti/echo/blob/main/backend/models/IdeaAnalysis.js"
click node_assistant "https://github.com/kotnalasanskriti/echo/blob/main/backend/controllers/assistantController.js"
click node_profile_routes "https://github.com/kotnalasanskriti/echo/blob/main/backend/routes/innovatorProfileRoutes.js"
click node_profile_controller "https://github.com/kotnalasanskriti/echo/blob/main/backend/controllers/innovatorProfileController.js"
click node_profile_model "https://github.com/kotnalasanskriti/echo/blob/main/backend/models/InnovatorProfile.js"
click node_photo_controller "https://github.com/kotnalasanskriti/echo/blob/main/backend/controllers/profilePhotoController.js"
click node_gridfs "https://github.com/kotnalasanskriti/echo/blob/main/backend/config/gridfs.js"
click node_connection_routes "https://github.com/kotnalasanskriti/echo/blob/main/backend/routes/connectionRoutes.js"
click node_connection_controller "https://github.com/kotnalasanskriti/echo/blob/main/backend/controllers/connectionController.js"
click node_connection_model "https://github.com/kotnalasanskriti/echo/blob/main/backend/models/Connection.js"
click node_interest_routes "https://github.com/kotnalasanskriti/echo/blob/main/backend/routes/interestRoutes.js"
click node_interest_controller "https://github.com/kotnalasanskriti/echo/blob/main/backend/controllers/interestController.js"
click node_interest_model "https://github.com/kotnalasanskriti/echo/blob/main/backend/models/Interest.js"
click node_message_routes "https://github.com/kotnalasanskriti/echo/blob/main/backend/routes/messageRoutes.js"
click node_message_controller "https://github.com/kotnalasanskriti/echo/blob/main/backend/controllers/messageController.js"
click node_conversation_model "https://github.com/kotnalasanskriti/echo/blob/main/backend/models/Conversation.js"
click node_message_model "https://github.com/kotnalasanskriti/echo/blob/main/backend/models/Message.js"

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_innovator_ui,node_investor_ui toneBlue
class node_user_routes,node_auth,node_user_controller,node_user_model,node_server,node_db toneAmber
class node_idea_routes,node_idea_controller,node_idea_model,node_analysis_controller,node_analyzer,node_analysis_model,node_assistant,node_profile_routes,node_profile_controller,node_profile_model,node_photo_controller,node_gridfs toneMint
class node_connection_routes,node_connection_controller,node_connection_model,node_interest_routes,node_interest_controller,node_interest_model,node_message_routes,node_message_controller,node_conversation_model,node_message_model toneRose
```

## Components

### Role Interfaces

- **Innovator Interface**
- **Investor Interface**

### API and Identity

- [User Routes](https://github.com/kotnalasanskriti/echo/blob/main/backend/routes/userRoutes.js): `backend/routes/userRoutes.js`
- [Authentication](https://github.com/kotnalasanskriti/echo/blob/main/backend/middleware/authMiddleware.js): `backend/middleware/authMiddleware.js`
- [User Accounts](https://github.com/kotnalasanskriti/echo/blob/main/backend/controllers/userController.js): `backend/controllers/userController.js`
- [User Records](https://github.com/kotnalasanskriti/echo/blob/main/backend/models/User.js): `backend/models/User.js`
- [API Server](https://github.com/kotnalasanskriti/echo/blob/main/backend/server.js): `backend/server.js`
- [MongoDB Connection](https://github.com/kotnalasanskriti/echo/blob/main/backend/config/db.js): `backend/config/db.js`

### Ideas and Profiles

- [Idea Routes](https://github.com/kotnalasanskriti/echo/blob/main/backend/routes/ideaRoutes.js): `backend/routes/ideaRoutes.js`
- [Idea Management](https://github.com/kotnalasanskriti/echo/blob/main/backend/controllers/ideaController.js): `backend/controllers/ideaController.js`
- [Idea Records](https://github.com/kotnalasanskriti/echo/blob/main/backend/models/Idea.js): `backend/models/Idea.js`
- [Idea Analysis](https://github.com/kotnalasanskriti/echo/blob/main/backend/controllers/ideaAnalysisController.js): `backend/controllers/ideaAnalysisController.js`
- [Analysis Service](https://github.com/kotnalasanskriti/echo/blob/main/backend/services/ideaAnalyzer.js): `backend/services/ideaAnalyzer.js`
- [Analysis Records](https://github.com/kotnalasanskriti/echo/blob/main/backend/models/IdeaAnalysis.js): `backend/models/IdeaAnalysis.js`
- [AI Assistant](https://github.com/kotnalasanskriti/echo/blob/main/backend/controllers/assistantController.js): `backend/controllers/assistantController.js`
- [Innovator Profile Routes](https://github.com/kotnalasanskriti/echo/blob/main/backend/routes/innovatorProfileRoutes.js): `backend/routes/innovatorProfileRoutes.js`
- [Profile Management](https://github.com/kotnalasanskriti/echo/blob/main/backend/controllers/innovatorProfileController.js): `backend/controllers/innovatorProfileController.js`
- [Innovator Profiles](https://github.com/kotnalasanskriti/echo/blob/main/backend/models/InnovatorProfile.js): `backend/models/InnovatorProfile.js`
- [Profile Photos](https://github.com/kotnalasanskriti/echo/blob/main/backend/controllers/profilePhotoController.js): `backend/controllers/profilePhotoController.js`
- [Photo Storage](https://github.com/kotnalasanskriti/echo/blob/main/backend/config/gridfs.js): `backend/config/gridfs.js`

### Connections and Messaging

- [Connection Routes](https://github.com/kotnalasanskriti/echo/blob/main/backend/routes/connectionRoutes.js): `backend/routes/connectionRoutes.js`
- [Connections](https://github.com/kotnalasanskriti/echo/blob/main/backend/controllers/connectionController.js): `backend/controllers/connectionController.js`
- [Connection Records](https://github.com/kotnalasanskriti/echo/blob/main/backend/models/Connection.js): `backend/models/Connection.js`
- [Interest Routes](https://github.com/kotnalasanskriti/echo/blob/main/backend/routes/interestRoutes.js): `backend/routes/interestRoutes.js`
- [Idea Interests](https://github.com/kotnalasanskriti/echo/blob/main/backend/controllers/interestController.js): `backend/controllers/interestController.js`
- [Interest Records](https://github.com/kotnalasanskriti/echo/blob/main/backend/models/Interest.js): `backend/models/Interest.js`
- [Message Routes](https://github.com/kotnalasanskriti/echo/blob/main/backend/routes/messageRoutes.js): `backend/routes/messageRoutes.js`
- [Conversations and Messages](https://github.com/kotnalasanskriti/echo/blob/main/backend/controllers/messageController.js): `backend/controllers/messageController.js`
- [Conversation Records](https://github.com/kotnalasanskriti/echo/blob/main/backend/models/Conversation.js): `backend/models/Conversation.js`
- [Message Records](https://github.com/kotnalasanskriti/echo/blob/main/backend/models/Message.js): `backend/models/Message.js`

## Connections

- API Server → MongoDB Connection: connects (evidence: `backend/server.js`)
- API Server → User Routes: mounts (evidence: `backend/server.js`)
- API Server → Innovator Profile Routes: mounts (evidence: `backend/server.js`)
- API Server → Idea Routes: mounts (evidence: `backend/server.js`)
- API Server → Message Routes: mounts (evidence: `backend/server.js`)
- API Server → Connection Routes: mounts (evidence: `backend/server.js`)
- API Server → Interest Routes: mounts (evidence: `backend/server.js`)
- API Server → Photo Storage: initializes (evidence: `backend/server.js`)
- User Routes → Authentication: protects routes (evidence: `backend/routes/userRoutes.js`)
- User Routes → User Accounts: dispatches (evidence: `backend/routes/userRoutes.js`)
- Authentication → User Records: checks account (evidence: `backend/middleware/authMiddleware.js`)
- User Accounts → User Records: manages (evidence: `backend/controllers/userController.js`)
- Idea Routes → Authentication: protects routes (evidence: `backend/routes/ideaRoutes.js`)
- Idea Routes → Idea Management: dispatches (evidence: `backend/routes/ideaRoutes.js`)
- Idea Routes → Idea Analysis: dispatches (evidence: `backend/routes/ideaRoutes.js`)
- Idea Routes → AI Assistant: dispatches (evidence: `backend/routes/ideaRoutes.js`)
- Idea Management → Idea Records: reads and writes (evidence: `backend/controllers/ideaController.js`)
- Idea Analysis → Idea Records: loads idea (evidence: `backend/controllers/ideaAnalysisController.js`)
- Idea Analysis → Analysis Service: requests analysis (evidence: `backend/controllers/ideaAnalysisController.js`)
- Idea Analysis → Analysis Records: reads and writes (evidence: `backend/controllers/ideaAnalysisController.js`)
- Innovator Profile Routes → Authentication: protects routes (evidence: `backend/routes/innovatorProfileRoutes.js`)
- Innovator Profile Routes → Profile Management: dispatches (evidence: `backend/routes/innovatorProfileRoutes.js`)
- Innovator Profile Routes → Profile Photos: dispatches (evidence: `backend/routes/innovatorProfileRoutes.js`)
- Profile Management → User Records: reads account (evidence: `backend/controllers/innovatorProfileController.js`)
- Profile Management → Innovator Profiles: manages profile (evidence: `backend/controllers/innovatorProfileController.js`)
- Profile Photos → Innovator Profiles: updates profile (evidence: `backend/controllers/profilePhotoController.js`)
- Profile Photos → Photo Storage: stores photos (evidence: `backend/controllers/profilePhotoController.js`)
- Connection Routes → Authentication: protects routes (evidence: `backend/routes/connectionRoutes.js`)
- Connection Routes → Connections: dispatches (evidence: `backend/routes/connectionRoutes.js`)
- Connections → User Records: discovers users (evidence: `backend/controllers/connectionController.js`)
- Connections → Connection Records: manages requests (evidence: `backend/controllers/connectionController.js`)
- Interest Routes → Authentication: protects routes (evidence: `backend/routes/interestRoutes.js`)
- Interest Routes → Idea Interests: dispatches (evidence: `backend/routes/interestRoutes.js`)
- Idea Interests → Interest Records: manages interests (evidence: `backend/controllers/interestController.js`)
- Idea Interests → Idea Records: looks up ideas (evidence: `backend/controllers/interestController.js`)
- Message Routes → Authentication: protects routes (evidence: `backend/routes/messageRoutes.js`)
- Message Routes → Conversations and Messages: dispatches (evidence: `backend/routes/messageRoutes.js`)
- Conversations and Messages → Connection Records: checks connection (evidence: `backend/controllers/messageController.js`)
- Conversations and Messages → User Records: checks recipient (evidence: `backend/controllers/messageController.js`)
- Conversations and Messages → Conversation Records: manages conversations (evidence: `backend/controllers/messageController.js`)
- Conversations and Messages → Message Records: manages messages (evidence: `backend/controllers/messageController.js`)
