Skip to content

Repository files navigation

Run It!

Run It! is a Django web application for discovering, discussing, and joining running events. It was originally built as a Code Institute Full Stack Software Development diploma project and has since been restored as a working recruiter-facing portfolio demo with modern deployment configuration, future demo content, and production-hosted media.

Live Demo: https://runit-sandy.vercel.app/

Run It responsive preview

Project Overview

Run It! helps runners browse upcoming races, view event details, sign up for events, see participant lists, and join event-specific comment threads. Event organisers can manage event listings through the Django admin, while users can register, log in, manage their account, and contact the site owner.

The project began as a diploma submission, so some design and feature decisions reflect the original brief and learning context. The restoration work focused on making the application useful as a live portfolio demo rather than presenting it as a brand-new product. That included restoring local and production configuration, preparing safe environment-based settings, adding durable demo data, restoring Cloudinary event images, and fixing account/profile validation edge cases.

Key Features

  • Browse future running events.
  • Search and filter event listings by keyword, race type, and location.
  • View event detail pages with dates, locations, descriptions, participant counts, images, and comments.
  • Register, log in, log out, and manage account details with django-allauth.
  • Sign up for and unregister from events.
  • Show public participant lists for each event.
  • Add, edit, and delete comments, with approval support.
  • Contact form for site enquiries.
  • Responsive Bootstrap-based UI.
  • Repeatable production demo data with future events, inactive fictional runner accounts, signups, and approved comments.

Tech Stack

  • Python 3.12
  • Django 4.2
  • PostgreSQL in production via Neon
  • SQLite fallback for local development
  • Cloudinary for event images
  • Vercel deployment
  • WhiteNoise for static files
  • django-allauth for authentication
  • django-crispy-forms and Bootstrap for form/layout styling
  • Gunicorn for production serving

Screenshots

The repository includes screenshots from the original project documentation. A few representative examples:

Events listing

Event detail

Participant list

Account management

Local Development

Clone the repository and create a virtual environment:

git clone https://github.com/jdohertydev/run-it-public.git
cd run-it-public
python -m venv .venv

Activate the environment and install dependencies:

# Windows PowerShell
.venv\Scripts\Activate.ps1

pip install -r requirements.txt

Set local environment variables. Values are intentionally not shown here.

Required:

  • SECRET_KEY

Optional for local development:

  • DEBUG
  • DATABASE_URL
  • CLOUDINARY_URL
  • ALLOWED_HOSTS
  • CSRF_TRUSTED_ORIGINS
  • EMAIL_HOST
  • EMAIL_PORT
  • EMAIL_HOST_USER
  • EMAIL_HOST_PASSWORD
  • EMAIL_USE_TLS
  • EMAIL_ADMIN_ADDRESS
  • DEFAULT_FROM_EMAIL
  • SERVER_EMAIL

If DATABASE_URL is not set, the current settings automatically use local SQLite at db.sqlite3.

Run migrations and start the development server:

python manage.py migrate
python manage.py runserver

Demo Data

The project includes a repeatable management command for recruiter demo content:

python manage.py seed_demo_data

The command creates six future running events, Cloudinary image public IDs, a non-login demo organiser, fictional inactive runner accounts, event signups, and approved event comments. The seeded runner accounts are deliberately inactive and have unusable passwords, so they are not real login credentials.

The command is idempotent. Running it again updates the seeded events and reuses the same fictional users, signups, and comments instead of creating duplicates.

Testing

Run the automated test suite and Django system checks:

python manage.py test
python manage.py check

Current verified result: 16 automated tests passing and manage.py check reporting no issues.

Deployment

The live demo is deployed on Vercel. Production data is stored in Neon PostgreSQL, event images are served from Cloudinary, and static files are collected for WhiteNoise.

Production configuration is environment-based. Secrets and deployment-specific values are not committed to the repository. The key deployment variable names are:

  • SECRET_KEY
  • DATABASE_URL
  • CLOUDINARY_URL
  • ALLOWED_HOSTS
  • CSRF_TRUSTED_ORIGINS
  • DEBUG

Email settings are optional for the portfolio demo. If SMTP configuration is not supplied, the application falls back to Django's console email backend so email-dependent flows do not crash.

Credits / Project History

Run It! was originally created by John Doherty as a Code Institute Full Stack Software Development diploma project. This restored version preserves the original project story while making the application easier to run, review, and deploy as a working portfolio demo.

Author

John Doherty

About

Restored Django running-events app with authentication, event sign-ups, comments and a live recruiter demo.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages