cv_blog_flask: A CV/Blog content management system written in Python3 and Flask
Author: Bertrand Caron
What this is
The project comes battery-included with a Makefile.
make serve to download the required
pip packages and run the flask server locally.
This will also copy a bunch of example data files to
Edit those to update your CV and restart the web server to update those changes.
Also edit the config in
config/config.yml to change the parameters of the CV and blog.
Once this is working, you can look into getting a web server (I provide an Nginx configuration file in
nginx.conf) to serve your Flask application.
You WILL need to update all the paths in there, and obtain SSL certificate (I use Let's Encrypt's
certbot) to get it to work over HTTPS.
uwsgi as my gateway interface, I included the UWSGI config I used (
uwsgi.ini) as well as an example
systemd service (
data/: Contains the CV and blog
data/posts: Contains blog posts
static/: Contains assets (images, style sheets, etc.)
application.py: Main Flask app
templates/: Contains all the views (Jinja2 templates)
helpers/: Contains the rest of the code
config/: Contains the config
config/config.yml: Contains the main config
I don't have a web server, but have an Amazon Web Service (AWS) account, can I host my CV on an S3 bucket?
You sure can!
First, you'll need to create an S3 bucket, which should match the content of the
BUCKET_NAME variable in
Then, configure your S3 bucket for Static Website Hosting (see AWS docs).
Make sure that the index document you choose matches the
INDEX_FILENAME variable in
tasks/S3_manager.py (I recommend using
Finally, give public read access to your bucket!
Then, set your
AWS_SECRET_ACCESS_KEY environment variable to allow authentification.
python3 tasks/S3_manager.py --upload to upload all the static files to your S3 bucket,
as well as render a static version of your CV, and upload that HTML document to become the index of your S3 bucket website.