Skip to content

A full-stack web application developed to help runners organise social running activities and track their progress over time.

Notifications You must be signed in to change notification settings

emma-horton/Runnify

Repository files navigation

JavaScript Badge Node.js Badge HTML Badge CSS Badge MongoDB Badge D3 Badge

Runnify

Runnify is a full-stack web application developed to help runners organize social running activities and track their progress over time.

Click here to try it out
Currently only available on desktop.

Click here for login details

Purpose

This project was developed by a group of five students as part of our coursework for the 'Masters Programming Projects' module at the University of St Andrews. The full-stack application uses JavaScript, HTML, CSS, Node.js, and MongoDB to build a responsive and interactive platform, enabling communication between users and persistent data storage.

Features

Login and sign up page

  • Sign up and log in functionality is available, allowing access to the site.
Login Page Sign Up Page

Create runs page

  • New runs can be created by specifying pace, start time, location, and distance. The app generates an optimized route and provides the expected weather forecast for the run.

Create Run Page

Feed page

  • The feed page displays all runs, including meeting points, pace, routes on a map, participants, likes, and comments.
  • Runs can be joined, liked, and commented on directly from the feed page.
  • Sorting options by pace and distance are available to organize the runs on the feed.

Feed Page

Statistics page

  • Fitness goals can be updated, and activity trends tracked through the statistics page.

Statistics Page

Usage

1. Install modules and dependancies

pip install node
npm install express
npm install express-session
npm install mocha chai
npm install mongodb

2. Connect to the database

$HOME/Documents/mongodb/bin/mongod --dbpath $HOME/Documents/mongodb_data --logpath=$HOME/Documents/mongodb/mongodb.log --auth --port $(id -u) &

3. Start server

node main.js

(Optional) To run tests

Firstly, drop all data in the database
mongosh --port $(id -u) -u webuser --authenticationDatabase admin -p
use mainDatabase
db.users.drop() 
db.createRuns.drop()
Then, run the chai test cases
npm run test

Technologies Used

  • JavaScript: Handles the application logic, retrieves data from the OpenWeather and GeoCoding APIs, and displays running routes using MapBox.
  • HTML: Structures the web application and ensures a well-organized layout.
  • CSS: Provides styling and layout for a visually appealing and responsive user interface.
  • Node.js: Processes HTTP requests from the frontend (e.g., user logins, creating new runs, liking posts) and manages interactions with external APIs like OpenWeather and GeoCoding. It also facilitates communication with MongoDB for storing and retrieving data.
  • MongoDB: Stores persistent data, including user information (e.g., usernames, passwords, preferences) and run-related data (e.g., route, pace, start time, distance, participants), as well as interactions like comments and likes.

Acknowledgements

  • OpenWeather API: Provides weather information used to predict conditions for future runs.
  • GeoCoding API: Supplies the longitude and latitude of the starting point, allowing the plotting of optimal running routes.
  • MapBox: Displays the running routes on an interactive map for users to visualize their paths.
  • D3: Generates the graphs that are shown on the statistics page.
  • SweetAlert2: Creates interactive pop-ups and alerts throughout the application.
  • Sessions: Tracks user activity across different pages to maintain session state.
  • Mocha & Chai: Perform automated testing to ensure the application’s functionality and reliability.

Contributers

Name Contributions
Teja Garrido Graphs Statistics, Styling of Pages.
Emma Horton Testing Server Endpoints, Calendar for Runs, Database Setup, Styling of Pages, Create endpoints on server.
Harry Huang Running Feed.
Phil Kolling External weather API, Map API, Algorithm, Database Setup, Register Page, Login Page, Create endpoints on server, Helper Functions.
Reanne Sutton External weather API, Database Setup, Register Page, Login Page, Styling of Pages, Create endpoints on server, Sessions.

Login Details

  • Username: Claire
  • Password: claire

Project Grade

Grade: 19/20 (95%)

About

A full-stack web application developed to help runners organise social running activities and track their progress over time.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published