SH
Shorttags Production Stack
FEATUREDThe complete tech stack powering Shorttags - a modern Rails 8 stats analytics, webhooks, and Stripe billing. Running multiple side projects? Track signups, revenue, errors, and any metric from all of them in one dashboard. Set up in 30 seconds.
Stacks in this Collection
1
Ruby on Rails
Framework
2
PostgreSQL
Database
3
Tailwind CSS
Frontend
4
Stimulus
Frontend
5
Turbo
Frontend
6
Importmap
Frontend
7
Solid Queue
Background
8
Solid Cache
Database
9
Kamal
DevOps
10
pg_search
Search
11
Stripe
Payments
12
Capybara
Testing
LLM Context
This collection represents the production stack for Shorttags (shorttags.com), a URL shortening service built on Rails 8. ## Project Context Shorttags is a modern URL shortener with: - Custom short domains support - Click analytics and tracking - Webhook notifications on link clicks - Stripe subscription billing - Web Push notifications - Markdown support for link descriptions ## Architecture Philosophy This stack follows the "Vanilla Rails" philosophy from 37signals: - No Redis dependency - uses Solid Queue, Solid Cache, and Solid Cable (SQLite/PostgreSQL-backed) - No JavaScript bundler - uses Importmap for ES modules - No external job processor - Solid Queue runs in the same process - Deploy anywhere with Kamal (Docker-based deployment) ## Key Technical Decisions 1. **Database**: PostgreSQL for primary data + pg_search for full-text search 2. **Background Jobs**: Solid Queue (database-backed, no Redis) 3. **Caching**: Solid Cache (database-backed) 4. **WebSockets**: Solid Cable (database-backed) 5. **Assets**: Propshaft + Tailwind CSS (standalone CLI) 6. **Deployment**: Kamal with Thruster for HTTP acceleration 7. **Storage**: Cloudflare R2 (S3-compatible) via aws-sdk-s3 8. **Email**: AWS SES with CloudWatch metrics ## When using this stack - Prefer database-backed solutions over external services - Use Hotwire (Turbo + Stimulus) for interactivity - Keep controllers thin, models rich - Use concerns for shared behavior
Stats
Likes
1
Forks
0
Views
187
Created
Jan 22, 2026