This is a minimal CRM Web App (A-CRM - Insurance Agency CRM) as a template for students.
🚧 This is a template project: Make sure that you adapt this documentation and the source code in this project according to your needs and use case.
A-CRM (Agency Customer-Relationship-Management) is the smallest possible and lightweight demonstration tool that allows agents to manage their customer data. Agents have an own access to their customer data.
- As an insurance agent, I want to have a Web app so that I can use it on different mobile devices and on desktop computers.
- As an insurance agent, I want to see a consistent visual appearance so that I can navigate easily, and it looks consistent.
- As an insurance agent, I want to use list views so that I can explore and read my business data.
- As an insurance agent, I want to use edit and create views so that I can maintain my business data.
- As an insurance agent, I want to create an account so that I can get access to the Web app.
- As an insurance agent, I want to log-in so that I can authenticate myself.
- As an insurance agent, I want to edit my profile so that my data is stored securely.
- UC-1 [Login on A-CRM]: Agents can log-in by entering an email address and password. As an extension, new agents my register first.
- UC-2 [Register on A-CRM]: Agents can register to get an account (profile) to access the A-CRM system.
- UC-3 [Edit a customer]: Agents can create, update and delete customers.
- UC-4 [Show a customer list]: Agents can get an overview over their customers based on a customer list. As an extension they can create, update and delete customers (UC-3).
A bootstrap based static prototype has been created by using a prototyping application.
In this case, the prototype application Bootstrap Studio has been used to create a basic user interface design based on an HTML grid, Bootstrap CSS and JavaScript, including the selection of web fonts and font-based icons.
The assets (HTML, CSS, JavaScript, image and font files) has been exported and will be extended in the later during implementation with jQuery, to build a dynamic website.
The ch.fhnw.acrm.data.domain
package contains the following domain objects / entities including getters and setters:
The ch.fhnw.acrm.business.service
package contains classes of the following business services:
Path: /api/customer
Method: POST
Sample Request • Header: Content-Type: application/json
• Body:
{
"agent": {
"customers": [
null
],
"email": "string",
"id": 0,
"name": "string",
"password": "string",
"remember": "string"
},
"email": "string",
"id": 0,
"mobile": "string",
"name": "string"
}
• Optional: ...
Success Response • Code: 200 OK
• Sample Body:
{
"agent": {
"customers": [
null
],
"email": "string",
"id": 0,
"name": "string",
"password": "string",
"remember": "string"
},
"email": "string",
"id": 0,
"mobile": "string",
"name": "string"
}
Error Response • Code: 404 NOT FOUND
This Web application is relying on Spring Boot and the following dependencies:
To bootstrap the application, the Spring Initializr has been used.
Then the following further dependencies has been added to the project pom.xml
:
- Swagger and Swagger UI:
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
- Java HTML Parser and JWT:
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.14.2</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-api</artifactId>
<version>0.11.2</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-impl</artifactId>
<version>0.11.2</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-gson</artifactId>
<version>0.11.2</version>
<scope>runtime</scope>
</dependency>
This Web application is relying on the following frontend technology/libraries:
- jQuery
- Bootstrap
This spring boot has been deployed to Heroku by using a pre-configuration scripts app.json
and Procfile
.
The Web application can be accessed over the browser by using the following address: https://***.herokuapp.com/
. And the Swagger-UI can be access using the specific page: https://***.herokuapp.com/swagger-ui/
.
- All-rounder 😉: Andreas Martin
- Analysis: Scenario ideation, use case analysis and user story writing.
- Prototype Design: Creation of Bootstrap static web-design prototype.
- Domain Design: Definition of domain model.
- Business Logic and API Design: Definition of business logic and API.
- Data and API Implementation: Implementation of data access and business logic layers, and API.
- Security and Frontend Implementation: Integration of security framework and frontend realisation.
- Deployment: Deployment of Web application on cloud infrastructure.