Skip to content
This repository has been archived by the owner on Jan 23, 2024. It is now read-only.
/ se-cust-man Public archive

This student project is a CRM (Customer Relationship Management) application designed to manage and analyze customer interactions. The project was developed as a student project for a university course and is hosted on GitHub. The source code is open-source and available for anyone to view and contribute to.

License

Notifications You must be signed in to change notification settings

moglerdev/se-cust-man

Repository files navigation

  ██████ ▓█████  ▄████▄   █    ██   ██████ ▄▄▄█████▓ ███▄ ▄███▓ ▄▄▄       ███▄    █ 
▒██    ▒ ▓█   ▀ ▒██▀ ▀█   ██  ▓██▒▒██    ▒ ▓  ██▒ ▓▒▓██▒▀█▀ ██▒▒████▄     ██ ▀█   █ 
░ ▓██▄   ▒███   ▒▓█    ▄ ▓██  ▒██░░ ▓██▄   ▒ ▓██░ ▒░▓██    ▓██░▒██  ▀█▄  ▓██  ▀█ ██▒
  ▒   ██▒▒▓█  ▄ ▒▓▓▄ ▄██▒▓▓█  ░██░  ▒   ██▒░ ▓██▓ ░ ▒██    ▒██ ░██▄▄▄▄██ ▓██▒  ▐▌██▒
▒██████▒▒░▒████▒▒ ▓███▀ ░▒▒█████▓ ▒██████▒▒  ▒██▒ ░ ▒██▒   ░██▒ ▓█   ▓██▒▒██░   ▓██░
▒ ▒▓▒ ▒ ░░░ ▒░ ░░ ░▒ ▒  ░░▒▓▒ ▒ ▒ ▒ ▒▓▒ ▒ ░  ▒ ░░   ░ ▒░   ░  ░ ▒▒   ▓▒█░░ ▒░   ▒ ▒ 
░ ░▒  ░ ░ ░ ░  ░  ░  ▒   ░░▒░ ░ ░ ░ ░▒  ░ ░    ░    ░  ░      ░  ▒   ▒▒ ░░ ░░   ░ ▒░
░  ░  ░     ░   ░         ░░░ ░ ░ ░  ░  ░    ░      ░      ░     ░   ▒      ░   ░ ░ 
      ░     ░  ░░ ░         ░           ░                  ░         ░  ░         ░ 
                ░                                                                   

coveralls ci_cd branch size

For more detailed information about the project, please refer to the Wiki Page

About It

The ongoing project at HTWG University in the field of Software Engineering focuses on the agile development of a Customer Relationship Management (CRM) system. The project aims to design a well-thought-out software architecture. The CRM system assists businesses in managing customer relationships and includes features such as contact management, sales activities, and marketing initiatives. By utilizing agile methodologies like Scrum or Kanban and leveraging modern technologies, the project aims to create a flexible, scalable, and maintainable solution. The project team collaborates closely with stakeholders and users to gather continuous feedback and make adjustments to the CRM system according to requirements and quality standards.

Technologies Used

In addition to the dependencies mentioned earlier, the project also utilized the following technologies:

  • Scala: The primary programming language used in the project. Scala is a statically typed, functional and object-oriented language that runs on the Java Virtual Machine (JVM). It provides powerful language features and interoperability with Java.

  • sbt: The build tool used in the project. sbt (Scala Build Tool) is a popular build tool for Scala projects. It provides dependency management, compilation, testing, packaging, and deployment capabilities.

  • PostgreSQL: The chosen database management system for the project. PostgreSQL is a powerful, open-source relational database that provides robustness, scalability, and SQL support.

  • JSON: JSON (JavaScript Object Notation) was used for data interchange in the project. It is a lightweight data format that is easy to read and write for humans, and it is widely supported by various programming languages and frameworks.

  • Docker: Docker was used for containerization and deployment purposes. Docker enables the creation and management of lightweight, isolated containers that encapsulate an application and its dependencies, providing a consistent and reproducible environment across different systems.

These technologies were selected to leverage their capabilities and benefits in terms of scalability, productivity, data management, interoperability, and containerization.

Dependencies

Summary of Dependencies Used:

  • ScalaFX: "org.scalafx" % "scalafx_2.13" % "20.0.0-R31" - Scala library for creating JavaFX applications.
  • PostgreSQL: "org.postgresql" % "postgresql" % "42.6.0" - PostgreSQL JDBC driver for connecting to a PostgreSQL database.
  • Google Guice: "com.google.inject" % "guice" % "7.0.0" - Dependency injection framework for Java.
  • Scala Guice: "net.codingwell" %% "scala-guice" % "7.0.0" - Integration library for using Guice with Scala.
  • Scala XML: "org.scala-lang.modules" %% "scala-xml" % "2.1.0" - Scala library for working with XML.
  • ScalaTest: "org.scalatest" %% "scalatest" % "3.2.15" % "test" - Scala testing framework.
  • Circe (JSON library): "io.circe" %% "circe-core", "io.circe" %% "circe-generic", "io.circe" %% "circe-parser" - JSON parsing and encoding library for Scala.
  • Java-Dotenv: "io.github.cdimascio" % "java-dotenv" % "5.2.2" - Java library for loading environment variables from a .env file.
  • Mockito: "org.mockito" % "mockito-core" % "5.4.0" % Test - Mocking framework for testing in Java.
  • ScalaTestPlus Mockito: "org.scalatestplus" %% "mockito-3-4" % "3.2.10.0" % Test - Integration between ScalaTest and Mockito for testing.

These dependencies were used in the project to provide functionality and support for various aspects of the software development process, such as user interface development, database connectivity, dependency injection, JSON handling, testing, and more.

Design Patterns in use

  1. Factory
    • CustomerHandler -> create Insert, Update, Delete, ...
    • Handlers -> createChain
    • AccountService, AddressService, HistoryService, ProjectService, CustomerService -> def getInstance(apiType: String)
  2. Chain of Responsibility
    • Handlers (trait)
    • AddressHandler
    • AuthHandlers
    • CustomerHandler
  3. Proxy
    • AccountService
    • AddressService
    • CustomerService
    • HistoryService
    • ProjectService
  4. Builder
    • AccountBuilder
    • Builder (trait)
    • CustomerBuilder
    • SqlBuilder (WIP)

Installation

git clone https://github.com/moglerdev/se-cust-man.git

SBT

sbt bloopInstall

Docker

docker compose --build

Usage

Once the application is up and running, you can use it to manage and analyze your customer interactions.

Start

Docker

docker compose up -d "db"
docker compose up "cli"

SBT

sbt run [--gui]

Customer

prompt> customer ls
prompt> customer help 
prompt> customer set [-i id] -n <name> -e <email> -p <phone number> -a <address>
prompt> customer rm [ids ...]
prompt> customer open [id]

Project (after open customer)

prompt> project ls 
prompt> project help 
prompt> project set [-i <id:int>] -t <title:string> -d <description:string>
prompt> project rm <ids ...>
prompt> project open <id:int>

Tasks (after open project)

prompt> task ls 
prompt> task help
prompt> task set [-i <id:int>] -t <title:string> -d <description:string>
prompt> task rm <ids ...>

MIT License

Copyright (c) 2023 Christopher Jaeger and Dennis Schulze

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

About

This student project is a CRM (Customer Relationship Management) application designed to manage and analyze customer interactions. The project was developed as a student project for a university course and is hosted on GitHub. The source code is open-source and available for anyone to view and contribute to.

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published