README.md

June 29, 2026 ยท View on GitHub

shards.info

Built with Crystal Crystal CI Oxc

View of all repositories on Github and Gitlab that have Crystal code in them.

SWUbanner

Installation

  • Install Crystal
  • Clone this repository
  • Install dependencies shards install
  • Rename .env.example to .env, and set variables.
  • Run Web server as crystal src/web.cr

Development

psql -c 'CREATE DATABASE shards_info_development;' -U postgres
crystal src/cli.cr migrate

Database Operations (Makefile)

We use a Makefile to automate database schema dumps and restoration. Available commands:

Dump database schema and migrations

make db-dump

This dumps both the schema and migration metadata (__lustra_metadatas table) into src/db/structure.sql.

Dump schema only

make db-dump-schema

Dump migrations metadata only

make db-dump-migrations

Restore from dump

make db-restore

Using a different database

make db-dump DB_NAME=your_database_name
make db-restore DB_NAME=your_database_name

View all available commands

make help

Frontend

Install depencencies:

npm install

After modifications run npm run build, npm run oxlint, and npm run oxfmt.

Specs

Specs create and migrate their own PostgreSQL test database via spec/initdb.cr. The default connection settings are:

DATABASE_URL=postgres://postgres:postgres@localhost/shards_info_test
POSTGRES_HOST=localhost
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
POSTGRES_DB=postgres

Redis must also be running locally for cache/session/Mosquito/Defense dependencies. The app uses these defaults in test:

REDIS_URL=redis://localhost:6379/0
SESSION_REDIS_URL=redis://localhost:6379/1
MOSQUITO_REDIS_URL=redis://localhost:6379/2
DEFENSE_REDIS_URL=redis://localhost:6379/3

Run specs with:

KEMAL_ENV=test crystal spec

To only recreate the test database:

KEMAL_ENV=test crystal spec/initdb.cr

Special thanks

Contributing

  1. Fork it (https://github.com/mamantoha/shards-info/fork)
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Contributors

  • mamantoha Anton Maminov - creator, maintainer