A free and open-source website for playing fast-paced chess puzzles!
If you want to play random puzzles each time:
- Three - three minutes, three lives, three hints.
- Haste - correct moves gain time, mistakes lose time.
These puzzles change daily:
For more ways to play:
- Repetition - solve every puzzle quickly and precisely to unlock the next level
- Infinity - play through endless puzzles and set your own difficulty
The backend uses Rails 6, Ruby 2.7.3, and Node 12.x LTS. Postgres 9 is used for the database. Chess puzzle data is imported into the database from JSON data files.
The frontend uses a modified version of Chessground for the interactive chessboard and chess.js for chess logic. User interfaces are implemented with Vue 3 and some legacy Backbone.js code. Webpack 4 and Sprockets 4 are both used for asset compilation.
First make sure your dev environment is set up for Ruby and Typescript development. You'll need Yarn and maybe a Ruby version manager like chruby or RVM. Then from within your git clone of the codebase, these steps will get you a dev environment with the chess puzzles used on the site:
bundle install # install ruby gems
yarn install # install node_modules
rails db:create # set up an empty postgres db: blitz-tactics_development
rails db:migrate # sets up the db schema
yarn lichess:puzzles:fetch # downloads ~125k lichess v1 puzzles as JSON files
yarn lichess:puzzles:import # import puzzles from JSON into the db (15+ min)
yarn lichess:puzzles:check # should confirm the puzzles were loaded
yarn blitz:game_modes:fetch # downloads puzzles used on blitztactics.com as JSON files
yarn blitz:game_modes:import # imports game modes puzzles into the db (6+ min)
yarn blitz:game_modes:check # prints the number of puzzles in the db for each game mode
- Run a rails dev server:
rails s
- Run a webpack dev server:
yarn dev
or./bin/webpack-dev-server
Go to http://localhost:3000/
and you'll see the Blitz Tactics homepage if all went well.