sitr
Sitr (Site Imager Tool & Repository)
Sitr is a high-performance web application built with Crystal and Kemal, designed for managing business listings and media.
🚀 Features
- Fast & Efficient: Built on Crystal for native performance.
- Modern Stack: Kemal, Slang templates, Tailwind CSS.
- Robust Auth: Secure authentication and authorization (Role-based).
- Media Management: Image processing and optimization.
- Infrastructure: Container-ready (Alpine-based) with GitLab CI/CD integration.
🛠️ Tech Stack
- Language: Crystal (>= 1.19.0)
- Framework: Kemal
- Database: MySQL (via
crystal-mysql) - Cache: Redis (Valkey)
- Templating: Slang
- Testing: Spec + Selenium (Browser tests)
📦 Installation
Prerequisites
- Crystal >= 1.19.0
- MySQL 8.0+
- Redis 7.0+
libvips(for image processing)
Setup
# Install dependencies
shards install
# Setup database
make db-up
# Seed data
make seed
💻 Development
Start the development server with auto-reloading:
make dev
Visit http://localhost:3000.
Testing
Run the test suite:
make test # Unit tests
make test-browser # Browser integration tests
make test-all # All tests
Local container testing:
make container-build
make container-run
📚 Documentation
Generate API documentation:
make docs
The documentation is available in docs/technical/api.
Technical documentation can be found in docs/technical/:
🚢 Deployment
Deployment is handled via GitLab CI/CD.
- Staging: Deployed automatically from feature branches.
- Production: Deployed when a semantic version tag (e.g.,
v1.0.0) is pushed.
See CI/CD Setup for details.
🤝 Contributing
- Fork it (https://gitlab.com/evalinux/sitr/fork)
- Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin my-new-feature) - Create a new Merge Request
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
Repository
sitr
Owner
Statistic
- 0
- 0
- 0
- 0
- 15
- 20 days ago
- January 31, 2026
License
MIT License
Links
Synced at
Wed, 11 Feb 2026 05:04:49 GMT
Languages