Skip to content

Matt25969/SoloProject

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Personal yoga application

In fulfilment of the solo project assignment due Monday week 7 at QA consulting.

Index

Brief

Architecture

Testing

Deployment

Front End Design

Improvements for the Future

Authors

Acknowledgements

The Brief

To create an OOP-based application with utilisation of supporting tools, methodologies and technologies that encapsulate all core modules covered during training. The application must manipulate two tables with full CRUD functionality.

Solution

I decided to create a personal yoga application that would allow the user to create poses and routines, as well as add and remove poses from each routine.

The many to many relationship between poses and routines is working, where poses can be added and removed from routines.

Architecture

Entity Relationship Diagrams

Initial plan

Initial ERD

The initial plan for the ERD consisted of a lot more tables and entities than were produced in the final application. The tables are coloured based on how I had hoped to prioritise the features of the application, and therefore the order in which I would tackle them. Given the time constraints, I only managed to deliver two tables plus a join, as depicted below

Delivered solution

Final ERD

As shown in this ERD, I ended up changing the focus of the initial tables. After building the first entity (poses), I concluded it made more sense to continue making a routine table first, encompassing a many-to-many relationship between the two. My reasoning was that it would make for a more interesting user experience to create routines from the poses, rather than arbitrarily add health benefits to each pose.

Multi Tier Architecture Diagram

Please click on the diagram for a high resolution version: MTA

This is a very high-level architecture diagram to demonstrate the architecture of the application. It does not include getters and setters, test classes, or constants classes.

Testing

JUnit, Mockito and Selenium tests have been used for automated testing, and SonarLint/SonarQube for static reporting and refactoring.

Report

Link to Final Surefire Report

Test coverage for the backend is at 84%, there are as of yet no working Selenium tests but hope to get these running soon. The SonarQube static report shows 9 code smells remaining, 0 bugs, 0 duplications and 0 vulnerabilities.

Deployment

The build, test and deployment process was automated using Jenkins, with a webhook to GitHub which was triggered with every push event

This application can be deployed both locally and externally through a virtual machine. The constants.js file has commented out options to switch from an external to local IP address.

Deployment Pipeline

Technologies Used

  • H2 Database Engine - Database
  • Java - Logic
  • Wildfly - Deployment
  • Jenkins - CI Server
  • Maven - Dependency Management
  • Jacoco, EclEmma, Surefire - Test Reporting
  • SonarQube - Static Testing
  • Git - VCS
  • Trello - Project Tracking
  • GCP - Live Environment

Front End Design

Wireframes

Poses Poses Wireframe Routines Routines Wireframe

Final Appearance

Improvements for the Future

Currently, IDs are required to update poses and routines, and to add or remove poses from routines. In my next sprint, I would like to create buttons in the front end which allow this functionality without the need for IDs, which would allow the object IDs to be hidden from the user.

In later sprints, I would also like create a health-benefit entity which would have a many to many relationship with poses, so that users can create routines based on their focus for their practice. After this, I would add the capability to create different user accounts. At this point, I would remove the functionality for the user to add and remove poses themselves in the front end. These would instead be hard coded into the database, which the user could manipulate only for adding and removing them from their own routines.

Authors

Aysha Marty

Acknowledgements

  • QA consulting and our fantastic instructors
  • The rest of our wonderful cohort on the programme

About

Java for the Solo Project due week 7

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 44.1%
  • JavaScript 28.1%
  • HTML 25.7%
  • CSS 1.3%
  • Dockerfile 0.8%