Skip to content

🧩 Modular task management platform with microservices β€” built using .NET, Java β˜• (Spring Boot), Python 🐍 (FastAPI), Angular ⚑, Docker 🐳 & Helm 🚒. Includes auth πŸ”, tasks βœ…, analytics πŸ“Š, recommendations πŸ’‘, and a YARP API Gateway πŸšͺ.

License

Notifications You must be signed in to change notification settings

Abstractize/todo.app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

11 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

TODO Monorepo πŸ“

This monorepo contains the complete suite of services and clients for the TODO application platform, organized under the src/ directory for clear modularity and scalability.


Screenshots πŸ–ΌοΈ

Here are some screenshots of the TODO platform in action:

Task Lists Login Analytics Dashboard
Task Lists Login Analytics
Task Lists (Mobile) Login (Mobile) Analytics (Mobile)

For more visuals, see the docs/images/ directory.


About the Project πŸš€

The TODO platform is built on a microservices architecture, delivering a scalable and modular task management solution.


Project Structure πŸ—‚οΈ

todo.monorepo/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ infra/                  # Infrastructure: Helm charts, deployment scripts, Docker configs βš™οΈ
β”‚   β”œβ”€β”€ ui/
β”‚   β”‚   β”œβ”€β”€ web/                # Angular frontend client 🌐
β”‚   β”‚   β”œβ”€β”€ mobile/             # React Native mobile client πŸ“±
β”‚   β”œβ”€β”€ db/                     # Database migrations and seeders πŸ—„οΈ
β”‚   β”œβ”€β”€ libs/
β”‚   β”‚   └── todo.common/        # Shared libraries and utilities 🧰
β”‚   β”œβ”€β”€ services/
β”‚   β”‚   β”œβ”€β”€ todo.recommendation/   # Recommendation microservice πŸ€– (Python, FastAPI)
β”‚   β”‚   β”œβ”€β”€ todo.analytics/        # Analytics microservice πŸ“Š (Java, Spring Boot)
β”‚   β”‚   β”œβ”€β”€ todo.auth-service/     # Auth microservice πŸ” (.NET Core)
β”‚   β”‚   β”œβ”€β”€ todo.task-service/     # Task management microservice βœ… (.NET Core)
β”‚   β”œβ”€β”€ gateway/                # API Gateway service πŸšͺ (.NET Core, YARP)
β”œβ”€β”€ docs/                       # Project documentation πŸ“š
β”œβ”€β”€ docker-compose.yml          # Multi-service orchestration file for local 🐳
β”œβ”€β”€ README.md                   # Project overview πŸ“„
β”œβ”€β”€ LICENSE                     # License information πŸ“œ

Architecture Diagram πŸ—οΈ

Below is a high-level architecture diagram illustrating the relationships between the main services in the TODO platform:

flowchart TD
  subgraph UI
    A["Web App (Angular)"]
    B["Mobile App (React Native)"]
  end

  subgraph Gateway
    C["API Gateway (YARP, .NET)"]
  end

  subgraph Services
    D["Auth Service (.NET Core)"]
    E["Task Service (.NET)"]
    F["Analytics Service (Java, Spring Boot)"]
    G["Recommendations Service (Python, FastAPI)"]
  end

  subgraph Database
    H["Auth DB (PostgreSQL)"]
    I["Task DB (PostgreSQL)"]
    J["Analytics DB (PostgreSQL)"]
    K["Recommendations DB (PostgreSQL)"]
  end

  A -- "REST" --> C
  B -- "REST" --> C
  
  C -- "REST" --> D
  C -- "REST" --> E
  C -- "REST" --> F
  C -- "REST" --> G

  D -- "SQL" --> H
  E -- "SQL" --> I
  F -- "SQL" --> J
  G -- "SQL" --> K

  F -- "gRPC" --> E

  subgraph Others
    L["Common (.NET)"]
    M["Infra (K8S)"]
  end
Loading

Diagram Explanation

  • UI Layer:
    The Web App (todo.angular-client, Angular) and Mobile App (todo.react-native-mobile, React Native) serve as the main user interfaces, communicating with the API Gateway via REST APIs.

  • API Gateway:
    The API Gateway (todo.gateway, YARP, .NET Core) acts as a unified entry point, routing client requests to backend microservices.

  • Services Layer:

    • Auth Service: (todo.auth-service, Python, FastAPI)
      Manages authentication and authorization.
    • Task Service: (todo.task-service, .NET Core)
      Handles task management and lifecycle.
    • Analytics Service: (todo.analytics, Python, FastAPI)
      Processes analytics and event tracking.
    • Recommendations Service: (todo.recommendations, Python, FastAPI)
      Delivers personalized task recommendations.
  • Database Layer:
    Each microservice uses its own PostgreSQL database for isolation and scalability. Database migrations and seed data are managed by todo.db.

  • Infrastructure & Shared Libraries:

    • Infrastructure: (todo.infra)
      Helm charts, Docker Compose, and deployment scripts for provisioning and orchestration.
    • Shared Libraries: (todo.common)
      Shared utilities, models, and helpers used across services.
  • Inter-Service Communication:

    • The Analytics Service communicates with the Task Service using gRPC for efficient data exchange.
    • All other service-to-database interactions use SQL.

This architecture promotes modularity, scalability, and clear separation of concerns.

Edit or view this diagram using the Mermaid Live Editor.


Why This Monorepo? πŸ€”

  • Unified Development Experience: All related projects are in one place, simplifying cross-service changes.
  • Consistency: Shared configurations and dependencies reduce integration friction.
  • Scalability: Modular service architecture designed for easy extension.
  • Demonstration of Expertise: Showcases proficiency in multiple languages, frameworks, and modern DevOps practices.

Getting Started 🏁

Example .env File

Copy the following into a .env file at the project root to configure local development:

SQL_USERNAME=
SQL_PASSWORD=

SQL_CONNECTION_STRING_AUTH=
SQL_CONNECTION_STRING_TASK=
SQL_CONNECTION_STRING_ANALYTICS=
SQL_CONNECTION_STRING_RECOMMENDATIONS=

JWT_KEY=
JWT_ISSUER=
JWT_AUDIENCE=

GITHUB_TOKEN=
GITHUB_USERNAME=

Note:

  • Never commit your real .env file with secrets to version control.
  • Update secrets and credentials as needed for your environment.

To launch the entire platform for local development, use the provided script:

./docker-compose-up.sh

This command builds and starts all services and dependencies in containers, ensuring a consistent development and testing environment.

  • Hot Reload Support:
    Most services support hot reloading for rapid development cycles.
  • Service Isolation:
    Each microservice runs in its own container, making it easy to debug and iterate independently.
  • Environment Configuration:
    Environment variables and configuration files can be customized for local overrides.

Refer to this README.md or the docs/ directory for advanced configuration and troubleshooting tips.


Contact & More Info πŸ“¬

For detailed documentation on each service, visit their respective repositories linked above or contact the maintainers.


License πŸ“œ

This project is licensed under the MIT License.

About

🧩 Modular task management platform with microservices β€” built using .NET, Java β˜• (Spring Boot), Python 🐍 (FastAPI), Angular ⚑, Docker 🐳 & Helm 🚒. Includes auth πŸ”, tasks βœ…, analytics πŸ“Š, recommendations πŸ’‘, and a YARP API Gateway πŸšͺ.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages