972C8 / acrm-webapp

This is a minimal CRM Web App (A-CRM - Insurance Agency CRM) as a template for students.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

A-CRM Web App

This is a minimal CRM Web App (A-CRM - Insurance Agency CRM) as a template for students.

License Deploy to Heroku

🚧 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.

Contents:

Analysis

Scenario

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.

User Stories

  1. 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.
  2. As an insurance agent, I want to see a consistent visual appearance so that I can navigate easily, and it looks consistent.
  3. As an insurance agent, I want to use list views so that I can explore and read my business data.
  4. As an insurance agent, I want to use edit and create views so that I can maintain my business data.
  5. As an insurance agent, I want to create an account so that I can get access to the Web app.
  6. As an insurance agent, I want to log-in so that I can authenticate myself.
  7. As an insurance agent, I want to edit my profile so that my data is stored securely.

Use Case

  • 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).

Design

Prototype Design

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.

Domain Design

The ch.fhnw.acrm.data.domain package contains the following domain objects / entities including getters and setters:

Business Logic Design

The ch.fhnw.acrm.business.service package contains classes of the following business services:

Endpoint Design

Path: /api/customer

Method: POST

Sample RequestHeader: Content-Type: application/jsonBody:

{
  "agent": {
    "customers": [
      null
    ],
    "email": "string",
    "id": 0,
    "name": "string",
    "password": "string",
    "remember": "string"
  },
  "email": "string",
  "id": 0,
  "mobile": "string",
  "name": "string"
}

Optional: ...

Success ResponseCode: 200 OKSample Body:

{
  "agent": {
    "customers": [
      null
    ],
    "email": "string",
    "id": 0,
    "name": "string",
    "password": "string",
    "remember": "string"
  },
  "email": "string",
  "id": 0,
  "mobile": "string",
  "name": "string"
}

Error ResponseCode: 404 NOT FOUND

Implementation

Backend Technology

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>

Frontend Technology

This Web application is relying on the following frontend technology/libraries:

  • jQuery
  • Bootstrap

Deployment

This spring boot has been deployed to Heroku by using a pre-configuration scripts app.json and Procfile.

User Guide

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/.

Project Management

Roles

Milestones

  1. Analysis: Scenario ideation, use case analysis and user story writing.
  2. Prototype Design: Creation of Bootstrap static web-design prototype.
  3. Domain Design: Definition of domain model.
  4. Business Logic and API Design: Definition of business logic and API.
  5. Data and API Implementation: Implementation of data access and business logic layers, and API.
  6. Security and Frontend Implementation: Integration of security framework and frontend realisation.
  7. Deployment: Deployment of Web application on cloud infrastructure.

Maintainer

License

About

This is a minimal CRM Web App (A-CRM - Insurance Agency CRM) as a template for students.

License:Apache License 2.0


Languages

Language:Java 51.7%Language:HTML 34.5%Language:JavaScript 7.1%Language:CSS 6.6%Language:Procfile 0.1%