Skip to content

arugifa/website

Repository files navigation

Alexandre Figura’s Website

This repository contains the source code of my website. But not only! This is also a sandbox where I like to experiment new things, especially fancy testing strategies 🌶

CI Build

Overview

Written in Python (🐍), my website is based on:

  • Flask: for the web application itself,

  • Git: to manage content and history,

  • Invoke: to manage my website’s life cycle (e.g., updates, deployment, etc.),

  • OpenStack Swift: to host my website in the Cloud.

Even if my workflow (focusing on portability and cost reduction) is quite common nowadays, it was not the case when I started to work on this project:

  1. I write my website’s content into text files and manage them with Git. Very easy for edition: I don’t have to install anything special on my computer. I can use my favorite text editor, and I get a Content Management System for free with Git!

  2. Before running my website, I load new content into a SQL database, so it’s easier to perform (complex) queries inside the codebase,

  3. Finally, I deploy my website as a set of static files in the Cloud, rather than running a traditional web server, so there is less maintenance work needed.

I could have used a website generator to reach my goals, but I prefered to develop my very own one website, in order to sharpen my programming skills, and have something tailored to my needs (too much generators focus on making blogs only).

Technical Part

Under the hood, no magic, only technologies that I carefully selected for many reasons:

  • Flask instead of Django for the sake of simplicity,

  • the Asciidoctor format for my website’s content, because Markdown lacks of semantic markup and reStructuredText can be hard to use,

  • a SQLite database to store the actual website’s state, because it’s very easy to backup and reuse in different environments,

  • InuitCSS for the design/CSS part, because I like the minimalist and OOP approach, compared to other bloated UI libraries,

  • OpenStack and not AWS & Co. because I prefer to support local Cloud providers, and am really concerned about privacy on the Web in general 🕵

Getting Started

Want to give it a try? You are ready to go with a couple of commands:

# Install system dependencies.
pikaur -S $(< archlinux.lock)
bower install

# Set-up a development environment.
tox -e dev --notest && . venv/bin/activate

# Launch a demo server on http://localhost:5000
invoke compile_css
invoke demo

# Run tests.
pytest

If you use another distribution than Archlinux, have a look inside archlinux.lock, and install system dependencies manually instead! 😉

About

My website's source code (Work In Progress)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published