nightcity
NightCity
Stack
- Crystal 1.19.1+ — Language
- Kemal + kemal-controller — Web framework
- Celestite — Svelte 5 SSR (via Bun)
- Clear ORM — PostgreSQL models
- Mel — Background job queue with cron
- PostgreSQL — Database
Quick Start
Prerequisites
- Crystal >= 1.19.1
- Bun — for Celestite SSR
- PostgreSQL — or use Docker Compose
Setup
# Clone and install
git clone https://github.com/omarluq/nightcity.git
cd nightcity
shards install # Auto-runs bun install for Celestite
# Start Postgres (Docker Compose)
docker-compose up -d postgres
# Run migrations and seed
bin/hace db:reset
# Start the server
bin/hace server
# Visit http://localhost:3000
# Start the worker (in another terminal)
bin/hace worker
Development Commands
# Database
bin/hace db:migrate # Run migrations
bin/hace db:seed # Seed categories
bin/hace db:reset # Migrate + seed
# Server
bin/hace server # Start Kemal server
bin/hace worker # Start Mel worker
# Build
bin/hace build:server # Build server binary
bin/hace build:worker # Build worker binary
bin/hace build:all # Build all
# Docker
bin/hace docker:up # Start Docker Compose
bin/hace docker:down # Stop Docker Compose
bin/hace docker:logs # View logs
bin/hace docker:reset # Reset volumes
# Testing
bin/hace spec # Run specs
bin/hace format # Format code
bin/hace ameba # Run linter
bin/hace all # Format + lint + test
Project Structure
src/
├── controllers/ # Kemal controllers
├── jobs/ # Mel cron jobs (crawlers)
├── models/ # Clear ORM models
├── views/ # Celestite Svelte components
├── server.cr # Kemal app entry
└── worker.cr # Mel worker entry
config/ # App configuration
db/ # Migrations and seeds
License
MIT
Repository
nightcity
Owner
Statistic
- 0
- 0
- 0
- 0
- 16
- about 8 hours ago
- February 23, 2026
License
MIT License
Links
Synced at
Mon, 23 Feb 2026 09:50:27 GMT
Languages