# vicharanashala/cp1 architecture

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

- Interactive diagram: https://gitdiagram.com/vicharanashala/cp1
- Repository: https://github.com/vicharanashala/cp1

## Overview

Curio is a logged-in community knowledge platform. Members search the curated FAQ and chatbot first, optionally consult forum results, submit quality-gated questions, and participate in answer resolution; valuable resolved threads can return to the FAQ. Administration governs content, users, and moderation, while scheduled maintenance supports the knowledge lifecycle. The tree and excerpts establish the query and admin paths; several documented FAQ, chatbot, reputation, and job details are represented at their supported directory level because their implementation was not sampled.

Main entry points: [`server/models`](https://github.com/vicharanashala/cp1/tree/main/server/models) (Domain models), [`client/src/App.jsx`](https://github.com/vicharanashala/cp1/blob/main/client/src/App.jsx) (Application routes), [`server/services/queryService.js`](https://github.com/vicharanashala/cp1/blob/main/server/services/queryService.js) (Query lifecycle), [`server/routes/index.js`](https://github.com/vicharanashala/cp1/blob/main/server/routes/index.js) (API routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["Member experience"]
  node_app["Application routes<br/>[App.jsx]"]
  node_faq_ui["FAQ and chatbot<br/>[Faq.jsx]"]
  node_ask_ui["Question intake<br/>[AskQuery.jsx]"]
  node_forum_ui["Forum and answers<br/>[QueryDetail.jsx]"]
  node_admin_ui["Admin dashboard"]
end

subgraph group_knowledge["Knowledge lifecycle"]
  node_query_service["Query lifecycle<br/>[queryService.js]"]
  node_quality["Submission quality gates"]
  node_vector["Semantic search<br/>[vectorService.js]"]
  node_answer_service["Answer resolution<br/>[answerService.js]"]
  node_faq_service["FAQ and promotion<br/>[faqService.js]"]
  node_chatbot_service["FAQ-first chatbot<br/>[chatbotService.js]"]
end

subgraph group_governance["Governance"]
  node_admin_service["Moderation and governance<br/>[adminService.js]"]
  node_user_service["Reputation and users<br/>[userService.js]"]
  node_taxonomy_service["Curated taxonomy<br/>[taxonomyService.js]"]
end

subgraph group_backend["API and domain services"]
  node_faq_api["FAQ API<br/>[faq.js]"]
  node_query_api["Forum API<br/>[queries.js]"]
  node_answer_api["Answer API<br/>[answers.js]"]
  node_admin_api["Admin API<br/>[admin.js]"]
  node_routes["API routes<br/>[index.js]"]
  node_query_controller["Query controller<br/>[queryController.js]"]
  node_answer_controller["Answer controller"]
  node_faq_controller["FAQ controller<br/>[faqController.js]"]
  node_admin_controller["Admin controller<br/>[adminController.js]"]
  node_models["Domain models"]
end

subgraph group_operations["Maintenance"]
  node_jobs["Scheduled maintenance"]
end

node_member(("Member"))
node_mongo[("MongoDB")]
node_ai(("AI provider"))

node_member -->|"uses"| node_app
node_app -->|"routes to"| node_faq_ui
node_app -->|"routes to"| node_ask_ui
node_app -->|"routes to"| node_forum_ui
node_app -->|"routes to"| node_admin_ui
node_faq_ui -->|"requests FAQ"| node_faq_api
node_faq_ui -->|"asks chatbot"| node_chatbot_service
node_ask_ui -->|"submits"| node_query_api
node_forum_ui -->|"loads and updates"| node_query_api
node_forum_ui -->|"manages answers"| node_answer_api
node_forum_ui -->|"promotes thread"| node_faq_api
node_admin_ui -->|"manages platform"| node_admin_api
node_routes -->|"dispatches"| node_query_controller
node_routes -->|"dispatches"| node_answer_controller
node_routes -->|"dispatches"| node_faq_controller
node_routes -->|"dispatches"| node_admin_controller
node_query_controller -->|"invokes"| node_query_service
node_answer_controller -->|"invokes"| node_answer_service
node_faq_controller -->|"invokes"| node_faq_service
node_admin_controller -->|"invokes"| node_admin_service
node_admin_controller -->|"manages users"| node_user_service
node_admin_controller -->|"curates terms"| node_taxonomy_service
node_query_service -->|"checks submissions"| node_quality
node_query_service -->|"finds similar queries"| node_vector
node_query_service -.->|"embeds and refines"| node_ai
node_chatbot_service -.->|"uses model"| node_ai
node_query_service -->|"reads and writes"| node_models
node_answer_service -->|"reads and writes"| node_models
node_faq_service -->|"reads and writes"| node_models
node_admin_service -->|"reads and writes"| node_models
node_user_service -->|"reads and writes"| node_models
node_taxonomy_service -->|"reads and writes"| node_models
node_models -->|"persists records"| node_mongo
node_jobs -->|"maintains records"| node_models

click node_app "https://github.com/vicharanashala/cp1/blob/main/client/src/App.jsx"
click node_faq_ui "https://github.com/vicharanashala/cp1/blob/main/client/src/pages/Faq.jsx"
click node_ask_ui "https://github.com/vicharanashala/cp1/blob/main/client/src/pages/AskQuery.jsx"
click node_forum_ui "https://github.com/vicharanashala/cp1/blob/main/client/src/pages/QueryDetail.jsx"
click node_admin_ui "https://github.com/vicharanashala/cp1/tree/main/client/src/pages/admin"
click node_faq_api "https://github.com/vicharanashala/cp1/blob/main/client/src/api/faq.js"
click node_query_api "https://github.com/vicharanashala/cp1/blob/main/client/src/api/queries.js"
click node_answer_api "https://github.com/vicharanashala/cp1/blob/main/client/src/api/answers.js"
click node_admin_api "https://github.com/vicharanashala/cp1/blob/main/client/src/api/admin.js"
click node_routes "https://github.com/vicharanashala/cp1/blob/main/server/routes/index.js"
click node_query_controller "https://github.com/vicharanashala/cp1/blob/main/server/controllers/queryController.js"
click node_answer_controller "https://github.com/vicharanashala/cp1/blob/main/server/controllers/answerController.js"
click node_faq_controller "https://github.com/vicharanashala/cp1/blob/main/server/controllers/faqController.js"
click node_admin_controller "https://github.com/vicharanashala/cp1/blob/main/server/controllers/adminController.js"
click node_query_service "https://github.com/vicharanashala/cp1/blob/main/server/services/queryService.js"
click node_quality "https://github.com/vicharanashala/cp1/blob/main/server/services/gibberishService.js"
click node_vector "https://github.com/vicharanashala/cp1/blob/main/server/services/vectorService.js"
click node_answer_service "https://github.com/vicharanashala/cp1/blob/main/server/services/answerService.js"
click node_faq_service "https://github.com/vicharanashala/cp1/blob/main/server/services/faqService.js"
click node_chatbot_service "https://github.com/vicharanashala/cp1/blob/main/server/services/chatbotService.js"
click node_admin_service "https://github.com/vicharanashala/cp1/blob/main/server/services/adminService.js"
click node_user_service "https://github.com/vicharanashala/cp1/blob/main/server/services/userService.js"
click node_taxonomy_service "https://github.com/vicharanashala/cp1/blob/main/server/services/taxonomyService.js"
click node_models "https://github.com/vicharanashala/cp1/tree/main/server/models"
click node_jobs "https://github.com/vicharanashala/cp1/tree/main/server/jobs"

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_faq_ui,node_ask_ui,node_forum_ui,node_admin_ui toneBlue
class node_query_service,node_quality,node_vector,node_answer_service,node_faq_service,node_chatbot_service,node_mongo toneAmber
class node_admin_service,node_user_service,node_taxonomy_service toneMint
class node_faq_api,node_query_api,node_answer_api,node_admin_api,node_routes,node_query_controller,node_answer_controller,node_faq_controller,node_admin_controller,node_models toneRose
class node_jobs,node_member,node_ai toneIndigo
```

## Components

### Member experience

- [Application routes](https://github.com/vicharanashala/cp1/blob/main/client/src/App.jsx): `client/src/App.jsx`
- [FAQ and chatbot](https://github.com/vicharanashala/cp1/blob/main/client/src/pages/Faq.jsx): `client/src/pages/Faq.jsx`
- [Question intake](https://github.com/vicharanashala/cp1/blob/main/client/src/pages/AskQuery.jsx): `client/src/pages/AskQuery.jsx`
- [Forum and answers](https://github.com/vicharanashala/cp1/blob/main/client/src/pages/QueryDetail.jsx): `client/src/pages/QueryDetail.jsx`
- [Admin dashboard](https://github.com/vicharanashala/cp1/tree/main/client/src/pages/admin): `client/src/pages/admin`

### Knowledge lifecycle

- [Query lifecycle](https://github.com/vicharanashala/cp1/blob/main/server/services/queryService.js): `server/services/queryService.js`
- [Submission quality gates](https://github.com/vicharanashala/cp1/blob/main/server/services/gibberishService.js): `server/services/gibberishService.js`
- [Semantic search](https://github.com/vicharanashala/cp1/blob/main/server/services/vectorService.js): `server/services/vectorService.js`
- [Answer resolution](https://github.com/vicharanashala/cp1/blob/main/server/services/answerService.js): `server/services/answerService.js`
- [FAQ and promotion](https://github.com/vicharanashala/cp1/blob/main/server/services/faqService.js): `server/services/faqService.js`
- [FAQ-first chatbot](https://github.com/vicharanashala/cp1/blob/main/server/services/chatbotService.js): `server/services/chatbotService.js`

### Governance

- [Moderation and governance](https://github.com/vicharanashala/cp1/blob/main/server/services/adminService.js): `server/services/adminService.js`
- [Reputation and users](https://github.com/vicharanashala/cp1/blob/main/server/services/userService.js): `server/services/userService.js`
- [Curated taxonomy](https://github.com/vicharanashala/cp1/blob/main/server/services/taxonomyService.js): `server/services/taxonomyService.js`

### API and domain services

- [FAQ API](https://github.com/vicharanashala/cp1/blob/main/client/src/api/faq.js): `client/src/api/faq.js`
- [Forum API](https://github.com/vicharanashala/cp1/blob/main/client/src/api/queries.js): `client/src/api/queries.js`
- [Answer API](https://github.com/vicharanashala/cp1/blob/main/client/src/api/answers.js): `client/src/api/answers.js`
- [Admin API](https://github.com/vicharanashala/cp1/blob/main/client/src/api/admin.js): `client/src/api/admin.js`
- [API routes](https://github.com/vicharanashala/cp1/blob/main/server/routes/index.js): `server/routes/index.js`
- [Query controller](https://github.com/vicharanashala/cp1/blob/main/server/controllers/queryController.js): `server/controllers/queryController.js`
- [Answer controller](https://github.com/vicharanashala/cp1/blob/main/server/controllers/answerController.js): `server/controllers/answerController.js`
- [FAQ controller](https://github.com/vicharanashala/cp1/blob/main/server/controllers/faqController.js): `server/controllers/faqController.js`
- [Admin controller](https://github.com/vicharanashala/cp1/blob/main/server/controllers/adminController.js): `server/controllers/adminController.js`
- [Domain models](https://github.com/vicharanashala/cp1/tree/main/server/models): `server/models`

### Maintenance

- [Scheduled maintenance](https://github.com/vicharanashala/cp1/tree/main/server/jobs): `server/jobs`

### Other components

- **Member**
- **MongoDB**
- **AI provider**

## Connections

- Member → Application routes: uses
- Application routes → FAQ and chatbot: routes to
- Application routes → Question intake: routes to
- Application routes → Forum and answers: routes to
- Application routes → Admin dashboard: routes to
- FAQ and chatbot → FAQ API: requests FAQ
- FAQ and chatbot → FAQ-first chatbot: asks chatbot
- Question intake → Forum API: submits
- Forum and answers → Forum API: loads and updates
- Forum and answers → Answer API: manages answers
- Forum and answers → FAQ API: promotes thread
- Admin dashboard → Admin API: manages platform
- API routes → Query controller: dispatches
- API routes → Answer controller: dispatches
- API routes → FAQ controller: dispatches
- API routes → Admin controller: dispatches
- Query controller → Query lifecycle: invokes
- Answer controller → Answer resolution: invokes
- FAQ controller → FAQ and promotion: invokes
- Admin controller → Moderation and governance: invokes
- Admin controller → Reputation and users: manages users
- Admin controller → Curated taxonomy: curates terms
- Query lifecycle → Submission quality gates: checks submissions
- Query lifecycle → Semantic search: finds similar queries
- Query lifecycle → AI provider: embeds and refines
- FAQ-first chatbot → AI provider: uses model
- Query lifecycle → Domain models: reads and writes
- Answer resolution → Domain models: reads and writes
- FAQ and promotion → Domain models: reads and writes
- Moderation and governance → Domain models: reads and writes
- Reputation and users → Domain models: reads and writes
- Curated taxonomy → Domain models: reads and writes
- Domain models → MongoDB: persists records
- Scheduled maintenance → Domain models: maintains records
