SWE-7903 Group 2 - PlanIt CRM

Project Overview
Planit CRM is a Customer Relationship Management (CRM) software that helps in managing and tracking projects, tasks, invoices, quotes, leads, customers, transactions and much more. PlanIt CRM allows anyone to manage leads, create invoices, and start collecting payments seamlessly.

Project at a Glance
.png)
Ultimately, the project is about extracting functionality from the original Laravel project into an Angular Frontend and NodeJS authentication instance while adding documentation and automated testing to lay a foundation for later development efforts.
Background
PlanIt CRM's Origins
The system was developed by Driven Software Solutions under the guidance of Shahzib Sarfraz in 2018. Driven Software Solutions employs a team of around fifty developers to maintain several applications including a Dine-N-Go solution and a Robot Integration platform
Shahzib Sarfraz
Founder of Driven Software Solutions
Goals
1. Reimplementing the Frontend in Angular
The original PlanIt CRM was developed with the Laravel framework and PHP, which made it very difficult to integrate new functionalities. Angular is a well-tested framework utilizing Typescript, CSS, and HTML that can be easily extended with its built-in components.
2. Writing Documentation
PlanIt CRM was developed by a single developer who left the company without writing any documentation on the application's architecture or development process. This further complicates maintenance and expansion efforts and requires that we create a full range of documentation for future developers.
3. Adding Authorize.net
PlanIt CRM utilizes a payment processor through Driven Software Solutions, but the client wanted to be able to add 3rd party payment processors via the Authorize.net API, a Visa platform.
4. Automated Testing
The original application had nearly no automated testing, which is less than optimal for ensuring that the site is behaving correctly. As such, we should add additional automated testing in the form of unit and integration testing for Angular components and website function.