My personal blog.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
.circleci Remove danger-plugin-yarn Aug 21, 2018
accessibility-testing Dont fail for warnings Jun 20, 2018
backstop_data Generate reference images with correct docker container duh Aug 20, 2018
bin Remove yarn occurences Aug 21, 2018
config Add comment about APP_DOMAIN env var May 23, 2018
db/migrations Add unique index on posts slug Apr 7, 2018
public Store sitemap on shared hosting Jul 8, 2018
spec Remove uneeded commented code. Those tests exist by now Aug 17, 2018
src Remove differences between old and new Aug 17, 2018
static/assets Upgrade frontend stack to lucky 0.11 practices Jun 22, 2018
tasks Fix deploy task for db, closes #76 Jul 28, 2018
.babelrc Add back babel for danger-js May 21, 2018
.crystal-version Bump to 0.25.1 crystal Jul 2, 2018
.gitattributes Tell linguist to ignore vendored code in language statistics Aug 21, 2018
.gitignore Store sitemap on shared hosting Jul 8, 2018
Dockerfile Remove yarn occurences Aug 21, 2018
LICENSE init new lucky project Nov 29, 2017
Procfile init new lucky project Nov 29, 2017 Remove yarn occurences Aug 21, 2018 Remove yarn occurences Aug 21, 2018
backstop.js Avoid local changes when approving new references Jul 16, 2018
blog_development.dump Database backup to be sure Jul 16, 2018
blog_visual_test.dump Update visual testing dataset Jun 13, 2018
bs-config.js init new lucky project Nov 29, 2017
dangerfile.js Remove yarn occurences Aug 21, 2018
docker-compose.yml Initial docker setup that succeeds running 'docker-compose up' Dec 26, 2017
package-lock.json chore(package): update lockfile package-lock.json Sep 14, 2018
package.json chore(package): update danger to version 4.0.1 Sep 14, 2018
shard.lock Bump some dependencies Aug 17, 2018
shard.yml Add task to generate sitemaps Jul 8, 2018 init new lucky project Nov 29, 2017
webpack.mix.js Minify css in production Aug 20, 2018

CircleCI Greenkeeper badge


This is my personal website/blog written using Lucky. Enjoy!

Setting up the project

  1. Install required dependencies
  2. Run bin/setup
  3. Run lucky dev to start the app


This is a bit of an experiment to be as pedantic about each and every bit of code as we can be realistically. The following checks are run (see also .circleci/config.yml):

  • Static analysis on crystal code with ./bin/ameba
  • Code formatting checks on crystal code with crystal tool format --check
  • Unit / Integration tests with crystal spec
  • Visual regression testing with npm test (using backstopjs)
    • To generate reference images on the mac, run docker run --rm -v $(pwd):/src hanneskaeufler/crystal-node-ruby:0.25.1 backstop --config=/src/backstop.js
    • Switch the host in backstop.json to host.docker.internal:5000, see docker guides
    • To export the local visual regression test database, run /Applications/ --no-acl --no-owner --data-only --table=posts blog_visual_test > blog_visual_test.dump
    • Also, duh:
  • CSS linting with npm run lint (using stylelint)
  • Pull request trigger a run of danger-js which tries to do the following:
    • Avoid "fixme/todo" comments in code
  • Accessibility testing with the chrome developer tools via npm run accessibility-test
  • Performance testing
  • Mutation testing

Learning Lucky

Lucky uses the Crystal programming language. You can learn about Lucky from the Lucky Guides.

Deploying manually

This project is continually deployed with a workflow on circleci. You can however deploy manually: Run git push heroku master. To export/import the database see:

Deploying locally with Docker

Start the database and app by running docker-compose up. Run docker-compose run app crystal -- db.migrate to setup the db.