{"id":25110082,"url":"https://github.com/rblessings/roi-project-planner","last_synced_at":"2025-07-08T05:32:57.526Z","repository":{"id":276206988,"uuid":"928033948","full_name":"rblessings/roi-project-planner","owner":"rblessings","description":"Open-source tool that selects up to k projects to maximize final capital. It leverages greedy algorithms, reactive programming, and cloud-native best practices, making it scalable, fault-tolerant, and observability-ready.","archived":false,"fork":false,"pushed_at":"2025-02-06T21:25:38.000Z","size":75,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-06T22:26:42.881Z","etag":null,"topics":["cloud-native","data-structures","event-driven","fault-tolerance","observability","testcontainers","webflux"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rblessings.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-02-06T00:17:44.000Z","updated_at":"2025-02-06T21:25:42.000Z","dependencies_parsed_at":"2025-02-06T22:26:50.327Z","dependency_job_id":"1019fcb2-2813-47e6-b7a0-a23ff56ee3a9","html_url":"https://github.com/rblessings/roi-project-planner","commit_stats":null,"previous_names":["rblessings/roi-project-planner"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rblessings%2Froi-project-planner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rblessings%2Froi-project-planner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rblessings%2Froi-project-planner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rblessings%2Froi-project-planner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rblessings","download_url":"https://codeload.github.com/rblessings/roi-project-planner/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246786766,"owners_count":20833748,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cloud-native","data-structures","event-driven","fault-tolerance","observability","testcontainers","webflux"],"created_at":"2025-02-08T00:35:12.219Z","updated_at":"2025-04-02T09:26:01.284Z","avatar_url":"https://github.com/rblessings.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Return On Investment (ROI) Project Planner\n\n## Overview\n\n**ROI Project Planner** is an open-source tool designed to maximize capital by selecting up to *k* distinct projects\nfrom a pool of available projects. Leveraging greedy algorithms, advanced data structures, and best practices in\nsoftware engineering, this solution is inspired by real-world venture capital and investment strategies. It not only\ndemonstrates expertise in data structures, algorithms, design patterns, and SOLID principles but also integrates modern\ncloud-native patterns including reactive programming, fault tolerance, and event-driven architectures.\n\n[![Build, Test, Dockerize, and Deploy to Docker Hub](https://github.com/rblessings/roi-project-planner/actions/workflows/build-test-dockerize-deploy.yml/badge.svg)](https://github.com/rblessings/roi-project-planner/actions/workflows/build-test-dockerize-deploy.yml)\n\n## Table of Contents\n\n- [Features](#features)\n- [Installation](#installation)\n- [API Usage](#api-usage)\n- [Deployment](#deployment)\n- [How To Contribute](#how-to-contribute)\n- [License](#license)\n\n---\n\n## Features\n\n- **Optimized Capital Selection:** Uses greedy algorithms and max-heaps to select projects that maximize final capital.\n- **Reactive \u0026 Asynchronous Processing:** Built on Java 23 and Spring WebFlux for non-blocking, asynchronous operations.\n- **Cloud-Native Design:** Seamlessly deployable to Kubernetes with Docker, supporting horizontal scaling and\n  resilience.\n- **Fault Tolerance:** Integrated with Resilience4J to provide circuit breaker patterns and fallback mechanisms.\n- **Event-Driven Architecture:** Utilizes Apache Kafka for robust, asynchronous event processing.\n- **CI/CD Integration:** Automated builds, tests, and deployments via GitHub Actions.\n- **Extensive Testing:** Comprehensive tests with JUnit 5, AssertJ, Mockito, and Testcontainers for realistic\n  integration testing.\n- **Cache Integration:** Leverages caching (via Redis) to optimize performance for frequently accessed data.\n- **Observability:** Equipped with Prometheus, Grafana, Jaeger, and Argo CD for metrics, monitoring, distributed\n  tracing, and GitOps.\n- **Logging Strategy:** Employs SLF4J with Logback and logstash-logback-encoder to produce structured JSON logs. Logs\n  are collected by Promtail, sent to Loki, and visualized in Grafana for comprehensive observability.\n\n---\n\n## Installation\n\nFollow these steps to set up the **roi-project-planner** project locally.\n\n### Prerequisites\n\nEnsure the following tools are installed:\n\n- [Docker v27.5.1](https://www.docker.com/get-started) (or latest)\n- [Docker Compose v2.32.4](https://www.docker.com/get-started) (or latest)\n- [Java 23](https://docs.aws.amazon.com/corretto/latest/corretto-23-ug/downloads-list.html) (or latest)\n\n### Local Setup with Docker\n\nTo run the project locally using Docker:\n\n1. **Clone the Repository:**\n    ```bash\n    git clone https://github.com/rblessings/roi-project-planner.git\n    cd roi-project-planner\n    ```\n\n2. **Start the Backend (API) Core and Its Dependencies:**\n    ```bash\n    ./gradlew clean bootRun\n    ```\n\n   **Note:** This command automatically runs the `compose.yaml`, offering an alternative to\n   `docker compose up --build -d`. It will start the following services:\n\n    - **Kafka:** Handles event streaming for distributed communication, enabling real-time analytics on Capital\n      Maximization Query events with low-latency, high-throughput processing.\n    - **MongoDB:** Stores project data.\n    - **Redis:** Serves as a caching layer for efficient project lookups.\n\n---\n\n## API Usage\n\n### Projects\n\n1. To **create** one or more projects, send a POST request:\n\n    ```bash\n    curl -X POST http://localhost:8080/apis/v1/projects \\\n         -H \"Content-Type: application/json\" \\\n         -d '[\n               {\n                 \"name\": \"Project 1\",\n                 \"requiredCapital\": 100.00,\n                 \"profit\": 500.00\n               },\n               {\n                 \"name\": \"Project 2\",\n                 \"requiredCapital\": 200.00,\n                 \"profit\": 800.00\n               }\n             ]'\n    ```\n\n---\n\n## Deployment\n\nTo deploy the ROI Project Planner, we use **Terraform** to provision the necessary infrastructure for a Kubernetes\ncluster along with its dependencies, such as a Kafka cluster, MongoDB Replica Set, and Redis. Additionally, Argo CD is\nutilized for GitOps, while Prometheus, Grafana, and Jaeger provide metrics, monitoring, and distributed tracing.\n\n(Coming soon)\n\n---\n\n## How To Contribute\n\nWe welcome contributions from developers of all skill levels! Here’s how you can get started:\n\n1. **Fork the Repository:** Create a personal copy of the repo.\n2. **Explore Issues:** Check the [issue tracker](https://github.com/rblessings/roi-project-planner/issues) for open\n   issues or feature requests.\n3. **Create a Branch:** Work on your feature or bug fix in a separate branch.\n4. **Submit a Pull Request:** Once ready and tests are passing, submit a PR for review.\n\n### Areas to Contribute\n\n- **Feature Development:** Implement new features such as advanced project querying, analytics, or enhanced reporting.\n- **Bug Fixes:** Identify and resolve issues.\n- **Documentation:** Improve or expand the existing documentation.\n- **Testing:** Write unit and integration tests to ensure reliability.\n\n---\n\n## License\n\nThis project is open-source software released under the [MIT License](https://opensource.org/licenses/MIT).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frblessings%2Froi-project-planner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frblessings%2Froi-project-planner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frblessings%2Froi-project-planner/lists"}