{"id":23029262,"url":"https://github.com/codewizard-404/soa-esb-project-management","last_synced_at":"2025-09-03T09:38:24.872Z","repository":{"id":265908480,"uuid":"896780965","full_name":"CodeWizard-404/SOA-ESB-Project-Management","owner":"CodeWizard-404","description":"A project management tool utilizing Service-Oriented Architecture (SOA) principles and an Enterprise Service Bus (ESB).","archived":false,"fork":false,"pushed_at":"2024-12-07T16:51:57.000Z","size":46696,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-08T11:12:09.088Z","etag":null,"topics":["anypoint","esb","rest-api","soa","soap"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CodeWizard-404.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2024-12-01T09:41:01.000Z","updated_at":"2024-12-07T16:52:01.000Z","dependencies_parsed_at":"2025-02-08T11:22:52.563Z","dependency_job_id":null,"html_url":"https://github.com/CodeWizard-404/SOA-ESB-Project-Management","commit_stats":null,"previous_names":["codewizard-404/soa-esb-project-management"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodeWizard-404%2FSOA-ESB-Project-Management","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodeWizard-404%2FSOA-ESB-Project-Management/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodeWizard-404%2FSOA-ESB-Project-Management/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodeWizard-404%2FSOA-ESB-Project-Management/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CodeWizard-404","download_url":"https://codeload.github.com/CodeWizard-404/SOA-ESB-Project-Management/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246886089,"owners_count":20849823,"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":["anypoint","esb","rest-api","soa","soap"],"created_at":"2024-12-15T14:14:42.275Z","updated_at":"2025-04-02T20:25:05.502Z","avatar_url":"https://github.com/CodeWizard-404.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n\n# SOA-ESB Project Management System\n\n\n![soa](SOA.webp)\n\n## Table of Contents\n- [SOA-ESB Project Management System](#soa-esb-project-management-system)\n  - [Table of Contents](#table-of-contents)\n  - [Project Overview](#project-overview)\n  - [Technologies Used](#technologies-used)\n  - [API Services](#api-services)\n    - [1. Project Management (REST API)](#1-project-management-rest-api)\n    - [2. Assign Member to Team (SOAP API)](#2-assign-member-to-team-soap-api)\n    - [3. Assign Team to Project (REST API)](#3-assign-team-to-project-rest-api)\n    - [4. Calendar Management (REST API)](#4-calendar-management-rest-api)\n    - [5. Feedback Management (REST API)](#5-feedback-management-rest-api)\n  - [Database Setup](#database-setup)\n  - [Installation and Setup](#installation-and-setup)\n  - [Enterprise Service Bus (ESB) Integration](#enterprise-service-bus-esb-integration)\n  - [API Documentation](#api-documentation)\n  - [Project Flow and Design](#project-flow-and-design)\n  - [Feedback](#feedback)\n\n---\n\n## Project Overview\n\nWelcome to the **SOA-ESB Project Management System**! This project is designed to manage tasks, team members, calendars, and project reports. The system leverages a combination of **REST** and **SOAP** APIs and integrates them into a seamless flow using an **Enterprise Service Bus (ESB)**.\n\nThis system manages key project elements:\n\n- **Project management**: Allows tracking of project progress.\n- **Team management**: Assign team members to specific tasks.\n- **Calendar management**: Keep track of important dates and milestones.\n- **Feedback collection**: Gather feedback from members regarding the project.\n\nThis project includes five core web services:\n\n1. **Project Management** - Using **REST API** with **Spring Boot**.\n2. **Team Assignment** - Using **SOAP API** with **C#**.\n3. **Team-Project Assignment** - Using **REST API** with **Node.js**.\n4. **Calendar Management** - Using **REST API** with **PHP**.\n5. **Feedback Management** - Using **REST API** with **Node.js**.\n\n---\n\n## Technologies Used\n\nThis project uses a variety of **programming languages** and **frameworks** to provide a comprehensive learning experience:\n\n- **Java (Spring Boot)** for REST API development.\n- **C#** for SOAP-based services.\n- **Node.js** for REST API services.\n- **PHP** for calendar management services.\n- **MySQL** for database management.\n- **Anypoint Platform** for integrating services via **ESB**.\n\n---\n\n## API Services\n\n### 1. Project Management (REST API)\nThis service allows you to retrieve and manage projects.\n\n- **GET** `/projects` - Get all projects.\n- **GET** `/projects/{id}` - Get a specific project by ID.\n\n### 2. Assign Member to Team (SOAP API)\nThis service allows you to assign a member to a specific team.\n\n- **POST** Request (SOAP)\n    - Endpoint: `http://localhost:56446/Service.svc?singleWsdl`\n    - XML Request:\n\n```xml\n\u003csoapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:tem=\"http://tempuri.org/\"\u003e\n   \u003csoapenv:Header/\u003e\n   \u003csoapenv:Body\u003e\n      \u003ctem:AssignMemberToTeam\u003e\n         \u003ctem:memberId\u003eid\u003c/tem:memberId\u003e\n         \u003ctem:teamId\u003eid\u003c/tem:teamId\u003e\n      \u003c/tem:AssignMemberToTeam\u003e\n   \u003c/soapenv:Body\u003e\n\u003c/soapenv:Envelope\u003e\n```\n\n### 3. Assign Team to Project (REST API)\nThis service allows you to assign a team to a project.\n\n- **GET** `/teams` - Get all teams.\n- **POST** `/assignTeam` - Assign a team to a project.\n    - Request Body:\n\n```json\n{\n    \"teamId\": id,\n    \"projectId\": id\n}\n```\n\n### 4. Calendar Management (REST API)\nThis service allows you to manage the project's calendar.\n\n- **GET** `/calendar` - Get all calendar events.\n- **POST** `/calendar` - Add a new calendar event.\n    - Request Body:\n\n```json\n{\n    \"name\": \"Project Kickoff\",\n    \"description\": \"Initial meeting to discuss project scope\",\n    \"start_date\": \"2024-12-01T10:00:00\",\n    \"end_date\": \"2024-12-01T12:00:00\",\n    \"project_id\": 1\n}\n```\n\n### 5. Feedback Management (REST API)\nThis service allows collecting feedback from team members.\n\n- **POST** `/api/feedback/add` - Add feedback for a project.\n    - Request Body:\n\n```json\n{\n  \"description\": \"Great progress on the project.\",\n  \"member_id\": id,\n  \"project_id\": id\n}\n```\n\n---\n\n## Database Setup\n\nTo set up the database for your project, you need to run the following SQL commands:\n\n```sql\n-- Create the database\nCREATE DATABASE IF NOT EXISTS projectmanagement;\nUSE projectmanagement;\n\n-- Create the 'project' table\nCREATE TABLE `project` (\n  `id` bigint(20) NOT NULL AUTO_INCREMENT,\n  `description` varchar(255) DEFAULT NULL,\n  `name` varchar(255) DEFAULT NULL,\n  `status` varchar(255) DEFAULT NULL,\n  PRIMARY KEY (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;\n\n\n\n-- Create the 'team' table\nCREATE TABLE `team` (\n  `Id` int(11) NOT NULL AUTO_INCREMENT,\n  `Name` varchar(50) NOT NULL,\n  PRIMARY KEY (`Id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;\n\n-- Create the 'member' table\nCREATE TABLE `member` (\n  `Id` int(11) NOT NULL AUTO_INCREMENT,\n  `Name` varchar(50) NOT NULL,\n  `TeamId` int(11) DEFAULT NULL,\n  PRIMARY KEY (`Id`),\n  KEY `TeamId` (`TeamId`),\n  CONSTRAINT `member_ibfk_1` FOREIGN KEY (`TeamId`) REFERENCES `team` (`Id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;\n\n\n-- Create the 'projectteam' table\nCREATE TABLE `projectteam` (\n  `ProjectId` bigint(20) NOT NULL,\n  `TeamId` int(11) NOT NULL,\n  PRIMARY KEY (`ProjectId`, `TeamId`),\n  KEY `TeamId` (`TeamId`),\n  CONSTRAINT `projectteam_ibfk_1` FOREIGN KEY (`ProjectId`) REFERENCES `project` (`id`),\n  CONSTRAINT `projectteam_ibfk_2` FOREIGN KEY (`TeamId`) REFERENCES `team` (`Id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;\n\n\n-- Create the 'calendar' table\nCREATE TABLE `calendar` (\n  `id` bigint(20) NOT NULL AUTO_INCREMENT,\n  `name` varchar(255) NOT NULL,\n  `description` text DEFAULT NULL,\n  `start_date` datetime NOT NULL,\n  `end_date` datetime NOT NULL,\n  `project_id` bigint(20) DEFAULT NULL,\n  PRIMARY KEY (`id`),\n  KEY `project_id` (`project_id`),\n  CONSTRAINT `calendar_ibfk_1` FOREIGN KEY (`project_id`) REFERENCES `project` (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;\n\n-- Create the 'feedback' table\nCREATE TABLE feedback (\n  id BIGINT(20) NOT NULL AUTO_INCREMENT,\n  description TEXT NOT NULL,\n  timestamp DATETIME DEFAULT CURRENT_TIMESTAMP,\n  member_id INT(11) NOT NULL,\n  project_id BIGINT(20) NOT NULL,\n  PRIMARY KEY (id),\n  FOREIGN KEY (member_id) REFERENCES member(Id),\n  FOREIGN KEY (project_id) REFERENCES project(id)\n);\n\n```\n\nAfter creating the tables, manually populate the database as shown in the project SQL setup.\n\n---\n\n## Installation and Setup\n\n1. **Clone the repository**:\n   ```bash\n   git clone https://github.com/CodeWizard-404/SOA-ESB-Project-Management.git\n   cd SOA-ESB-Project-Management\n   ```\n\n2. **Set up the database**:\n   Run the SQL queries to create and populate the database as shown in the [Database Setup](#database-setup).\n\n3. **Start the services**:\n   - **Spring Boot**: Run the Spring Boot application for the RESTful Project Management API.\n   - **C# SOAP API**: Set up and start the SOAP API service using C#.\n   - **Node.js**: Start the Node.js API for Team-Project Assignment and Feedback.\n   - **PHP**: Start the PHP server for calendar management.\n\n4. **Test the APIs** using Postman or curl.\n\n---\n\n## Enterprise Service Bus (ESB) Integration\n\nThis project integrates all services through **Anypoint Platform**. The flow connects the five APIs, allowing them to interact seamlessly. Once the APIs are started independently, Anypoint ESB binds them together, ensuring smooth data flow across all services.\n\n---\n\n## API Documentation\n\nThe full API documentation is available in this section, detailing each endpoint, HTTP methods, and request/response formats.\n\n---\n\n## Project Flow and Design\n\nBelow is a simple diagram illustrating the flow of the services:\n\n1. **Service Interaction**: The REST and SOAP APIs are linked by the ESB.\n2. **Service Call Flow**: The project services communicate through API calls, where data is passed from one service to another seamlessly.\n\n\n---\n\n## Feedback\n\nIf you have any feedback or suggestions, feel free to open an issue or contribute to the project. Your feedback will help improve the system!\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodewizard-404%2Fsoa-esb-project-management","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodewizard-404%2Fsoa-esb-project-management","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodewizard-404%2Fsoa-esb-project-management/lists"}