# ravindu374/engineerflow architecture

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

- Interactive diagram: https://gitdiagram.com/ravindu374/engineerflow
- Repository: https://github.com/ravindu374/engineerflow

## Overview

EngineerFlow is a project and task management platform. Users authenticate in the Next.js app, then use the dashboard and project views to manage projects and task statuses through the FastAPI REST API. The backend separates API routes, services, and repositories; structured records use PostgreSQL, while project activity is logged to MongoDB and project-creation email work is dispatched asynchronously. The README also documents registration, activity monitoring, and task workflows. Some route and frontend wiring is inferred from the documented capabilities and module layout; only sampled source confirms the specific service calls shown.

Main entry points: [`app/main.py`](https://github.com/ravindu374/engineerflow/blob/main/app/main.py) (FastAPI app), [`engineerflow-frontend/lib/api.ts`](https://github.com/ravindu374/engineerflow/blob/main/engineerflow-frontend/lib/api.ts) (API client), [`app/repositories/user_repository.py`](https://github.com/ravindu374/engineerflow/blob/main/app/repositories/user_repository.py) (User repository), [`app/services/project_service.py`](https://github.com/ravindu374/engineerflow/blob/main/app/services/project_service.py) (Project management)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Web application"]
  node_login["Login and register<br/>[page.tsx]"]
  node_dashboard["Dashboard<br/>[page.tsx]"]
  node_project_view["Project view<br/>[page.tsx]"]
  node_api_client["API client<br/>[api.ts]"]
end

subgraph group_api["REST API"]
  node_api_app["FastAPI app<br/>[main.py]"]
  node_auth_api["Auth routes<br/>[auth.py]"]
  node_users_api["User routes<br/>[users.py]"]
  node_projects_api["Project routes<br/>[projects.py]"]
  node_tasks_api["Task routes<br/>[tasks.py]"]
end

subgraph group_domain["Domain services"]
  node_auth_service["Authentication<br/>[auth_service.py]"]
  node_user_service["User management<br/>[user_service.py]"]
  node_project_service["Project management<br/>[project_service.py]"]
  node_task_service["Task management<br/>[task_service.py]"]
end

subgraph group_data["Persistence and jobs"]
  node_user_repo["User repository<br/>[user_repository.py]"]
  node_project_repo["Project repository"]
  node_task_repo["Task repository<br/>[task_repository.py]"]
  node_activity_service["Activity logging"]
  node_postgres[("PostgreSQL")]
  node_mongo[("MongoDB")]
  node_worker_tasks["Background tasks<br/>[tasks.py]"]
  node_celery["Celery app<br/>[celery_app.py]"]
end

node_user(("User"))

node_user -->|"submits credentials"| node_login
node_user -->|"manages work"| node_dashboard
node_dashboard -->|"requests data"| node_api_client
node_project_view -->|"updates tasks"| node_api_client
node_login -->|"sends credentials"| node_api_client
node_api_client -->|"REST requests"| node_api_app
node_api_app -->|"mounts routes"| node_auth_api
node_api_app -->|"mounts routes"| node_users_api
node_api_app -->|"mounts routes"| node_projects_api
node_api_app -->|"mounts routes"| node_tasks_api
node_auth_service -->|"looks up users"| node_user_repo
node_auth_service -->|"authenticates via"| node_user_repo
node_user_service -->|"manages users"| node_user_repo
node_tasks_api -->|"checks ownership"| node_project_repo
node_tasks_api -->|"creates or lists"| node_task_service
node_project_service -->|"creates and reads"| node_project_repo
node_project_service -->|"logs activity"| node_activity_service
node_project_service -->|"dispatches email"| node_worker_tasks
node_user_repo -->|"reads and writes"| node_postgres
node_project_repo -->|"reads and writes"| node_postgres
node_task_repo -->|"reads and writes"| node_postgres
node_activity_service -->|"inserts logs"| node_mongo
node_worker_tasks -->|"registered with"| node_celery

click node_login "https://github.com/ravindu374/engineerflow/blob/main/engineerflow-frontend/app/login/page.tsx"
click node_dashboard "https://github.com/ravindu374/engineerflow/blob/main/engineerflow-frontend/app/dashboard/page.tsx"
click node_project_view "https://github.com/ravindu374/engineerflow/blob/main/engineerflow-frontend/app/projects/%5Bid%5D/page.tsx"
click node_api_client "https://github.com/ravindu374/engineerflow/blob/main/engineerflow-frontend/lib/api.ts"
click node_api_app "https://github.com/ravindu374/engineerflow/blob/main/app/main.py"
click node_auth_api "https://github.com/ravindu374/engineerflow/blob/main/app/api/v1/auth.py"
click node_users_api "https://github.com/ravindu374/engineerflow/blob/main/app/api/v1/users.py"
click node_projects_api "https://github.com/ravindu374/engineerflow/blob/main/app/api/v1/projects.py"
click node_tasks_api "https://github.com/ravindu374/engineerflow/blob/main/app/api/v1/tasks.py"
click node_auth_service "https://github.com/ravindu374/engineerflow/blob/main/app/services/auth_service.py"
click node_user_service "https://github.com/ravindu374/engineerflow/blob/main/app/services/user_service.py"
click node_project_service "https://github.com/ravindu374/engineerflow/blob/main/app/services/project_service.py"
click node_task_service "https://github.com/ravindu374/engineerflow/blob/main/app/services/task_service.py"
click node_user_repo "https://github.com/ravindu374/engineerflow/blob/main/app/repositories/user_repository.py"
click node_project_repo "https://github.com/ravindu374/engineerflow/blob/main/app/repositories/project_repository.py"
click node_task_repo "https://github.com/ravindu374/engineerflow/blob/main/app/repositories/task_repository.py"
click node_activity_service "https://github.com/ravindu374/engineerflow/blob/main/app/services/activity_service.py"
click node_worker_tasks "https://github.com/ravindu374/engineerflow/blob/main/app/workers/tasks.py"
click node_celery "https://github.com/ravindu374/engineerflow/blob/main/app/workers/celery_app.py"

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_login,node_dashboard,node_project_view,node_api_client,node_user toneBlue
class node_api_app,node_auth_api,node_users_api,node_projects_api,node_tasks_api toneAmber
class node_auth_service,node_user_service,node_project_service,node_task_service toneMint
class node_user_repo,node_project_repo,node_task_repo,node_activity_service,node_postgres,node_mongo,node_worker_tasks,node_celery toneRose
```

## Components

### Web application

- [Login and register](https://github.com/ravindu374/engineerflow/blob/main/engineerflow-frontend/app/login/page.tsx): `engineerflow-frontend/app/login/page.tsx`
- [Dashboard](https://github.com/ravindu374/engineerflow/blob/main/engineerflow-frontend/app/dashboard/page.tsx): `engineerflow-frontend/app/dashboard/page.tsx`
- [Project view](https://github.com/ravindu374/engineerflow/blob/main/engineerflow-frontend/app/projects/%5Bid%5D/page.tsx): `engineerflow-frontend/app/projects/[id]/page.tsx`
- [API client](https://github.com/ravindu374/engineerflow/blob/main/engineerflow-frontend/lib/api.ts): `engineerflow-frontend/lib/api.ts`

### REST API

- [FastAPI app](https://github.com/ravindu374/engineerflow/blob/main/app/main.py): `app/main.py`
- [Auth routes](https://github.com/ravindu374/engineerflow/blob/main/app/api/v1/auth.py): `app/api/v1/auth.py`
- [User routes](https://github.com/ravindu374/engineerflow/blob/main/app/api/v1/users.py): `app/api/v1/users.py`
- [Project routes](https://github.com/ravindu374/engineerflow/blob/main/app/api/v1/projects.py): `app/api/v1/projects.py`
- [Task routes](https://github.com/ravindu374/engineerflow/blob/main/app/api/v1/tasks.py): `app/api/v1/tasks.py`

### Domain services

- [Authentication](https://github.com/ravindu374/engineerflow/blob/main/app/services/auth_service.py): `app/services/auth_service.py`
- [User management](https://github.com/ravindu374/engineerflow/blob/main/app/services/user_service.py): `app/services/user_service.py`
- [Project management](https://github.com/ravindu374/engineerflow/blob/main/app/services/project_service.py): `app/services/project_service.py`
- [Task management](https://github.com/ravindu374/engineerflow/blob/main/app/services/task_service.py): `app/services/task_service.py`

### Persistence and jobs

- [User repository](https://github.com/ravindu374/engineerflow/blob/main/app/repositories/user_repository.py): `app/repositories/user_repository.py`
- [Project repository](https://github.com/ravindu374/engineerflow/blob/main/app/repositories/project_repository.py): `app/repositories/project_repository.py`
- [Task repository](https://github.com/ravindu374/engineerflow/blob/main/app/repositories/task_repository.py): `app/repositories/task_repository.py`
- [Activity logging](https://github.com/ravindu374/engineerflow/blob/main/app/services/activity_service.py): `app/services/activity_service.py`
- **PostgreSQL**
- **MongoDB**
- [Background tasks](https://github.com/ravindu374/engineerflow/blob/main/app/workers/tasks.py): `app/workers/tasks.py`
- [Celery app](https://github.com/ravindu374/engineerflow/blob/main/app/workers/celery_app.py): `app/workers/celery_app.py`

### Other components

- **User**

## Connections

- User → Login and register: submits credentials
- User → Dashboard: manages work
- Dashboard → API client: requests data
- Project view → API client: updates tasks
- Login and register → API client: sends credentials
- API client → FastAPI app: REST requests
- FastAPI app → Auth routes: mounts routes
- FastAPI app → User routes: mounts routes
- FastAPI app → Project routes: mounts routes
- FastAPI app → Task routes: mounts routes
- Authentication → User repository: looks up users
- Authentication → User repository: authenticates via
- User management → User repository: manages users
- Task routes → Project repository: checks ownership
- Task routes → Task management: creates or lists
- Project management → Project repository: creates and reads
- Project management → Activity logging: logs activity
- Project management → Background tasks: dispatches email
- User repository → PostgreSQL: reads and writes
- Project repository → PostgreSQL: reads and writes
- Task repository → PostgreSQL: reads and writes
- Activity logging → MongoDB: inserts logs
- Background tasks → Celery app: registered with
