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! 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.
- 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.
- 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-allauthfor authenticationdjango-crispy-formsand Bootstrap for form/layout styling- Gunicorn for production serving
The repository includes screenshots from the original project documentation. A few representative examples:
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 .venvActivate the environment and install dependencies:
# Windows PowerShell
.venv\Scripts\Activate.ps1
pip install -r requirements.txtSet local environment variables. Values are intentionally not shown here.
Required:
SECRET_KEY
Optional for local development:
DEBUGDATABASE_URLCLOUDINARY_URLALLOWED_HOSTSCSRF_TRUSTED_ORIGINSEMAIL_HOSTEMAIL_PORTEMAIL_HOST_USEREMAIL_HOST_PASSWORDEMAIL_USE_TLSEMAIL_ADMIN_ADDRESSDEFAULT_FROM_EMAILSERVER_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 runserverThe project includes a repeatable management command for recruiter demo content:
python manage.py seed_demo_dataThe 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.
Run the automated test suite and Django system checks:
python manage.py test
python manage.py checkCurrent verified result: 16 automated tests passing and manage.py check reporting no issues.
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_KEYDATABASE_URLCLOUDINARY_URLALLOWED_HOSTSCSRF_TRUSTED_ORIGINSDEBUG
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.
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.
John Doherty
- GitHub: jdohertydev




