project3-social-fitness

project3-social-fitness(https://github.com/Louiseskinner01/project3-social-fitness)

Developer: Louise Skinner (Louiseskinner01)

GitHub commit activity GitHub last commit GitHub repo size badge

Social Fitness

Social Fitness is a community-driven web application designed to motivate users through social interaction and workout tracking. The platform allows users to create an account, share workout posts with images, specify workout type and intensity, and engage with other users through likes and comments.

The application focuses on simplicity, accessibility, and accountability, providing a space where users can document their fitness journey, interact with a supportive community, and manage their own content through personalised profiles.

Site Mockups screenshot

source: project3-social-fitness amiresponsive

The 5 Planes of UX

1. Strategy

Purpose

Primary User Needs

Site Owner Goals

Features (see below)

Content Requirements

3. Structure

Information Architecture

User Flow

4. Skeleton

Wireframes (see below)

5. Surface

Visual Design Elements

Colour Scheme

The visual design of Social Fitness follows a minimal and content-focused approach. The design philosophy aligns with modern social platforms where simplicity and clarity enhance user engagement whilst adopting a cleaner and more neutral style to support usability and readability.

Bootstrap’s default styling and component library were intentionally used to ensure visual consistency, accessibility, and responsive behaviour across devices. The design prioritises user-generated content—such as workout images and captions—rather than decorative elements, allowing posts to remain the primary focal point of the interface. A restrained colour palette and standardised button styles were selected to reduce visual clutter, improve contrast, and maintain a professional appearance suitable for a social platform. This approach supports scalability, ensuring that additional features or user-customisation options can be integrated in future iterations without conflicting with an overly complex theme.

Colour pallet

screenshot

Typography

Wireframes

To follow best practice, wireframes were developed for mobile, tablet, and desktop sizes. I’ve used Balsamiq to design my site wireframes.

Page Mobile (landscape & portrait) Tablet Desktop
Home screenshot
404 Error screenshot
Create Post screenshot
Login screenshot
My Profile screenshot
Sign up screenshot
Social Feed screenshot

User Stories

General Play

Target Expectation Outcome
As a user I would like to upload a image so that I can populate my profile page with images of my workouts.
As a user I want add a caption so that my posts can be accompanied by a description.
As a user I would like to add a workout type and an intensity level to give more meaning to my workout post.
As a user I would like to create an account so I can use the social-fitness platform.
As a user I would like to log in and out out of my account so my profile is kept safe from non-authenticated users.
As a user I would like to be able to delete my post so I have full control of my user profile and what is and isnt displayed.
As a user I would like like to view the main social feed so I can be inspired by other users.
As a user I would like to like posts that other users have posted on the main social feed so that I can share my interests.
As a user I would like to comment on other users posts so that I can share my thoughts.
As a user I want to be able to edit a comment I have made so my comment can be corrected if I have made a mistake.
As a user I want to access to to simple and clean navbar so I can easily navigate through the web apps pages.
As a user I would like to see a 404 error page if I get lost so that it’s obvious that I’ve stumbled upon a page that doesn’t exist.

Accessibility & Usability

Target Expectation Outcome
As a visually impaired user I want clear colour contrasts (e.g. bold backgrounds and bright highlights) so that I can see buttons and numbers more clearly.
As a user with little computer skills I want a simple web app so I can fully utilise the apps features.
As a mobile user I want large, tap-friendly buttons so that I can use the app easily on my phone.

Content & Motivation

Target Expectation Outcome
As a casual user I want to be able to share my workouts so that I can enjoy the web application without pressure.
As a competitive user (fitness influencer) I want to sutilise the app so that I can inspire other users who are new to fitness.
As a user new to fintess I want to be able to access a community so that I can learn and be inspired by fitness content.

Features

Existing Features

Feature Notes Screenshot
User Registration Users can create an account with username and password. Optional email field supported via custom form. screenshot
Login / Logout Secure authentication with conditional navigation links based on login state. screenshot
screenshot
User Profile Dedicated profile page displaying user’s posts and comments. Access restricted to authenticated users. screenshot
Create Post Users can upload an image, add an optional caption, select workout type and intensity. screenshot
Delete Post Users can delete only their own posts; ownership validation enforced. screenshot
Workout Type Field Custom dropdown field allowing users to categorise workouts (Run, Yoga, Strength, etc.). screenshot
Workout Intensity Field Optional intensity selection (Easy, Medium, Hard) to personalise workout entries. screenshot
Social Feed Displays all user posts chronologically with responsive image scaling. screenshot
Add Comment Authenticated users can add comments beneath posts. screenshot
Edit Comment Users can edit only their own comments with permission checks in place. screenshot
Like / Unlike Post Heart-icon toggle button allowing one like per user per post with visual state change. screenshot
Like Constraint Database-level uniqueness constraint prevents duplicate likes. screenshot
Responsive Navbar Navigation adapts based on authentication state and screen size. screenshot
screenshot
Custom 404 Page User-friendly error page with conditional navigation options. screenshot
screenshot
Conditional Navigation “Create Post” link only visible when user is on profile page and authenticated. screenshot
Responsive Design Bootstrap grid and fluid images ensure mobile-first compatibility. screenshot
screenshot

Future Features

Profile Pictures / Avatars: Allow users to upload a personal image to increase individuality and community recognition.

User Bio / About Section: Provide a short description field so users can share fitness goals or personal interests.

Follow / Friend System: Enable users to follow others and view a personalised activity feed.

Reply to Comments: Introduce threaded conversations to improve interaction and discussion depth.

Notifications: Alert users when their posts receive likes or comments to increase engagement.

User Mentions (@username): Allow tagging other users within comments to encourage social interaction.

Workout Statistics Fields: Add optional inputs such as duration, distance, or calories burned to enrich workout data.

Progress Tracking Dashboard: Display charts or summaries of user activity over time for motivation and goal tracking.

Workout Tags / Filters: Allow filtering of posts by workout category (e.g., cardio, strength, flexibility).

Dark Mode Toggle: Provide a user-controlled theme switch for improved accessibility and personal preference.

Email Verification: Improve account security by requiring confirmation before activation.

Password Reset Functionality: Allow users to securely recover forgotten passwords without administrator assistance.

Infinite Scroll / Advanced Pagination: Improve performance and usability as the number of posts grows.

Report Post Feature: Enable users to flag inappropriate or harmful content for moderation.

Admin Analytics Dashboard: Provide administrators with insights into user activity and engagement trends.

Tools & Technologies

Tool / Tech Use
badge Version control. (git add, git commit, git push)
badge Secure online code storage.
badge Local IDE for development.
badge Main site content and layout.
badge Design and layout.
badge Hosting the deployed front-end site.
badge Front-end CSS framework for modern responsiveness and pre-built components.
badge Automated ERD tool.
badge Creating wireframes.
badge Customisation of fonts.
badge Help debug, troubleshoot, and explain things.
badge Tutorials/Reference Guide
badge Guidance for implementing Django framework

Agile Development Process

GitHub Projects

GitHub Projects served as an Agile tool for this project. Through it, EPICs, User Stories, issues/bugs, and Milestone tasks were planned, then subsequently tracked on a regular basis using the Kanban project board.

Stage Screenshot
To Do screenshot
In-progress screenshot
Done screenshot

GitHub Issues

GitHub Issues served as an another Agile tool. There, I managed my User Stories and Milestone tasks, and tracked any issues/bugs.

Link Screenshot
GitHub issues screenshot
GitHub closed issues screenshot

MoSCoW Prioritization

I’ve decomposed my Epics into User Stories for prioritizing and implementing them. Using this approach, I was able to apply “MoSCoW” prioritization and labels to my User Stories within the Issues tab.

Testing

[!NOTE]
For all testing, please refer to the TESTING.md file.

Deployment

GitHub Pages

The site was deployed to GitHub Pages. The steps to deploy are as follows:

The live link can be found on GitHub Pages.

Local Development

This project can be cloned or forked in order to make a local copy on your own system.

Cloning

You can clone the repository by following these steps:

  1. Go to the GitHub repository.
  2. Locate and click on the green “Code” button at the very top, above the commits and files.
  3. Select whether you prefer to clone using “HTTPS”, “SSH”, or “GitHub CLI”, and click the “copy” button to copy the URL to your clipboard.
  4. Open “Git Bash” or “Terminal”.
  5. Change the current working directory to the location where you want the cloned directory.
  6. In your IDE Terminal, type the following command to clone the repository:
    • git clone https://www.github.com/Louiseskinner01/project3-social-fitness.git
  7. Press “Enter” to create your local clone.

Alternatively, if using Gitpod, you can click below to create your own workspace using this repository.

Open in Gitpod

Please Note: in order to directly open the project in Gitpod, you should have the browser extension installed. A tutorial on how to do that can be found here.

Forking

By forking the GitHub Repository, you make a copy of the original repository on our GitHub account to view and/or make changes without affecting the original owner’s repository. You can fork this repository by using the following steps:

  1. Log in to GitHub and locate the GitHub Repository.
  2. At the top of the Repository, just below the “Settings” button on the menu, locate and click the “Fork” Button.
  3. Once clicked, you should now have a copy of the original repository in your own GitHub account!

Local VS Deployment

There are no remaining major differences between the local version when compared to the deployed version online.

Credits

Content

Source Notes
Interactive Frontend Development Code Institute walkthrough project inspiration
w3schools Help with form validation, display:block/none vs visibiliy: visible/hidden
Bootstrap Various components / responsive front-end framework
Django Various components such as forms, loops and reusable templates
ChatGPT Help with code logic and explanations:
Example 1
Example 2
Example 3

Media

Source Notes
favicon.io Generating the favicon
TinyPNG Compressing images < 5MB
CompressPNG Compressing images > 5MB
GoogleFonts Font styles throughout the site

Acknowledgements