A Blog and CV (Curriculum Vitae) engine written in Python and flask.
Switch branches/tags
Nothing to show
Clone or download
Permalink
Failed to load latest commit information.
config Feature: Still fixing the tests Dec 12, 2017
data Feature: Add some styling to /blog, render blog post dates May 3, 2018
helpers Feature: Add some styling to /blog, render blog post dates May 3, 2018
static Feature: Add some styling to /blog, render blog post dates May 3, 2018
tasks Feature: Improve tasks/upload_images_to_S3.py Apr 4, 2018
templates Feature: Add some styling to /blog, render blog post dates May 3, 2018
test Feature: Improve test_data.py, fine tune pylint Jan 31, 2018
.coveragerc HOTFIX: Be more specific with excluding Travis' packages Dec 13, 2017
.gitignore Feature: Add code coverage, and serve it Dec 12, 2017
.pylintrc Feature: Add date to blog posts; sort them by decreasing date May 3, 2018
.travis.yml Feature: Add pylint to the requirements, run as part of build Dec 13, 2017
LICENSE Add MIT license Dec 5, 2017
Makefile HOTFIX: Fix tests, do not lint tasks Apr 4, 2018
README.md Feature: Add the coverage badge Dec 12, 2017
__init__.py Milestone: Lint the code Dec 13, 2017
application.py Milestone: Lint the code Dec 13, 2017
compile_scss.py HOTFIX: Fix an encoding issue in compile_scss.py Nov 27, 2016
cv_flask.conf Feature: Update the services and confs Nov 9, 2017
nginx.conf Feature: Add code coverage, and serve it Dec 12, 2017
requirements.txt HOTFIX: Fix tests, do not lint tasks Apr 4, 2018
test.py Feature: 100% coverage! Jan 31, 2018
uwsgi.ini Feature: Update the services and confs Nov 9, 2017
wsgi.py Milestone: Lint the code Dec 13, 2017

README.md

cv_blog_flask: A CV/Blog content management system written in Python3 and Flask

Build Status Coverage Status

Author: Bertrand Caron

What this is

I needed a static-website generator. Jekyll works great for blogs but getting it to do anything else is a great pain, so I wrote my own using Python3 and Flask.

Getting started

The project comes battery-included with a Makefile.

Try running 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 data/. 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. I used uwsgi as my gateway interface, I included the UWSGI config I used (uwsgi.ini) as well as an example systemd service (cv_flask.conf).

Project Structure

  • 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