{"id":28307717,"url":"https://github.com/gabrielmedrados/project-system-management","last_synced_at":"2026-01-26T21:13:01.466Z","repository":{"id":300238561,"uuid":"990274598","full_name":"GabrielMedradoS/Project-System-Management","owner":"GabrielMedradoS","description":"🎯Project aims to create a simple project management system within Salesforce","archived":false,"fork":false,"pushed_at":"2025-05-29T17:39:43.000Z","size":1334,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-06-20T15:45:36.831Z","etag":null,"topics":["apex","apex-triggers","lightning","salesforce","validation-rules"],"latest_commit_sha":null,"homepage":"","language":"Apex","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/GabrielMedradoS.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,"zenodo":null}},"created_at":"2025-05-25T21:08:17.000Z","updated_at":"2025-05-29T17:39:46.000Z","dependencies_parsed_at":"2025-06-20T15:45:39.853Z","dependency_job_id":"bd26edb4-17cd-42d7-a381-87e971cf842c","html_url":"https://github.com/GabrielMedradoS/Project-System-Management","commit_stats":null,"previous_names":["gabrielmedrados/project-system-management"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/GabrielMedradoS/Project-System-Management","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GabrielMedradoS%2FProject-System-Management","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GabrielMedradoS%2FProject-System-Management/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GabrielMedradoS%2FProject-System-Management/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GabrielMedradoS%2FProject-System-Management/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GabrielMedradoS","download_url":"https://codeload.github.com/GabrielMedradoS/Project-System-Management/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GabrielMedradoS%2FProject-System-Management/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28788315,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-26T21:02:48.137Z","status":"ssl_error","status_checked_at":"2026-01-26T21:01:13.039Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["apex","apex-triggers","lightning","salesforce","validation-rules"],"created_at":"2025-05-24T06:17:29.653Z","updated_at":"2026-01-26T21:13:01.454Z","avatar_url":"https://github.com/GabrielMedradoS.png","language":"Apex","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Project System Management\n\n\u003cp align='center'\u003e\n\u003cb height=\"50%\" width=\"50%\"\u003e\u003c/b\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003cimg alt=\"Platform\" src=\"https://img.shields.io/static/v1?label=Platform\u0026message=Salesforce\u0026color=0369a1\u0026labelColor=f0f9ff\"\u003e\n    \u003cimg alt=\"project name\" src=\"https://img.shields.io/badge/Project-Management-0369a1?\u0026labelColor=f0f9ff\"\u003e\u003c/img\u003e    \n    \u003cimg alt=\"Repository size\" src=\"https://img.shields.io/github/repo-size/GabrielMedradoS/Project-System-Management?color=0369a1\u0026labelColor=f0f9ff\"\u003e\n    \u003cimg alt=\"GitHub Last Commit\" src=\"https://img.shields.io/github/last-commit/gabrielmedrados/Project-System-Management?\u0026color=0369a1\u0026labelColor=f0f9ff\"\u003e    \n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"#-Objectives\"\u003eObjectives\u003c/a\u003e \u0026nbsp;\u0026nbsp;\u0026nbsp;|\u0026nbsp;\u0026nbsp;\u0026nbsp;\n    \u003ca href=\"#-features\"\u003eFeatures\u003c/a\u003e \u0026nbsp;\u0026nbsp;\u0026nbsp;|\u0026nbsp;\u0026nbsp;\u0026nbsp;\n    \u003ca href=\"#-Demonstration\"\u003eDemonstration\u003c/a\u003e \u0026nbsp;\u0026nbsp;\u0026nbsp;|\u0026nbsp;\u0026nbsp;\u0026nbsp;\n    \u003ca href=\"#-Documentation\"\u003eDocumentation\u003c/a\u003e \u0026nbsp;\u0026nbsp;\u0026nbsp;|\u0026nbsp;\u0026nbsp;\u0026nbsp;\n    \u003ca href=\"#-autor\"\u003eAuthor\u003c/a\u003e \n\u003c/p\u003e\n\n## 📷 Layout\n\n#### Screenshot:\n\n\u003cdiv align='center'\u003e\n\u003cimg src=\".github/github image.png\"/\u003e\n\u003c/div\u003e\n\n## 🎯 Objectives\n\n\u003cdiv align=\"justify\"\u003e\n    (Project System Management) \u003cbr\u003e\n    This project aims to create a simple project management system within Salesforce, leveraging standard platform features such as standard objects (Task) and Lightning Web Components (LWC), and extending the functionality with custom objects such as Projects__c and Milestones__c. The system allows you to track the lifecycle of a project, its milestones, and the tasks (to-dos) associated with each stage.\n\u003c/div\u003e\n\n## ✨ Features\n\n- [x] 1. Automatic calculation of the % completion of Milestones based on tasks.\n- [x] 2. Automatic calculation of the % completion of Projects based on Milestones.\n- [x] 3. Automatic status control: “Not Started”, “In Progress” or “Completed.\n- [x] 4. Restriction with Validation Rules so that regular users cannot manually change the status of projects and milestones.\n\n## 💻 Demonstration:\n\nhttps://github.com/user-attachments/assets/7a760502-bdc8-4311-8f6e-4e9f1efbd26f\n\n## 🚴🏻‍♂️ Run the project\n\nTo download the project's source code to your machine, you will first need to have [**Git**](https://git-scm.com/).\nWith Git installed, run the following command in your terminal:\n\n```bash\ngit clone https://github.com/GabrielMedradoS/Project-System-Management.git\n```\n\nTo install the dependencies and run the project you will need to have [**node.js**](https://nodejs.org/en/), installed on your machine, which comes with npm.\n\nInstall dependencies with **npm**:\n\n```bash\n# npm\nnpm install\n```\n\nExecute the project:\n\nLog in a Org Salesforce, enter in the project management app.\nCreate your first project 🚀\n\n## 📜 Documentation\n\nThe main App is Project Management, there you will see all related tabs to make your first project.\n\nYou will see a full documentation under [documents | Salesforce]() provided in email for more details.\n\n#### 👇 Click to view Project Dependencies\n\n\u003cdetails\u003e\n  \u003csummary\u003ePackage XML\u003c/summary\u003e\n  \n```bash\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\" ?\u003e\n\u003cPackage xmlns=\"http://soap.sforce.com/2006/04/metadata\"\u003e\n\t\u003ctypes\u003e\n\t\t\u003cmembers\u003eMilestones__c.Validation_Rule_Change_Status\u003c/members\u003e\n\t\t\u003cmembers\u003eProjects__c.Validation_Rule_Change_Status\u003c/members\u003e\n\t\t\u003cname\u003eValidationRule\u003c/name\u003e\n\t\u003c/types\u003e\n\t\u003ctypes\u003e\n\t\t\u003cmembers\u003eMilestoneTrigger\u003c/members\u003e\n\t\t\u003cmembers\u003eTaskTrigger\u003c/members\u003e\n\t\t\u003cname\u003eApexTrigger\u003c/name\u003e\n\t\u003c/types\u003e\n\t\u003ctypes\u003e\n\t\t\u003cmembers\u003eTaskTriggerHandler\u003c/members\u003e\n\t\t\u003cmembers\u003eTaskController\u003c/members\u003e\n\t\t\u003cmembers\u003eTaskControllerTest\u003c/members\u003e\n\t\t\u003cmembers\u003eMilestoneController\u003c/members\u003e\n\t\t\u003cmembers\u003eMilestoneControllerTest\u003c/members\u003e\n\t\t\u003cmembers\u003eMilestoneTriggerHandler\u003c/members\u003e\n\t\t\u003cmembers\u003eMilestoneWrapper\u003c/members\u003e\n\t\t\u003cmembers\u003eProjectController\u003c/members\u003e\n\t\t\u003cmembers\u003eProjectMilestoneTaskProcessor\u003c/members\u003e\n\t\t\u003cmembers\u003eProjectMilestoneTaskProcessorTest\u003c/members\u003e\n\t\t\u003cmembers\u003eProjectWrapper\u003c/members\u003e\n\t\t\u003cmembers\u003eTaskWrapper\u003c/members\u003e\n\t\t\u003cname\u003eApexClass\u003c/name\u003e\n\t\u003c/types\u003e\n\t\u003ctypes\u003e\n\t\t\u003cmembers\u003eMilestones__c.Milestone_Compact_Layout\u003c/members\u003e\n\t\t\u003cmembers\u003eProjects__c.Project_Compact_Layout\u003c/members\u003e\n\t\t\u003cname\u003eCompactLayout\u003c/name\u003e\n\t\u003c/types\u003e\n\t\u003ctypes\u003e\n\t\t\u003cmembers\u003eimage_branding\u003c/members\u003e\n\t\t\u003cname\u003eContentAsset\u003c/name\u003e\n\t\u003c/types\u003e\n\t\u003ctypes\u003e\n\t\t\u003cmembers\u003eProject_Management\u003c/members\u003e\n\t\t\u003cname\u003eCustomApplication\u003c/name\u003e\n\t\u003c/types\u003e\n\t\u003ctypes\u003e\n\t\t\u003cmembers\u003eActivity\u003c/members\u003e\n\t\t\u003cmembers\u003eMilestones__c\u003c/members\u003e\n\t\t\u003cmembers\u003eProjects__c\u003c/members\u003e\n\t\t\u003cmembers\u003eTask\u003c/members\u003e\n\t\t\u003cname\u003eCustomObject\u003c/name\u003e\n\t\u003c/types\u003e\n\t\u003ctypes\u003e\n\t\t\u003cmembers\u003eMilestones__c\u003c/members\u003e\n\t\t\u003cmembers\u003eProjects__c\u003c/members\u003e\n\t\t\u003cname\u003eCustomTab\u003c/name\u003e\n\t\u003c/types\u003e\n\t\u003ctypes\u003e\n\t\t\u003cmembers\u003eMilestone_Record_Page\u003c/members\u003e\n\t\t\u003cmembers\u003eProject_Management_UtilityBar\u003c/members\u003e\n\t\t\u003cmembers\u003eProject_Record_Page\u003c/members\u003e\n\t\t\u003cmembers\u003eTask_Record_Page\u003c/members\u003e\n\t\t\u003cmembers\u003eProject_Home_Page\u003c/members\u003e\n\t\t\u003cname\u003eFlexiPage\u003c/name\u003e\n\t\u003c/types\u003e\n\t\u003ctypes\u003e\n\t\t\u003cmembers\u003eGlobalStatusValue\u003c/members\u003e\n\t\t\u003cname\u003eGlobalValueSet\u003c/name\u003e\n\t\u003c/types\u003e\n\t\u003ctypes\u003e\n\t\t\u003cmembers\u003eMilestones__c-Milestone Layout\u003c/members\u003e\n\t\t\u003cmembers\u003eProjects__c-Project Layout\u003c/members\u003e\n\t\t\u003cmembers\u003eTask-Project Task Layout\u003c/members\u003e\n\t\t\u003cname\u003eLayout\u003c/name\u003e\n\t\u003c/types\u003e\n\t\u003ctypes\u003e\n\t\t\u003cmembers\u003eapprovalManagementForm\u003c/members\u003e\n\t\t\u003cmembers\u003emilestoneManagmentForm\u003c/members\u003e\n\t\t\u003cmembers\u003eprogressBar\u003c/members\u003e\n\t\t\u003cmembers\u003eprojectOverview\u003c/members\u003e\n\t\t\u003cmembers\u003eprojectManagementForm\u003c/members\u003e\n\t\t\u003cmembers\u003etasksManagementForm\u003c/members\u003e\n\t\t\u003cname\u003eLightningComponentBundle\u003c/name\u003e\n\t\u003c/types\u003e\n\t\u003ctypes\u003e\n\t\t\u003cmembers\u003eProjects__c.All\u003c/members\u003e\n\t\t\u003cmembers\u003eProjects__c.Completed_Projects\u003c/members\u003e\n\t\t\u003cmembers\u003eProjects__c.New_Projects\u003c/members\u003e\n\t\t\u003cmembers\u003eProjects__c.On_going_Projects\u003c/members\u003e\n\t\t\u003cname\u003eListView\u003c/name\u003e\n\t\u003c/types\u003e\n\t\u003ctypes\u003e\n\t\t\u003cmembers\u003eMilestone_Status_Path\u003c/members\u003e\n\t\t\u003cmembers\u003eProject_Status_Path\u003c/members\u003e\n\t\t\u003cname\u003ePathAssistant\u003c/name\u003e\n\t\u003c/types\u003e\n\t\u003cversion\u003e63.0\u003c/version\u003e\n\u003c/Package\u003e\n\n````\n\n\u003c/details\u003e\n\n\n\u003cdetails\u003e\n    \u003csummary\u003eDependencies\u003c/summary\u003e\n\n```json\n{\n  \"name\": \"salesforce-app\",\n  \"private\": true,\n  \"version\": \"1.0.0\",\n  \"description\": \"Project System Management\",\n  \"scripts\": {\n    \"lint\": \"eslint **/{aura,lwc}/**/*.js\",\n    \"test\": \"npm run test:unit\",\n    \"test:unit\": \"sfdx-lwc-jest\",\n    \"test:unit:watch\": \"sfdx-lwc-jest --watch\",\n    \"test:unit:debug\": \"sfdx-lwc-jest --debug\",\n    \"test:unit:coverage\": \"sfdx-lwc-jest --coverage\",\n    \"prettier\": \"prettier --write \\\"**/*.{cls,cmp,component,css,html,js,json,md,page,trigger,xml,yaml,yml}\\\"\",\n    \"prettier:verify\": \"prettier --check \\\"**/*.{cls,cmp,component,css,html,js,json,md,page,trigger,xml,yaml,yml}\\\"\",\n    \"postinstall\": \"husky init\",\n    \"precommit\": \"lint-staged\",\n    \"prepare\": \"husky\"\n  },\n  \"devDependencies\": {\n    \"@lwc/eslint-plugin-lwc\": \"^2.2.0\",\n    \"@lwc/engine-dom\": \"^8.18.0\",\n    \"@lwc/jest-preset\": \"^19.1.0\",\n    \"@prettier/plugin-xml\": \"^3.4.1\",\n    \"@salesforce/eslint-config-lwc\": \"^3.7.2\",\n    \"@salesforce/eslint-plugin-aura\": \"^2.1.0\",\n    \"@salesforce/eslint-plugin-lightning\": \"^1.0.0\",\n    \"@salesforce/sfdx-lwc-jest\": \"^7.0.1\",\n    \"eslint\": \"^8.57.0\",\n    \"eslint-plugin-import\": \"^2.31.0\",\n    \"eslint-plugin-jest\": \"^28.11.0\",\n    \"husky\": \"^9.1.7\",\n    \"jest\": \"^29.7.0\",\n    \"lint-staged\": \"^15.5.1\",\n    \"prettier\": \"^3.5.3\",\n    \"prettier-plugin-apex\": \"^2.2.6\"\n  },\n  \"lint-staged\": {\n    \"**/*.{cls,cmp,component,css,html,js,json,md,page,trigger,xml,yaml,yml}\": [\n      \"prettier --write\"\n    ],\n    \"**/{aura,lwc}/**/*.js\": [\"eslint\"]\n  }\n}\n````\n\n\u003c/details\u003e\n\n- [Salesforce | documentation](https://developer.salesforce.com/docs)\n- [Trailhead | documentation](https://trailhead.salesforce.com/pt-BR/today)\n\n## 💡 Como contribuir\n\n- Faça um **_fork_** desse repositório;\n- Crie um **branch** para a sua feature: `git checkout -b minha-feature`;\n- Faça um **commit** com suas alterações: `git commit -m 'feat: Minha nova feature'`;\n- Faça um **push** para o seu branch: `git push origin minha-feature`;\n- Faça um **pull request** com sua feature;\n\nPull requests são sempre bem-vindos. Em caso de dúvidas ou sugestões, crie uma _**issue**_ ou entre em contato comigo.\n\n## ✍🏾 Autor\n\n| \u003ca href=\"https://github.com/gabrielmedrados/\"\u003e\u003cimg src=\"https://user-images.githubusercontent.com/73303001/126536001-655e3cbd-facd-4de1-992f-b8d9d3656ace.jpg\" width=\"100\" alt=\"perfil\"/\u003e\u003cbr\u003e\n| :-------------------------: |\n| \u003ca href=\"https://github.com/gabrielmedrados/\"\u003e Gabriel Medrado |\u003c/a\u003e |\n\n[![Linkedin Badge](https://img.shields.io/badge/-GabrielMedrado-blue?style=flat-square\u0026logo=Linkedin\u0026logoColor=white)](https://www.linkedin.com/in/gabriel-medrado-de-souza-9a30b3206/)\n[![Gmail Badge](https://img.shields.io/badge/-gabriel.medradoo@hotmail.com-1769ff?style=flat-square\u0026logo=Gmail\u0026logoColor=white)](mailto:gabriel.medradoo@hotmail.com)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgabrielmedrados%2Fproject-system-management","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgabrielmedrados%2Fproject-system-management","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgabrielmedrados%2Fproject-system-management/lists"}