cloud-fundamentals-project

Requirements

  • Kanban Board: Trello or an equivalent Kanban Board
  • Database: GCP SQL Server or other Cloud Hosted managed Database.
  • Programming language: Python
  • Unit Testing with Python (Pytest)
  • Front-end: Flask (HTML)
  • Version Control: Git
  • CI Server: Jenkins
  • Cloud server: GCP Compute Engine

My Approach

My CRUD application will allow the user to create workers and their detail's to a table which they can then view and edit as they please. I want to create the same idea as mentioned for workers, for jobs as well. I want the workers to have capabilities that can be compared to requirements of that of the jobs so the user will be able to match workers up to jobs based on what the job requires and whether the worker is capable to do the job. I will build the relationship between workers and jobs by a model called teams. Each job will have a team number, a workers connection and a job connection so that the two main tables (workers and jobs) can be connected by this third table using foreign keys.

Workers:

  • Name
  • Age
  • list of things that they are capable of doing
  • Contact Details

Jobs:

  • Address
  • list of requirements for the job that match up with the capabilities of workers
  • Start Date
  • A team
  • Customer Contact details

Teams:

  • Have a workers id
  • Have a jobs id
  • A number

Project Tracking:

User Stories:

To help me get an idea of what I really wanted to include in my application, I used User Stories so that I had a set of clear pass or fail criteria that I could refer back to when writing the code.

image

Trello Board:

To give me further clarity of what I should be doing at a given time or rather what to include in my project, I created a trello board where I could move each task along as I either began or completed it.

image

Risk Assessment:

image

My Database Structure

image

Testing

I have tested my application using pytest. I only achieved 73% coverage, leaving a large proportion of application/routes.py uncovered. This was due to the amount of routes involved within my application. There was also a lack of time dedicated to this section of the project, the time required for the testing nearer the deadline was under estimated.

image

Front End Design

I have a very simple but clear front end design for my application. My aim was to make it as simple for the user a possible with data clearly displayed and actions performed to the data easy as well. The addition of the navbar makes the application significantly easier going to and from different functions of the application. to give the navbar the hover effect i used a lot of the styling from the following page: https://www.w3schools.com/howto/howto_css_dropdown_navbar.asp

image

image

image

image

image

image

image

image

image

image

image

image

Requirements.txt

image

What could have been done better?

  • firstly, the most obvious improvement for my project would be my unit testing coverage. I think that i spent too long on the front end application in areas that were not necessary for the criteria and therefore didnt have enough time to spend improving test coverage.
  • Parts of my code within my application could be reduced in length. Towards the deadline I was spotting more and more functions that could have been written far more efficiently.