Skip to content

pik-nik/GAProject2-fortis_workout_app

Repository files navigation

Project #2: Building Your First Full-stack Application

As part of GA Software Engineering Immersive course, I have made a workout app 💪 for my second project.

The criteria was to make a password-protected, full-stack CRUD application that stores data in PostgreSQL in a little over 3 days.

Check it out here

Note: it may take a few moments for the page to load

To log in, use the test account details here or create an account

Username: [email protected]

Password: testing

Picture of my homepage

Features

Fortis is latin for "strong". My app encourages users to post their workouts and share it with the community.

Picture of workout details page

When logging workouts, users can add/edit/delete exercises, sets, reps and weights. Add an exercise

When creating or editing users, the database will be checked if a username or email already exists and passwords are checked to ensure they match. If not, the user will be redirected to the form and flash messages will appear. passwords do not match

To speed up sign up process, a default profile picture is given to all new users. Users can later update their picture through "edit profile" on their profile page or settings. new user

Whilst buttons to add, edit and delete are shown on user's own workout details page and profile page these buttons do not appear if a user goes to another user's workouts. The edit pages have also been safeguarded such that only the user who made the workout can access it. safeguarded links and buttons

Technologies used

JavaScript, Node.js, Postgres, Express, EJS, CSS

Inspiration

I was talking to my lifting coach about how she couldn't find a great app that logged workouts. The one we were currently using was full of many bugs so I thought I would dabble in making my own.

🤔 Planning

It didn't take long in the planning process for me to realise the capacity of what I wanted to make in a bit over 3 days...

Schema Tables

Check out Whimsical here

During class codealongs we had only worked with ideas that required 2 tables – one representing someone using your application (users), and one that stored whatever was the intended purpose of the app. As I began to draw out my ERD, I started adding more and more tables to the mix.

I would need separate tables to order my workouts, exercises and sets of reps and weights. A workout contained many exercises and an exercise can belong to many workouts. Because of this relationship, I used a junction table to create a relationship between workouts and exercises.

From the schema tables I made during planning, I decided to narrow down the tables I implemented in my code due to the time constraints of the project.The tables in blue were the ones I went ahead with and the ones in red were the ones I excluded but will endeavour to add in future versions.

Screenshot of my Schema ERD

Wireframe

Drawing up my wireframe made it easy for me lay out how each page would look. I chose to have a consistent form css styling which a lot of the pages had. Picture of my wireframes

v 1.0.0

  • This is the first version and what I submitted as part of my second project for General Assembly Software Engineering Immersive.

Updates since submission

  • Made the app responsive on phone

Future features

Here is a list of future features I would like to add:

  1. Allow the option to copy workouts. In order to do this I will need to add a user log table which is a log of workouts. This will allow a user to do a workout that they did not originally create.
  2. Add more tables including exercise type, equipment used, workout type which will allow more search options for people to find workout or users for specific training styles e.g. powerlifting or bodybuilding.
  3. Allow the choice to make the workout private, only accessible to coach or "friends" or public.
  4. Allow coaches to post workouts for their clients to do.

Dependencies used