Skip to content

CRM system designed for a sample company. It supports enterprise, helps to manage sale process and stores helpful data.

Notifications You must be signed in to change notification settings

chmielewskiM/CRM-system

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

55 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CRM system alt text

RESTful web app

The main purpose of this project was to build a tool which will boost the workflow inside a company by enhancing sale management and providing broader insight into workers' actions. In order to achieve these goals, the app serves various features which are described in the following sections.

API specification


Tech/framework used

Tools:

Packages and other:

  • Automapper
  • IdentityEF
  • Fluent Validation
  • MediatR
  • JWT
  • Swagger
  • xUnit
  • Moq
  • Fluent Assertions
  • create-react-app
  • react-router-dom
  • mobx-react-lite
  • am4Charts ... and more

  • Postman
  • SSMS
  • .Net CLI

Installation

Server (.NET Core)

Requirements:
.NET Core SDK

Execute dotnet restore in root directory.

Then build the project with dotnet build.

Client (React)

Requirements:
Node
npm

Go to client-app folder and execute npm install

-Development env-

Change "ASPNETCORE_ENVIRONMENT" to "Development" in launchSettings.json.
In client-app folder execute npm run-script start-watch .
In API folder exectute dotnet watch run.

-Production env-

In client-app folder execute npm run build (it will create build and move it to the API folder).
Go to the API folder and execute dotnet watch run.
Seeded users

Login: Admin | Manager | Manager-2 | Employee | Employee-2
Password: Qw123!

Screenshots

Click on the screenshot to see Gif.

dashboardcontacts

leads


Features

   * Custom error handling
   * Server-side form validation (Fluent Validation with custom tweaks)
   * Server-side filtering
   * Server-side sorting
   * Server-side pagination
   * Three levels of access: top(admin), mid(manager), low(employee) 

Brief description

Dashboard

Dashboard includes statistics that let user know what is workers' efficiency and how is the company doing at the moment. User may choose between two periods of time: recent 30 days or 6 months. There are 5 charts:

  • sales pipeline - shows the ratio of particular advancement stage towards amount of leads
  • source - a pie chart which shows where leads came from
  • leads - a chart which shows total amount of leads
  • leads/opportunity - a chart which lets user know what is the overall efficiency of converting leads into opportunities
  • leads/opportunities by employee - a chart as above, but categorized by workers, so user can see the efficiency of particular worker

Moreover there are stats of this month (from day 1 of the current month) and a calendar which displays tasks related to user.

Contacts

Contacts section is basically an address book. It includes all CRUD operations. User may add, edit or delete a contact, see contact's details, promote contact to premium member or start a sale process. When sale process is started that way, source of the lead is set to 'Former Client'. The list component is sortable, filterable and paginated. Sortable by header cells, filterable by buttons and search input which sends(on change) request after at least 2 letters are typed in.

Leads

This section allows user to control the whole sale process. Every user has an access only to his leads. There are 4 stages: lead, opportunity, quote, invoice. All CRUD operations are available. Every operation in the chain, from lead to conversion, is tracked and registered. User may send straightforward an email to client, upgrade client's status or downgrade it in case of mistake with auto correction of previous operations which is crucial for proper displaying of stats on dashboard. User may choose anytime whether he wants to terminate whole process and keep data about operations which were done during this process or abandon lead and delete all registered operations which are included in this particular process. At the same time user may choose whether he wants to keep this lead in his address book or delete it entirely. Before upgrading client's status to invoice, there has to be an order assigned to the client. Before converting client the order has to be closed. Before terminating a process there must be no order assigned to the client.

Tasks

The task's list may be filtered by 'my tasks', 'shared by me' or 'shared with me'. Shared tasks have subcategories which filter those tasks by their status. There are 4 states of tasks: 'pending', 'accepted', 'refused', 'done' and all of them are marked with proper icon. Besides all CRUD actions there is also a possibility to share a task. The user whom a task is shared with can see it in 'pending tasks'.

Orders

All CRUD operations are included. There are list, history and detail components available in this section. The list component is sortable and filterable (by 'all', 'sale', 'purchase' buttons or search input). History is paginated and also filterable by the type of transactions. User may add an order only to contacts which he posess in his contacts list. A contact may have only 1 active order assigned. User chooses the type of order, client to assign, product, amount and price. He may optionally include some notes.

Admin panel

Basically admin panel is a form. Admin is able to add, edit or delete users. ASP.NET Core Identity is used for this purpose, users are managed with AspNetUserManager. Editing includes setting new password.


CI/CD

Chosen platform to set up CI/CD is Azure.

Pipeline



About

CRM system designed for a sample company. It supports enterprise, helps to manage sale process and stores helpful data.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published