The goal of this application is to answer all business needs. To be more exact, this software is motivated by entrepreneurs who deal with service-based businesses. This application will help them boost productivity by funnelling the business into a single software so that they have an easier time having an overview of their business, employees, and clients. In addition, compared to other competitors, this software will be an in house solution. Hence, users of the application will be able to control, customize and maintain based on their needs.
The project will be split into 4 different sections: Admins, business, employees, clients. Each of these sections are able to see information about the sections below them, but not the other way around. For example, businesses can see info about their employees and clients, but the employees and clients can’t see info about the business.
Name | GitHub handle | Student ID |
---|---|---|
Amine Kabene | Aminekabene | 40156333 |
Simon Lim | nasaku898 | 40087893 |
Manraj Rai | Manraj45 | 40084677 |
David Thai | davidthai0387 | 40097613 |
Judy Mezaber | jmezaber | 40102104 |
Kevin Ghannoum | kevin-ghannoum | 40088808 |
Lauren Lim | Mnx458 | 40097885 |
Bowen Song | bowsong | 40092922 |
Samuel Huang | huangs08 | 40098855 |
Technology/Tool | Justification | |
---|---|---|
Development platform | Web | Web applications are accessible to different platforms (mobile, tablet, computer). Indeed, for a business management software, offering a wide range of support is essential for productivity as the company would not have to worry about limiting their device requirement. |
Programming Language | React + Node +Typescript | React: React has resourceful documentation and a big dev community behind it. It provides modular features by breaking down the application into smaller components. It provides state management out of the box. It is fast since it uses a virtual DOM. Therefore, given the complexity of a business management application, using React makes sense for developing a complex UI that contains a lot of data. TypeScript: It allows for a more structured code compared to JavaScript because it follows OOP procedure and is a type language. Consequently, applying good practice and design patterns in our application would help make it more robust. Similarly to React, there is a big dev community. Therefore, there would be a lot of libraries that can help us implement certain features more easily. Node: Node is a fast and lightweight runtime environment. This will allow us to develop faster and more efficiently. In addition, having the same runtime environment for both frontend and backend allows our app to have a uniform language. The reason why we decided to use Node instead of other frameworks such as Spring is because out of the box there isn’t much “bloatware”. Therefore, we can decide on what we want by installing the required dependencies as needed based on the requirement. Consequently, we can optimize our application load and size to increase performance. |
Agile Project management | GitHub Project | It is a free platform and the team has experience working with it. In addition, it has direct integration with the code base (linking PR’s with the user stories, wiki page, and much more) |
Source code management | Git | Git is a commonly used source management tool and is integrated with GitHub. |
Unit testing | Jest + Enzyme | Jest: Jest is well-supported and reports a very fast testing library due to its use of parallel testing. Also, it supports snapshot testing. With Jest we are not required to include additional libraries unless really needed. It includes code coverage Enzyme: Enzyme is used for UI Testing. It is compatible with Jest and is specifically designed to work with React. |
System testing | Cypress | Cypress allows us to test user interaction with the system (e2e) which would verify the validity of user stories. It is easy to install and includes built-in tools that allow automated testing. It takes screenshots and videos that can later be used to analyze the tests. |
UI prototyping | Figma | Figma is a free platform. Community templates can be imported Additionally, the UI prototype can be exported to CSS. Also, user interactions can also be simulated. |
Code quality/Linter | ESlint | ESLint is a commonly used static analysis tool with Typescript It verifies if the code respects the ES standards. It can be customized to use our own lint rules, configurations, and formatters. |
CI | GitHub Actions | Free and integrates easily with the project |
Database | MySQL | Our application has a complex database design. In fact, there will be a lot of entities. Hence, a relational database would be needed for the project since it is structured and supports complex queries. MySQL supports multi-users. It is fast and secure. It is easy to install and has a lot of community support. Also, it is commonly used for web applications. |