/Bug-Tracker

A bug tracking software which organizes the project between project managers and developers by tracking each bug within each project with a professional GUI and database.

Primary LanguageJava

Bug-Tracker

A bug tracking software which organizes the project between project managers and developers by tracking each bug within each project with a professional GUI and database.

Table of Content

Project Functionalities

  1. Supports users with different roles (Admin, Project Manager, Developer).
  2. Authentication and Authorization.
  3. Database connection.
  4. Different dashboard for each user (Admin, Project Manager, Developer).
  5. Adding projects and assigning them to developers.
  6. Adding bugs tickets withing each project and assigning them to certain developer.
  7. Adding comments to each bug ticket.

Dependencies

1. mysql-connector-java-8.0.26

Open your IDE (preferably IntelliJ IDEA), File->Project Structure->Libraries. Then click on the plus(+) sign and select From Maven....

After you'll get a search box. There you should put:

mysql:mysql-connector-java:8.0.26

2. javafx-sdk-17

This library is already downloaded in the repo, you won't have to download it.

Tools

  1. IntelliJ IDEA (IDE)
  2. Java
  3. JavaFX
  4. MYSQL to manage database
  5. MYSQL J Connector to connect to the database
  6. freemysqlhosting.net to host the database
  7. Scene Builder for GUI

Deployment

1. Setting your Database

Inside "dbUtil" folder, you will find "DBConnection" class. You can change the value of the following variables and assign them to your database.

  1. url Change this variable to the url of your database
  2. USERNAME Change this variable to the username of your database
  3. PASSWORD Change this variable to the password of your database

2. Running your main class

Run the "GUIStart" class inside View folder as your main class

Design Pattern

Model-View-Controller Design Pattern

In "src" folder, you will find 3 sub folders name "Model", "View" and "Controller". These folders contain the classes where MVC pattern is applied

1. Model

contains only the pure application data, it contains no logic describing how to present the data to a user.

2. View

presents the model’s data to the user. The view knows how to access the model’s data, but it does not know what this data means or what the user can do to manipulate it.

3. Controller

Exists between the view and the model. It listens to events triggered by the view and executes the appropriate reaction to these events. The reaction is to call a method on the controller classes. Since the view and the model are connected through a notification mechanism, the result of this action is then automatically reflected in the view.

S.O.L.I.D Principles

1. Single-Responsibility Principle

A class should have one and only one reason to change, meaning that a class should have only one job. That is why controller classes such as "AddBugController". such classes are only responsible for one thing as shown from classes' name.

2. Open-Closed Principle

If you want to contribute to this project by adding whatever you want, all you need is no less than 3 classes in 3 different folders which are Model, View and controller folders.

You write the pure data or your template in your new Model class. Develop a GUI for your added feature in your new View class. Define how you want it to react for whatever the user does in your new Controller class.

Database Models

Database Models

Author

Yousef Kotp

Common Errors

You should open your IDE. File->Project Structure->Module. You should mark each folder you find inside "src" folder as a source. If you don't do so you can face many errors.

1. Error: JavaFX runtime components are missing, and are required to run this application

File >> Project Structure >> Modules >> Dependency >> + (on left-side of window)

clicking the "+" sign will let you designate the directory where you have unpacked JavaFX's "lib" folder.

Scope is Compile (which is the default.) You can then edit this to call it JavaFX by double-clicking on the line.

then in:

Run >> Edit Configurations

Add this line to VM Options:

--module-path "javafx-sdk-17\lib" --add-modules=javafx.controls,javafx.fxml

Screenshots

Login Page

Sign up Page

Admin Dashboard 1

Admin Dashboard 2

Admin Dashboard 3

Project Manager Dashboard

Add Project Page

Add Bug Page

Bug Details Page

Project Details Page