Developer: Louise Skinner (Louiseskinner01)
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

source: project3-social-fitness amiresponsive
Purpose
Primary User Needs
Site Owner Goals
Features (see below)
Content Requirements
Information Architecture
User Flow
Wireframes (see below)
Visual Design Elements
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

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 | ![]() |
| 404 Error | ![]() |
| Create Post | ![]() |
| Login | ![]() |
| My Profile | ![]() |
| Sign up | ![]() |
| Social Feed | ![]() |
| 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. |
| 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. |
| 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. |
| Feature | Notes | Screenshot |
|---|---|---|
| User Registration | Users can create an account with username and password. Optional email field supported via custom form. | ![]() |
| Login / Logout | Secure authentication with conditional navigation links based on login state. | ![]() ![]() |
| User Profile | Dedicated profile page displaying user’s posts and comments. Access restricted to authenticated users. | ![]() |
| Create Post | Users can upload an image, add an optional caption, select workout type and intensity. | ![]() |
| Delete Post | Users can delete only their own posts; ownership validation enforced. | ![]() |
| Workout Type Field | Custom dropdown field allowing users to categorise workouts (Run, Yoga, Strength, etc.). | ![]() |
| Workout Intensity Field | Optional intensity selection (Easy, Medium, Hard) to personalise workout entries. | ![]() |
| Social Feed | Displays all user posts chronologically with responsive image scaling. | ![]() |
| Add Comment | Authenticated users can add comments beneath posts. | ![]() |
| Edit Comment | Users can edit only their own comments with permission checks in place. | ![]() |
| Like / Unlike Post | Heart-icon toggle button allowing one like per user per post with visual state change. | ![]() |
| Like Constraint | Database-level uniqueness constraint prevents duplicate likes. | ![]() |
| Responsive Navbar | Navigation adapts based on authentication state and screen size. | ![]() ![]() |
| Custom 404 Page | User-friendly error page with conditional navigation options. | ![]() ![]() |
| Conditional Navigation | “Create Post” link only visible when user is on profile page and authenticated. | ![]() |
| Responsive Design | Bootstrap grid and fluid images ensure mobile-first compatibility. | ![]() ![]() |
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.
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 | ![]() |
| In-progress | ![]() |
| Done | ![]() |
GitHub Issues served as an another Agile tool. There, I managed my User Stories and Milestone tasks, and tracked any issues/bugs.
| Link | Screenshot |
|---|---|
![]() |
|
![]() |
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.
Must Have: guaranteed to be delivered - required to Pass the project (max ~60% of stories)
Should Have: adds significant value, but not vital (~20% of stories)
Could Have: has small impact if left out (the rest ~20% of stories)
Won’t Have: not a priority for this iteration - future features
[!NOTE]
For all testing, please refer to the TESTING.md file.
The site was deployed to GitHub Pages. The steps to deploy are as follows:
The live link can be found on GitHub Pages.
This project can be cloned or forked in order to make a local copy on your own system.
You can clone the repository by following these steps:
git clone https://www.github.com/Louiseskinner01/project3-social-fitness.gitAlternatively, if using Gitpod, you can click below to create your own workspace using this repository.
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.
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:
There are no remaining major differences between the local version when compared to the deployed version online.
| 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 |
| Source | Notes |
|---|---|
| favicon.io | Generating the favicon |
| TinyPNG | Compressing images < 5MB |
| CompressPNG | Compressing images > 5MB |
| GoogleFonts | Font styles throughout the site |