django-steamcleancrm 0.3
An intuitive client relationship management tool for small businesses in the service industry
License: MIT
Requires Python: >=3.8

<div id="top"></div>
<!--
*** Thanks for checking out the Best-README-Template. If you have a suggestion
*** that would make this better, please fork the repo and create a pull request
*** or simply open an issue with the tag "enhancement".
*** Don't forget to give the project a star!
*** Thanks again! Now go create something AMAZING! :D
-->



<!-- PROJECT SHIELDS -->
<!--
*** I'm using markdown "reference style" links for readability.
*** Reference links are enclosed in brackets [ ] instead of parentheses ( ).
*** See the bottom of this document for the declaration of the reference variables
*** for contributors-url, forks-url, etc. This is an optional, concise syntax you may use.
*** https://www.markdownguide.org/basic-syntax/#reference-style-links
-->
[![Contributors][contributors-shield]][contributors-url]
[![Forks][forks-shield]][forks-url]
[![Stargazers][stars-shield]][stars-url]
[![Issues][issues-shield]][issues-url]
[![MIT License][license-shield]][license-url]
[![LinkedIn][linkedin-shield]][linkedin-url]


<h1 align="center">Steam Clean CRM</h1>

  <p align="center">
    An intuitive client relationship management tool for small businesses in the service industry
    <br />
    <a href="https://github.com/JohnGWebDev/steamcleaning/issues">Report a Bug</a>
    ·
    <a href="https://github.com/JohnGWebDev/steamcleaning/issues">Request a Feature</a>
  </p>
</div>



<!-- TABLE OF CONTENTS -->
<details>
  <summary>Table of Contents</summary>
  <ol>
    <li>
      <a href="#about-the-project">About The Project</a>
      <ul>
        <li><a href="#built-with">Built With</a></li>
      </ul>
    </li>
    <li>
      <a href="#getting-started">Getting Started</a>
      <ul>
        <li><a href="#prerequisites">Prerequisites</a></li>
        <li><a href="#install-using-pip">Install Using Pip</a></li>
        <li><a href="#cloning-the-github-repo">Cloning the Github Repo</a></li>
      </ul>
    </li>
    <li><a href="#usage">Usage</a></li>
       <ul>
         <li><a href="#data-pipeline">Data Pipeline</a></li>
       </ul>
    <li><a href="#roadmap">Roadmap</a></li>
    <li><a href="#contributing">Contributing</a></li>
    <li><a href="#license">License</a></li>
    <li><a href="#contact">Contact</a></li>
    <li><a href="#acknowledgments">Acknowledgments</a></li>
  </ol>
</details>
<br />



<!-- ABOUT THE PROJECT -->
## About The Project


Keep track of leads, staff, work orders, and a gallery of images for each work order

* Leads hold client contact information and can have any number of associated work orders
* Work orders can have any number of associated images and assigned staff members
* Staff members are assigned groups based on their role and have permissions based on their group
* Staff members can be assigned to work orders, cancel or submit completed work orders, upload images, etc.

Please see the roadmap below for features currently under development.

<p align="right">(<a href="#top">back to top</a>)</p>



### Built With

* [Django](https://djangoproject.com/)

<p align="right">(<a href="#top">back to top</a>)</p>



<!-- GETTING STARTED -->
## Getting Started

You can install this project using **pip** or by cloning the github repository

### Prerequisites

If you already have a virtual environment and django project set up, you can skip ahead to the next step.

1. Start a new virtual environment in your project directory or wherever you keep them
  ```sh
  $ python3 -m venv env
  ```

2. Activate your virtual environment
  ```sh
  $ source /path/to/env/bin/activate
  ```

3. Inside of your environment, install Django and start a new project
```sh
  $ pip install django
  $ django-admin startproject steamcleancrm
```

### Install using pip

Take a look at the prerequisites for instructions on setting up your virtual environment and django project if you haven't already

* Inside of your environment, run the command to install the package with pip
  ```sh
  $ pip install django-steamcleancrm==0.3
  ```

* Add the package to the Installed Apps section of your settings.py file
  ```sh
  INSTALLED_APPS = [
    ...

    'crm.apps.CrmConfig'
  ]
  ```

### Cloning the github repo

1. Activate your virtual environment and navigate to the directory you want to clone the project in

2. Clone the repo
  ```sh
  $ git clone https://github.com/JohnGWebDev/steamcleaning.git
  ```

3. Install the project dependencies from .requirements
  ```sh
  $ pip install -r .requirements
  ```

4. Create a .env file in the project's root directory for your environment variables

5. Generate a new secret key for your django settings with the following command
  ```sh
  $ python -c "import secrets; print(secrets.token_urlsafe())"
  ```

6. Copy the new token and paste it into your .env file, for example:
  ```sh
  SECRET_KEY=OZvhK2ApBiLy4uXf91MIm2RNDK3b2dDp0UV7gAL0tBM
  ```


<p align="right">(<a href="#top">back to top</a>)</p>



<!-- USAGE EXAMPLES -->
## Usage

The project requirements were a lightweight client relationship management tool that can also store any number of images associated with a specific work order with room for future development.

### Groups and Permissions

There are three groups a staff member can be assigned to:

  * Representative
      * Create and update leads
      * Create, update and cancel work orders
  * Technician
      * Create and update leads
      * Create, update, cancel and complete work orders
      * Upload and delete images
  * Manager
      * Create and update leads
      * Create, update, and approve canceled/completed work orders
      * Upload and delete images
      * Assign technicians to work orders

### Data Pipeline

1. Add a lead manually
    - Leads can be added manually by a representative from incoming calls or automatically from a cross-origin POST request such as a contact form
    - Stores client contact information
    - Leads can have any number of related work orders

2. Open a work order relating to the lead
    - Stores description of the work to be perform, appointment dates, assigned Technicians, associated images, estimated total, etc.

3. Manager or Admin assigns a technician to the work order
    - Any number of Technicians can be assigned to a work order

4. Work is performed
    - Technicians can update work orders if needed on the job

5. Technician uploads images to work order and marks it complete
    - Any number of images can be uploaded to a work order
    - A work order can also be canceled at any time
    - When a Technician marks a work order canceled or complete, it is submitted for review by a Manager or Admin

6. Automated email survey ( under development )
    - Survey is sent to client one work order is verified complete by a Manager/Admin
    - Technicians also fill out a survey after completing each work order



<p align="right">(<a href="#top">back to top</a>)</p>



<!-- ROADMAP -->
## Roadmap

- [] Unit tests
- [] Create a survey for work order feedback from both clients and staff
- [] Analytics tools to track model metrics
- [] Create a new model, related to workorder, for work order descriptions to include more detailed information such as job type, price per square foot, etc.
- [] Automated email survey

See the [open issues](https://github.com/JohnGWebDev/steamcleaning/issues) for a full list of proposed features (and known issues).

<p align="right">(<a href="#top">back to top</a>)</p>



<!-- CONTRIBUTING -->
## Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement".
Don't forget to give the project a star! Thanks again!

1. Fork the Project
2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)
3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)
4. Push to the Branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request

<p align="right">(<a href="#top">back to top</a>)</p>



<!-- LICENSE -->
## License

Distributed under the MIT License. See `LICENSE.txt` for more information.

<p align="right">(<a href="#top">back to top</a>)</p>



<!-- CONTACT -->
## Contact

 john1galiszewski@gmail.com

 [LinkedIn][linkedin-url]

Project Link: [https://github.com/JohnGWebDev/steamcleaning](https://github.com/JohnGWebDev/steamcleaning)

<p align="right">(<a href="#top">back to top</a>)</p>



<!-- ACKNOWLEDGMENTS -->
## Acknowledgments

* []()
* []()
* []()

<p align="right">(<a href="#top">back to top</a>)</p>



<!-- MARKDOWN LINKS & IMAGES -->
<!-- https://www.markdownguide.org/basic-syntax/#reference-style-links -->
[contributors-shield]: https://img.shields.io/github/contributors/JohnGWebDev/steamcleaning.svg?style=for-the-badge
[contributors-url]: https://github.com/JohnGWebDev/steamcleaning/graphs/contributors
[forks-shield]: https://img.shields.io/github/forks/JohnGWebDev/steamcleaning.svg?style=for-the-badge
[forks-url]: https://github.com/JohnGWebDev/steamcleaning/network/members
[stars-shield]: https://img.shields.io/github/stars/JohnGWebDev/steamcleaning.svg?style=for-the-badge
[stars-url]: https://github.com/JohnGWebDev/steamcleaning/stargazers
[issues-shield]: https://img.shields.io/github/issues/JohnGWebDev/steamcleaning.svg?style=for-the-badge
[issues-url]: https://github.com/JohnGWebDev/steamcleaning/issues
[license-shield]: https://img.shields.io/github/license/JohnGWebDev/steamcleaning.svg?style=for-the-badge
[license-url]: https://github.com/JohnGWebDev/steamcleaning/blob/master/LICENSE.txt
[linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=for-the-badge&logo=linkedin&colorB=555
[linkedin-url]: https://linkedin.com/in/john-galiszewski-29211a144
[product-screenshot]: images/screenshot.png