Giter Club home page Giter Club logo

soloproject's Introduction

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

soloproject's People

Contributors

ayshamarty avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.