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.
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.
- Sign up and log in functionality is available, allowing access to the site.
- 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.
- 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.
- Fitness goals can be updated, and activity trends tracked through the statistics page.
pip install node
npm install express
npm install express-session
npm install mocha chai
npm install mongodb
$HOME/Documents/mongodb/bin/mongod --dbpath $HOME/Documents/mongodb_data --logpath=$HOME/Documents/mongodb/mongodb.log --auth --port $(id -u) &
node main.js
mongosh --port $(id -u) -u webuser --authenticationDatabase admin -p
use mainDatabase
db.users.drop()
db.createRuns.drop()
npm run test
- 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.
- 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.
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. |
- Username: Claire
- Password: claire
Grade: 19/20 (95%)