# manju1303/research-erp architecture

> Architecture diagram of the GitHub repository manju1303/research-erp, 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/manju1303/research-erp
- Repository: https://github.com/manju1303/research-erp

## Overview

Scriptara is a research-publication ERP whose central workflow runs from project intake and lifecycle management through manuscript drafting and QC, journal matching, submission and publication, then financial settlement. The Next.js UI uses a shared API client to reach a NestJS REST backend; shared enums and state machines define domain vocabulary. The README documents automation, reporting, communications, documents and RBAC as additional capabilities. Source excerpts are selective, so links between unsampled services and storage or persistence are not asserted.

Main entry points: [`apps/backend/src/main.ts`](https://github.com/manju1303/research-erp/blob/main/apps/backend/src/main.ts) (NestJS REST API), [`apps/frontend/src/lib/api.ts`](https://github.com/manju1303/research-erp/blob/main/apps/frontend/src/lib/api.ts) (API client), [`packages/shared/src/state-machines`](https://github.com/manju1303/research-erp/tree/main/packages/shared/src/state-machines) (Domain state machines), [`apps/frontend/src/app/page.tsx`](https://github.com/manju1303/research-erp/blob/main/apps/frontend/src/app/page.tsx) (Dashboard)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["User interface"]
  node_dashboard["Dashboard<br/>[page.tsx]"]
  node_project_ui["Project workspace<br/>[page.tsx]"]
  node_manuscript_ui["Manuscript studio<br/>[page.tsx]"]
  node_submission_ui["Submission tracker<br/>[page.tsx]"]
  node_finance_ui["Finance screen<br/>[page.tsx]"]
  node_api_client["API client<br/>[api.ts]"]
end

subgraph group_lifecycle["Publication lifecycle"]
  node_projects["Project lifecycle"]
  node_manuscripts["Manuscript and QC"]
  node_journals["Journal matching"]
  node_submissions["Journal submissions"]
  node_publications["Publication registry"]
end

subgraph group_operations["Operations and oversight"]
  node_finance["Invoices and payments"]
  node_tasks["Task management"]
  node_documents["Documents"]
  node_automation["Event automation"]
  node_reports["Reports and dashboard"]
  node_communications["Correspondence"]
  node_audit["Audit trail"]
end

subgraph group_platform["Backend platform"]
  node_api["NestJS REST API<br/>[main.ts]"]
  node_auth["Authentication and RBAC<br/>[auth.controller.ts]"]
  node_shared_states["Domain state machines"]
  node_database[("Relational database<br/>[prisma.service.ts]")]
end

node_researcher(("Staff and clients"))

node_researcher -->|"uses"| node_dashboard
node_researcher -->|"manages work"| node_project_ui
node_researcher -->|"drafts and reviews"| node_manuscript_ui
node_researcher -->|"tracks review"| node_submission_ui
node_researcher -->|"reviews billing"| node_finance_ui
node_dashboard -->|"requests data"| node_api_client
node_project_ui -->|"sends changes"| node_api_client
node_manuscript_ui -->|"sends changes"| node_api_client
node_submission_ui -->|"requests updates"| node_api_client
node_finance_ui -->|"requests billing"| node_api_client
node_api_client -->|"sends REST requests"| node_api
node_api -->|"routes requests"| node_projects
node_api -->|"routes requests"| node_manuscripts
node_api -->|"routes requests"| node_journals
node_api -->|"routes requests"| node_submissions
node_api -->|"routes requests"| node_publications
node_api -->|"routes requests"| node_finance
node_api -->|"routes requests"| node_tasks
node_api -->|"routes requests"| node_documents
node_api -->|"routes requests"| node_auth
node_projects -->|"uses transitions"| node_shared_states
node_manuscripts -->|"uses transitions"| node_shared_states
node_tasks -->|"uses transitions"| node_shared_states

click node_dashboard "https://github.com/manju1303/research-erp/blob/main/apps/frontend/src/app/page.tsx"
click node_project_ui "https://github.com/manju1303/research-erp/blob/main/apps/frontend/src/app/projects/%5Bid%5D/page.tsx"
click node_manuscript_ui "https://github.com/manju1303/research-erp/blob/main/apps/frontend/src/app/manuscripts/%5Bid%5D/page.tsx"
click node_submission_ui "https://github.com/manju1303/research-erp/blob/main/apps/frontend/src/app/submissions/page.tsx"
click node_finance_ui "https://github.com/manju1303/research-erp/blob/main/apps/frontend/src/app/finance/page.tsx"
click node_api_client "https://github.com/manju1303/research-erp/blob/main/apps/frontend/src/lib/api.ts"
click node_api "https://github.com/manju1303/research-erp/blob/main/apps/backend/src/main.ts"
click node_projects "https://github.com/manju1303/research-erp/blob/main/apps/backend/src/modules/projects/projects.controller.ts"
click node_manuscripts "https://github.com/manju1303/research-erp/blob/main/apps/backend/src/modules/manuscripts/manuscripts.controller.ts"
click node_journals "https://github.com/manju1303/research-erp/blob/main/apps/backend/src/modules/journals/journals.controller.ts"
click node_submissions "https://github.com/manju1303/research-erp/blob/main/apps/backend/src/modules/submissions/submissions.controller.ts"
click node_publications "https://github.com/manju1303/research-erp/blob/main/apps/backend/src/modules/publications/publications.controller.ts"
click node_finance "https://github.com/manju1303/research-erp/blob/main/apps/backend/src/modules/finance/finance.controller.ts"
click node_tasks "https://github.com/manju1303/research-erp/blob/main/apps/backend/src/modules/tasks/tasks.controller.ts"
click node_documents "https://github.com/manju1303/research-erp/blob/main/apps/backend/src/modules/documents/documents.controller.ts"
click node_automation "https://github.com/manju1303/research-erp/tree/main/apps/backend/src/modules/automation"
click node_reports "https://github.com/manju1303/research-erp/blob/main/apps/backend/src/modules/reports/reports.controller.ts"
click node_communications "https://github.com/manju1303/research-erp/blob/main/apps/backend/src/modules/communications/communications.controller.ts"
click node_audit "https://github.com/manju1303/research-erp/blob/main/apps/backend/src/modules/audit/audit.controller.ts"
click node_auth "https://github.com/manju1303/research-erp/blob/main/apps/backend/src/modules/auth/auth.controller.ts"
click node_shared_states "https://github.com/manju1303/research-erp/tree/main/packages/shared/src/state-machines"
click node_database "https://github.com/manju1303/research-erp/blob/main/apps/backend/src/database/prisma.service.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_dashboard,node_project_ui,node_manuscript_ui,node_submission_ui,node_finance_ui,node_api_client,node_researcher toneBlue
class node_projects,node_manuscripts,node_journals,node_submissions,node_publications toneAmber
class node_finance,node_tasks,node_documents,node_automation,node_reports,node_communications,node_audit toneMint
class node_api,node_auth,node_shared_states,node_database toneRose
```

## Components

### User interface

- [Dashboard](https://github.com/manju1303/research-erp/blob/main/apps/frontend/src/app/page.tsx): `apps/frontend/src/app/page.tsx`
- [Project workspace](https://github.com/manju1303/research-erp/blob/main/apps/frontend/src/app/projects/%5Bid%5D/page.tsx): `apps/frontend/src/app/projects/[id]/page.tsx`
- [Manuscript studio](https://github.com/manju1303/research-erp/blob/main/apps/frontend/src/app/manuscripts/%5Bid%5D/page.tsx): `apps/frontend/src/app/manuscripts/[id]/page.tsx`
- [Submission tracker](https://github.com/manju1303/research-erp/blob/main/apps/frontend/src/app/submissions/page.tsx): `apps/frontend/src/app/submissions/page.tsx`
- [Finance screen](https://github.com/manju1303/research-erp/blob/main/apps/frontend/src/app/finance/page.tsx): `apps/frontend/src/app/finance/page.tsx`
- [API client](https://github.com/manju1303/research-erp/blob/main/apps/frontend/src/lib/api.ts): `apps/frontend/src/lib/api.ts`

### Publication lifecycle

- [Project lifecycle](https://github.com/manju1303/research-erp/blob/main/apps/backend/src/modules/projects/projects.controller.ts): `apps/backend/src/modules/projects/projects.controller.ts`
- [Manuscript and QC](https://github.com/manju1303/research-erp/blob/main/apps/backend/src/modules/manuscripts/manuscripts.controller.ts): `apps/backend/src/modules/manuscripts/manuscripts.controller.ts`
- [Journal matching](https://github.com/manju1303/research-erp/blob/main/apps/backend/src/modules/journals/journals.controller.ts): `apps/backend/src/modules/journals/journals.controller.ts`
- [Journal submissions](https://github.com/manju1303/research-erp/blob/main/apps/backend/src/modules/submissions/submissions.controller.ts): `apps/backend/src/modules/submissions/submissions.controller.ts`
- [Publication registry](https://github.com/manju1303/research-erp/blob/main/apps/backend/src/modules/publications/publications.controller.ts): `apps/backend/src/modules/publications/publications.controller.ts`

### Operations and oversight

- [Invoices and payments](https://github.com/manju1303/research-erp/blob/main/apps/backend/src/modules/finance/finance.controller.ts): `apps/backend/src/modules/finance/finance.controller.ts`
- [Task management](https://github.com/manju1303/research-erp/blob/main/apps/backend/src/modules/tasks/tasks.controller.ts): `apps/backend/src/modules/tasks/tasks.controller.ts`
- [Documents](https://github.com/manju1303/research-erp/blob/main/apps/backend/src/modules/documents/documents.controller.ts): `apps/backend/src/modules/documents/documents.controller.ts`
- [Event automation](https://github.com/manju1303/research-erp/tree/main/apps/backend/src/modules/automation): `apps/backend/src/modules/automation`
- [Reports and dashboard](https://github.com/manju1303/research-erp/blob/main/apps/backend/src/modules/reports/reports.controller.ts): `apps/backend/src/modules/reports/reports.controller.ts`
- [Correspondence](https://github.com/manju1303/research-erp/blob/main/apps/backend/src/modules/communications/communications.controller.ts): `apps/backend/src/modules/communications/communications.controller.ts`
- [Audit trail](https://github.com/manju1303/research-erp/blob/main/apps/backend/src/modules/audit/audit.controller.ts): `apps/backend/src/modules/audit/audit.controller.ts`

### Backend platform

- [NestJS REST API](https://github.com/manju1303/research-erp/blob/main/apps/backend/src/main.ts): `apps/backend/src/main.ts`
- [Authentication and RBAC](https://github.com/manju1303/research-erp/blob/main/apps/backend/src/modules/auth/auth.controller.ts): `apps/backend/src/modules/auth/auth.controller.ts`
- [Domain state machines](https://github.com/manju1303/research-erp/tree/main/packages/shared/src/state-machines): `packages/shared/src/state-machines`
- [Relational database](https://github.com/manju1303/research-erp/blob/main/apps/backend/src/database/prisma.service.ts): `apps/backend/src/database/prisma.service.ts`

### Other components

- **Staff and clients**

## Connections

- Staff and clients → Dashboard: uses
- Staff and clients → Project workspace: manages work
- Staff and clients → Manuscript studio: drafts and reviews
- Staff and clients → Submission tracker: tracks review
- Staff and clients → Finance screen: reviews billing
- Dashboard → API client: requests data
- Project workspace → API client: sends changes
- Manuscript studio → API client: sends changes
- Submission tracker → API client: requests updates
- Finance screen → API client: requests billing
- API client → NestJS REST API: sends REST requests
- NestJS REST API → Project lifecycle: routes requests
- NestJS REST API → Manuscript and QC: routes requests
- NestJS REST API → Journal matching: routes requests
- NestJS REST API → Journal submissions: routes requests
- NestJS REST API → Publication registry: routes requests
- NestJS REST API → Invoices and payments: routes requests
- NestJS REST API → Task management: routes requests
- NestJS REST API → Documents: routes requests
- NestJS REST API → Authentication and RBAC: routes requests
- Project lifecycle → Domain state machines: uses transitions
- Manuscript and QC → Domain state machines: uses transitions
- Task management → Domain state machines: uses transitions
