# radikdwiyoga/promanai architecture

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

## Overview

ProMan is an AI-assisted enterprise project-management application. Users sign in, manage projects and tasks through multiple views, and use AI for task planning, advice, summaries, risk analysis, and workload allocation; changes are persisted and may trigger notifications. The graph also preserves administration, backup, and documented email-notification capabilities. Edges are limited to relationships visible in the excerpts, SOURCE INDEX references, or README; some README-described integrations are not shown in sampled implementation code.

Main entry points: [`src/App.tsx`](https://github.com/radikdwiyoga/promanai/blob/main/src/App.tsx) (App Router), [`src/context/ProjectContext.tsx`](https://github.com/radikdwiyoga/promanai/blob/main/src/context/ProjectContext.tsx) (Project State), [`src/services/firestoreService.ts`](https://github.com/radikdwiyoga/promanai/blob/main/src/services/firestoreService.ts) (Firestore Service), [`src/services/authService.ts`](https://github.com/radikdwiyoga/promanai/blob/main/src/services/authService.ts) (Auth Service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Application"]
  node_app["App Router<br/>[App.tsx]"]
  node_login["Login<br/>[LoginPage.tsx]"]
  node_theme["Theme State<br/>[ThemeContext.tsx]"]
  node_admin["Admin Settings"]
end

subgraph group_work["Project Work"]
  node_projects["Project Management"]
  node_taskmodal["Task Editor<br/>[TaskModal.tsx]"]
  node_create["Task Creation"]
  node_kanban["Kanban Board<br/>[KanbanView.tsx]"]
  node_timeline["Timeline<br/>[TimelineView.tsx]"]
  node_calendar["Calendar<br/>[CalendarView.tsx]"]
  node_list["Task List<br/>[ListView.tsx]"]
end

subgraph group_intelligence["AI Intelligence"]
  node_breakdown["Task Breakdown"]
  node_copilot["Project Copilot"]
  node_summary["Status Summary"]
  node_risk["Risk Analysis"]
  node_resources["Resource Allocation"]
  node_gemini["AI Service<br/>[geminiService.ts]"]
  node_simulator["AI Analysis Engine<br/>[aiSimulator.ts]"]
  node_knowledge["Copilot Knowledge"]
end

subgraph group_platform["Identity and Data"]
  node_projectcontext["Project State<br/>[ProjectContext.tsx]"]
  node_firestore["Firestore Service"]
  node_firebase["Firebase Setup<br/>[firebase.ts]"]
  node_authservice["Auth Service<br/>[authService.ts]"]
  node_auth[("Firebase Auth")]
  node_store[("Firestore")]
  node_initial["Initial Data<br/>[initialData.ts]"]
  node_types["Domain Types<br/>[index.ts]"]
  node_backup["Backup and Export<br/>[backupService.ts]"]
end

subgraph group_notify["Notifications"]
  node_telegram["Telegram Notifications<br/>[telegramService.ts]"]
  node_telegramapi["Telegram Bot API"]
  node_functions["Email Triggers<br/>[index.ts]"]
  node_emailservice["Email Sender<br/>[emailService.ts]"]
  node_emailtemplates["Email Templates<br/>[baseLayout.ts]"]
end

node_user(("User"))

node_user -->|"uses"| node_app
node_app -->|"wraps"| node_projectcontext
node_app -->|"wraps"| node_theme
node_app -->|"renders"| node_login
node_app -->|"routes"| node_kanban
node_app -->|"routes"| node_timeline
node_app -->|"routes"| node_calendar
node_app -->|"routes"| node_list
node_app -->|"routes"| node_projects
node_app -->|"routes"| node_risk
node_app -->|"routes"| node_resources
node_app -->|"routes"| node_admin
node_app -->|"renders"| node_taskmodal
node_app -->|"renders"| node_create
node_projectcontext -->|"persists changes"| node_firestore
node_projectcontext -->|"checks profile"| node_authservice
node_projectcontext -->|"notifies updates"| node_telegram
node_projectcontext -->|"calculates workloads"| node_simulator
node_login -->|"authenticates"| node_authservice
node_authservice -->|"uses"| node_firebase
node_authservice -->|"signs in"| node_auth
node_authservice -->|"reads profiles"| node_firestore
node_firestore -->|"uses"| node_firebase
node_firestore -.->|"reads and writes"| node_store
node_firestore -.->|"loads defaults"| node_initial
node_kanban -.->|"opens task"| node_taskmodal
node_breakdown -->|"requests breakdown"| node_gemini
node_summary -->|"requests summary"| node_gemini
node_gemini -->|"provides fallback"| node_simulator
node_gemini -->|"uses context"| node_knowledge
node_risk -->|"analyzes risk"| node_simulator
node_resources -->|"reads workload"| node_projectcontext
node_copilot -.->|"uses context"| node_knowledge
node_admin -->|"exports backup"| node_backup
node_admin -->|"tests connection"| node_telegram
node_telegram -.->|"sends messages"| node_telegramapi
node_functions -->|"sends email"| node_emailservice
node_functions -.->|"renders templates"| node_emailtemplates
node_emailtemplates -.->|"uses config"| node_functions
node_types -.->|"defines domain data"| node_projectcontext

click node_app "https://github.com/radikdwiyoga/promanai/blob/main/src/App.tsx"
click node_login "https://github.com/radikdwiyoga/promanai/blob/main/src/components/auth/LoginPage.tsx"
click node_theme "https://github.com/radikdwiyoga/promanai/blob/main/src/context/ThemeContext.tsx"
click node_projectcontext "https://github.com/radikdwiyoga/promanai/blob/main/src/context/ProjectContext.tsx"
click node_projects "https://github.com/radikdwiyoga/promanai/blob/main/src/components/projects/ProjectManagementView.tsx"
click node_taskmodal "https://github.com/radikdwiyoga/promanai/blob/main/src/components/tasks/TaskModal.tsx"
click node_create "https://github.com/radikdwiyoga/promanai/blob/main/src/components/tasks/CreateTaskModal.tsx"
click node_kanban "https://github.com/radikdwiyoga/promanai/blob/main/src/components/views/KanbanView.tsx"
click node_timeline "https://github.com/radikdwiyoga/promanai/blob/main/src/components/views/TimelineView.tsx"
click node_calendar "https://github.com/radikdwiyoga/promanai/blob/main/src/components/views/CalendarView.tsx"
click node_list "https://github.com/radikdwiyoga/promanai/blob/main/src/components/views/ListView.tsx"
click node_admin "https://github.com/radikdwiyoga/promanai/blob/main/src/components/admin/AdminSettingsView.tsx"
click node_breakdown "https://github.com/radikdwiyoga/promanai/blob/main/src/components/ai/AITaskBreakdownModal.tsx"
click node_copilot "https://github.com/radikdwiyoga/promanai/blob/main/src/components/ai/ProjectCopilotDrawer.tsx"
click node_summary "https://github.com/radikdwiyoga/promanai/blob/main/src/components/ai/StatusSummarizerModal.tsx"
click node_risk "https://github.com/radikdwiyoga/promanai/blob/main/src/components/ai/RiskAnalysisDashboard.tsx"
click node_resources "https://github.com/radikdwiyoga/promanai/blob/main/src/components/ai/ResourceAllocationView.tsx"
click node_gemini "https://github.com/radikdwiyoga/promanai/blob/main/src/services/geminiService.ts"
click node_simulator "https://github.com/radikdwiyoga/promanai/blob/main/src/utils/aiSimulator.ts"
click node_knowledge "https://github.com/radikdwiyoga/promanai/blob/main/src/data/copilotKnowledge.ts"
click node_firestore "https://github.com/radikdwiyoga/promanai/blob/main/src/services/firestoreService.ts"
click node_firebase "https://github.com/radikdwiyoga/promanai/blob/main/src/services/firebase.ts"
click node_authservice "https://github.com/radikdwiyoga/promanai/blob/main/src/services/authService.ts"
click node_initial "https://github.com/radikdwiyoga/promanai/blob/main/src/data/initialData.ts"
click node_types "https://github.com/radikdwiyoga/promanai/blob/main/src/types/index.ts"
click node_backup "https://github.com/radikdwiyoga/promanai/blob/main/src/services/backupService.ts"
click node_telegram "https://github.com/radikdwiyoga/promanai/blob/main/src/services/telegramService.ts"
click node_functions "https://github.com/radikdwiyoga/promanai/blob/main/functions/src/index.ts"
click node_emailservice "https://github.com/radikdwiyoga/promanai/blob/main/functions/src/services/emailService.ts"
click node_emailtemplates "https://github.com/radikdwiyoga/promanai/blob/main/functions/src/templates/baseLayout.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_login,node_theme,node_admin,node_user toneBlue
class node_projects,node_taskmodal,node_create,node_kanban,node_timeline,node_calendar,node_list toneAmber
class node_breakdown,node_copilot,node_summary,node_risk,node_resources,node_gemini,node_simulator,node_knowledge toneMint
class node_projectcontext,node_firestore,node_firebase,node_authservice,node_auth,node_store,node_initial,node_types,node_backup toneRose
class node_telegram,node_telegramapi,node_functions,node_emailservice,node_emailtemplates toneIndigo
```

## Components

### Application

- [App Router](https://github.com/radikdwiyoga/promanai/blob/main/src/App.tsx): `src/App.tsx`
- [Login](https://github.com/radikdwiyoga/promanai/blob/main/src/components/auth/LoginPage.tsx): `src/components/auth/LoginPage.tsx`
- [Theme State](https://github.com/radikdwiyoga/promanai/blob/main/src/context/ThemeContext.tsx): `src/context/ThemeContext.tsx`
- [Admin Settings](https://github.com/radikdwiyoga/promanai/blob/main/src/components/admin/AdminSettingsView.tsx): `src/components/admin/AdminSettingsView.tsx`

### Project Work

- [Project Management](https://github.com/radikdwiyoga/promanai/blob/main/src/components/projects/ProjectManagementView.tsx): `src/components/projects/ProjectManagementView.tsx`
- [Task Editor](https://github.com/radikdwiyoga/promanai/blob/main/src/components/tasks/TaskModal.tsx): `src/components/tasks/TaskModal.tsx`
- [Task Creation](https://github.com/radikdwiyoga/promanai/blob/main/src/components/tasks/CreateTaskModal.tsx): `src/components/tasks/CreateTaskModal.tsx`
- [Kanban Board](https://github.com/radikdwiyoga/promanai/blob/main/src/components/views/KanbanView.tsx): `src/components/views/KanbanView.tsx`
- [Timeline](https://github.com/radikdwiyoga/promanai/blob/main/src/components/views/TimelineView.tsx): `src/components/views/TimelineView.tsx`
- [Calendar](https://github.com/radikdwiyoga/promanai/blob/main/src/components/views/CalendarView.tsx): `src/components/views/CalendarView.tsx`
- [Task List](https://github.com/radikdwiyoga/promanai/blob/main/src/components/views/ListView.tsx): `src/components/views/ListView.tsx`

### AI Intelligence

- [Task Breakdown](https://github.com/radikdwiyoga/promanai/blob/main/src/components/ai/AITaskBreakdownModal.tsx): `src/components/ai/AITaskBreakdownModal.tsx`
- [Project Copilot](https://github.com/radikdwiyoga/promanai/blob/main/src/components/ai/ProjectCopilotDrawer.tsx): `src/components/ai/ProjectCopilotDrawer.tsx`
- [Status Summary](https://github.com/radikdwiyoga/promanai/blob/main/src/components/ai/StatusSummarizerModal.tsx): `src/components/ai/StatusSummarizerModal.tsx`
- [Risk Analysis](https://github.com/radikdwiyoga/promanai/blob/main/src/components/ai/RiskAnalysisDashboard.tsx): `src/components/ai/RiskAnalysisDashboard.tsx`
- [Resource Allocation](https://github.com/radikdwiyoga/promanai/blob/main/src/components/ai/ResourceAllocationView.tsx): `src/components/ai/ResourceAllocationView.tsx`
- [AI Service](https://github.com/radikdwiyoga/promanai/blob/main/src/services/geminiService.ts): `src/services/geminiService.ts`
- [AI Analysis Engine](https://github.com/radikdwiyoga/promanai/blob/main/src/utils/aiSimulator.ts): `src/utils/aiSimulator.ts`
- [Copilot Knowledge](https://github.com/radikdwiyoga/promanai/blob/main/src/data/copilotKnowledge.ts): `src/data/copilotKnowledge.ts`

### Identity and Data

- [Project State](https://github.com/radikdwiyoga/promanai/blob/main/src/context/ProjectContext.tsx): `src/context/ProjectContext.tsx`
- [Firestore Service](https://github.com/radikdwiyoga/promanai/blob/main/src/services/firestoreService.ts): `src/services/firestoreService.ts`
- [Firebase Setup](https://github.com/radikdwiyoga/promanai/blob/main/src/services/firebase.ts): `src/services/firebase.ts`
- [Auth Service](https://github.com/radikdwiyoga/promanai/blob/main/src/services/authService.ts): `src/services/authService.ts`
- **Firebase Auth**
- **Firestore**
- [Initial Data](https://github.com/radikdwiyoga/promanai/blob/main/src/data/initialData.ts): `src/data/initialData.ts`
- [Domain Types](https://github.com/radikdwiyoga/promanai/blob/main/src/types/index.ts): `src/types/index.ts`
- [Backup and Export](https://github.com/radikdwiyoga/promanai/blob/main/src/services/backupService.ts): `src/services/backupService.ts`

### Notifications

- [Telegram Notifications](https://github.com/radikdwiyoga/promanai/blob/main/src/services/telegramService.ts): `src/services/telegramService.ts`
- **Telegram Bot API**
- [Email Triggers](https://github.com/radikdwiyoga/promanai/blob/main/functions/src/index.ts): `functions/src/index.ts`
- [Email Sender](https://github.com/radikdwiyoga/promanai/blob/main/functions/src/services/emailService.ts): `functions/src/services/emailService.ts`
- [Email Templates](https://github.com/radikdwiyoga/promanai/blob/main/functions/src/templates/baseLayout.ts): `functions/src/templates/baseLayout.ts`

### Other components

- **User**

## Connections

- User → App Router: uses
- App Router → Project State: wraps (evidence: `src/App.tsx`)
- App Router → Theme State: wraps (evidence: `src/App.tsx`)
- App Router → Login: renders (evidence: `src/App.tsx`)
- App Router → Kanban Board: routes (evidence: `src/App.tsx`)
- App Router → Timeline: routes (evidence: `src/App.tsx`)
- App Router → Calendar: routes (evidence: `src/App.tsx`)
- App Router → Task List: routes (evidence: `src/App.tsx`)
- App Router → Project Management: routes (evidence: `src/App.tsx`)
- App Router → Risk Analysis: routes (evidence: `src/App.tsx`)
- App Router → Resource Allocation: routes (evidence: `src/App.tsx`)
- App Router → Admin Settings: routes (evidence: `src/App.tsx`)
- App Router → Task Editor: renders (evidence: `src/App.tsx`)
- App Router → Task Creation: renders (evidence: `src/App.tsx`)
- Project State → Firestore Service: persists changes (evidence: `src/context/ProjectContext.tsx`)
- Project State → Auth Service: checks profile (evidence: `src/context/ProjectContext.tsx`)
- Project State → Telegram Notifications: notifies updates (evidence: `src/context/ProjectContext.tsx`)
- Project State → AI Analysis Engine: calculates workloads (evidence: `src/context/ProjectContext.tsx`)
- Login → Auth Service: authenticates (evidence: `src/components/auth/LoginPage.tsx`)
- Auth Service → Firebase Setup: uses (evidence: `src/services/authService.ts`)
- Auth Service → Firebase Auth: signs in (evidence: `src/services/authService.ts`)
- Auth Service → Firestore Service: reads profiles (evidence: `src/services/authService.ts`)
- Firestore Service → Firebase Setup: uses (evidence: `src/services/firestoreService.ts`)
- Firestore Service → Firestore: reads and writes
- Firestore Service → Initial Data: loads defaults (evidence: `src/services/firestoreService.ts`)
- Kanban Board → Task Editor: opens task
- Task Breakdown → AI Service: requests breakdown (evidence: `src/components/ai/AITaskBreakdownModal.tsx`)
- Status Summary → AI Service: requests summary (evidence: `src/components/ai/StatusSummarizerModal.tsx`)
- AI Service → AI Analysis Engine: provides fallback (evidence: `src/services/geminiService.ts`)
- AI Service → Copilot Knowledge: uses context (evidence: `src/services/geminiService.ts`)
- Risk Analysis → AI Analysis Engine: analyzes risk (evidence: `src/components/ai/RiskAnalysisDashboard.tsx`)
- Resource Allocation → Project State: reads workload (evidence: `src/components/ai/ResourceAllocationView.tsx`)
- Project Copilot → Copilot Knowledge: uses context
- Admin Settings → Backup and Export: exports backup (evidence: `src/components/admin/AdminSettingsView.tsx`)
- Admin Settings → Telegram Notifications: tests connection (evidence: `src/components/admin/AdminSettingsView.tsx`)
- Telegram Notifications → Telegram Bot API: sends messages
- Email Triggers → Email Sender: sends email (evidence: `functions/src/index.ts`)
- Email Triggers → Email Templates: renders templates
- Email Templates → Email Triggers: uses config
- Domain Types → Project State: defines domain data (evidence: `src/context/ProjectContext.tsx`)
