This is v1 of willcarh.art. It is a monolithic Django application and was a first version of my website. It was a great first attempt, but has become difficult to maintain and support. This repository has been archived for historical purposes. Please refer to the current repository for the latest version of willcarh.art: https://github.com/wcarhart/willcarh.art
Full-stack web application for my portfolio!
Track active development progress and bug fixes here: https://trello.com/b/glDTHpCJ/willcarhart
To install or deploy, clone this repo and use the deploy.sh
script.
To run locally:
deploy.sh local
To deploy to development staging area:
deploy.sh dev
To deploy to production:
deploy.sh prod
Note that willcarh.art encrypts its secrets in a GPG file, so you'll have to replicate those values with your own if you'd like to run the app locally.
The following are custom utilities I've written in Python to facilitate the microservices of willcarh.art.
The scribe
writes content to the database from a JSON file. Checkout the code --> scribe.py
Usage:
# read from default file 'contents.json'
$ python3 scribe.py
# read from custom file 'custom.json'
$ python3 scribe.py -f custom.json
The herald
sends emails. Checkout the code --> herald.py
Usage:
# the herald exposes an easy-to-use API:
from herald import send_message
send_message(
from_name="Will Carhart",
from_email="my_email@mail.com",
from_message="Hey! How's it going?"
)
The locksmith
encrypts project secrets so nefarious individuals can't see them when my code's stored in GitHub. Checkout the code --> locksmith
Usage:
See linked repository: locksmith
The maid
cleans and refreshes the database for updates. Checkout the code --> maid.py
Usage:
# clean the database
$ python3 maid.py
# clean the database and update using Scribe
$ python3 maid.py -u
The chronicler
updates, records, and manages the app's manifest file (which contains version, etc.). Checkout the code --> chronicler.py
Usage:
# update manifest.json to reflect changes
$ python3 chronicler.py
# bump major version for app
$ python3 chronicler.py -M
# bump minor version for app
$ python3 chronicler.py -m
As you may have noticed, the URL for willcarh.art is rather odd. In order to preserve my full name, Will Carhart, in the URL, I opted to use a .art top-level domain (TLD). Since the .art TLD is usually reserved for art portfolios, I thought it was a fitting name for my coding portfolio. However, the naming convention doesn't stop there! If you peruse the file structure of willcarh.art, you may notice that the back-end of the app is called the easel while the front end of the app is called the canvas, which I felt fit with the whole "art" vibe of the project 🤗
- HTML5
- CSS3
- Bootstrap 4
- Javascript + jQuery
- Python 3.6.8
- Django 2.2.4
- PostgreSQL 11.2
- Heroku 18 (Ubuntu 18)
- Cloudflare (DNS, SSL)
- GoDaddy (Registrar)
- Gmail API