* main: (112 commits) Switch from report-only to actually using Sec-Fetch-Site for CSRF protection Add minimal contribution section Remove configure-lb scripts (moved to fizzy-saas gem) Test Update to latest gem Moved to sentry Moving this to shipyard Add yabeda metrics check only in SaaS mode Format Add gitleaks from main We need the check in both test/code Move yabeda/prometheus stuff to the gem Move sentry to engine Add note about VAPID Only staff can access beta/staging Review README Review README Initial README and LICENSE Style copy Add note on CRUD controllers ...
Fizzy
This is the source code of Fizzy, the Kanban tracking tool for issues and ideas by 37signals.
Development
Setting up
First, get everything installed and configured with:
bin/setup
bin/setup --reset # Reset the database and seed it
And then run the development server:
bin/dev
You'll be able to access the app in development at http://fizzy.localhost:3006.
To login, enter david@37signals.com and grab the verification code from the browser console to sign in.
Running tests
For fast feedback loops, unit tests can be run with:
bin/rails test
The full continuous integration tests can be run with:
bin/ci
Database configuration
Fizzy supports SQLite (default, recommended for most scenarios) and MySQL. You can switch adapters with the DATABASE_ADAPTER environment variable.
DATABASE_ADAPTER=mysql bin/rails
DATABASE_ADAPTER=mysql bin/test
bin/ci # Runs tests against both SQLite and MySQL
Outbound Emails
You can view email previews at http://fizzy.localhost:3006/rails/mailers.
You can enable or disable letter_opener to open sent emails automatically with:
bin/rails dev:email
Under the hood, this will create or remove tmp/email-dev.txt.
Deployment
We recommend Kamal for deploying Fizzy. This project comes with a vanilla Rails template, you can find our production setup in fizzy-saas.
Web Push Notifications
Fizzy uses VAPID (Voluntary Application Server Identification) keys to send browser push notifications. You'll need to generate a key pair and set these environment variables:
VAPID_PRIVATE_KEYVAPID_PUBLIC_KEY
Generate them with the web-push gem:
vapid_key = WebPush.generate_key
puts "VAPID_PRIVATE_KEY=#{vapid_key.private_key}"
puts "VAPID_PUBLIC_KEY=#{vapid_key.public_key}"
SaaS gem
37signals bundles Fizzy with fizzy-saas, a companion gem that links Fizzy with our billing system and contains our production setup.
This gem depends on some private git repositories and it is not meant to be used by third parties. But we hope it can serve as inspiration for anyone wanting to run fizzy on their own infrastructure.
Contributing
We welcome contributions! Please read our style guide before submitting code.
License
Fizzy is released under the O'Saasy License.