sitr

Sitr

Crystal Status

Sitr is a high-performance hyperlocal search engine and business directory platform built with Crystal and Kemal.

🚀 Features

  • Fast & Efficient: Built on Crystal for native compiled performance.
  • Modern Architecture: Kemal, Slang templates, vanilla CSS custom properties.
  • Robust Role Hierarchy: Admin, Manager, Sales Rep, Verifier, and Business Owner.
  • Anti-Fraud Separation of Duties: Dedicated verification queue and cash handover ledger.
  • Media Optimization: Image processing and WebP conversion via libvips.
  • Infrastructure Ready: Rootless containerization (Alpine 3.21) with OpenTofu & GitLab CI/CD for Google Cloud Run.

🛠️ Tech Stack

  • Language: Crystal (>= 1.19.0)
  • Framework: Kemal
  • Database: MariaDB 11.4 / MySQL (via crystal-mysql & db)
  • Cache & Sessions: Valkey 8 / Redis
  • Templating: Slang
  • Testing: Spec + Selenium (Browser tests)

📦 Installation

Prerequisites

  • Crystal >= 1.19.0
  • MariaDB 11.4+ / MySQL 8.0+
  • Valkey 8+ / Redis 7.0+
  • libvips (for image processing)

Setup

# Install dependencies
shards install

# Setup database
make db-setup

# Seed data
make seed

💻 Development

Start the development server:

make dev

Visit http://localhost:3000.

Testing & Linting

make test         # Run unit & integration test suite
make test-browser # Run browser E2E tests (Firefox + Geckodriver)
make test-all     # Run complete test suite
make lint         # Run Ameba and Flaw static analysis
make format       # Format codebase with Crystal formatter

📚 Specifications & Documentation

Authoritative project specifications are located in docs/:

🚢 Deployment

Production deployments are automated via GitLab CI/CD on signed semantic release tags (v*.*.*).

See CI/CD Setup Guide for configuration instructions.

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

Repository

sitr

Owner
Statistic
  • 0
  • 0
  • 0
  • 0
  • 16
  • 13 days ago
  • January 31, 2026
License

MIT License

Links
Synced at

Thu, 20 Aug 2026 08:42:52 GMT

Languages