A Rails 8 starter template with everything pre-wired — PostgreSQL, Tailwind, Hotwire, GitHub OAuth, Solid Queue, and one-click Render deployment.
No Redis. No Sprockets. No wasted afternoon on setup.
| Layer | Choice |
|---|---|
| Framework | Rails 8.1 |
| Database | PostgreSQL |
| Assets | Propshaft + Importmap |
| CSS | Tailwind CSS |
| Frontend | Hotwire (Turbo + Stimulus) |
| Auth | OmniAuth GitHub |
| Jobs | Solid Queue (no Redis) |
| Cache | Solid Cache |
| Testing | RSpec + FactoryBot + Faker + Shoulda Matchers + SimpleCov |
| Linting | Rubocop (rails-omakase) |
| Deploy | Render.com (render.yaml included) |
git clone https://github.com/tuxnotfound/rails-zero myapp
cd myapp
cp .env.example .envFill in your credentials in .env, then:
bundle install
rails db:create db:migrate
bin/devVisit http://localhost:3000.
- Go to github.com/settings/developers → New OAuth App
- Set Homepage URL to
http://localhost:3000(or your production URL) - Set Authorization callback URL to
http://localhost:3000/auth/github/callback - Copy the Client ID and Secret into your
.env
For production, create a separate OAuth app with your real domain.
See .env.example for all available variables. The only required ones are:
GITHUB_CLIENT_ID=your_client_id
GITHUB_CLIENT_SECRET=your_client_secret
bundle exec rspecCoverage report is generated in coverage/ via SimpleCov.
bundle exec rubocop
bundle exec rubocop -a # auto-correct safe offensesThe repo includes a render.yaml that provisions a web service + PostgreSQL database.
- Push to GitHub
- Go to render.com → New → Blueprint
- Connect your repo
- Set the following env vars in the Render dashboard:
RAILS_MASTER_KEY(fromconfig/master.key)GITHUB_CLIENT_IDGITHUB_CLIENT_SECRET
That's it.
docker build -t myapp .
docker run -p 3000:3000 myappOpinionated but not precious. This is the stack I reach for on every project — boring in the best way. Nothing clever, nothing that will bite you in a year.
If you want to swap something out, it's Rails. You know where things live.
MIT