Open Source

Open source projects I created (except django-avatar) and maintain.

Follow @grantmcconnaughey

  • django-avatar — A Django app for handling user avatars.
  • django-field-history — A Django app to track changes to a model field.
  • Lintly — A Continuous Integration CLI that slurps up linter output and sends it to a GitHub PR review.
  • — Descriptions and examples for the rules in Flake8 (pyflakes, pycodestyle, and mccabe).
  • cookiecutter-django-vue-graphql-aws — A highly opinionated Cookiecutter template that fuses together Django, Vue.js, GraphQL, and AWS into one full-stack web application.
  • django-lazy-tags — A Django app for easily loading template tags via AJAX.
  • – A Python library for working with CI services.
  • Lintly-Flake8 GitHub Action – A GitHub Action for creating automatic PR reviews using Flake8.



In 2020 I created Postpone, an app to schedule Reddit posts for increased views, upvotes, and traffic. Postpone was built using Python/Django and Vue.js. It is hosted on AWS using services like Lambda, S3, Cloudfront, API Gateway, and more. The codebase structure for Postpone was extracted to the open-source project cookiecutter-django-vue-graphql-aws.


In 2017 I created Lintly, an automatic Python linter which comments on GitHub pull requests. Lintly used Python 3.6 and Django 1.11. Lintly is no longer available, but many pieces of it have been open sourced, including the Lintly CLI and Flake8 Rules.

MSSU Website

In 2014 I created a brand new website for Missouri Southern State University. This website uses Pure CSS for its grid layout, jQuery for the home page carousel (and more), and PHP for displaying MSSU tweets and news articles from the Accents newsletter. The website consists of one home page and five templates for all of the interior pages. The website is optimized for all devices from mobile to desktop.

MSSU Online Admissions Application

In 2014 I created the MSSU Online Admissions Application. This application is used by every student that applies online to MSSU. It was written using Grails 2.3.