Adrien Maston 7a5a3c91f8 Merge branch 'main' into mobile-app/scoped-stylesheets
* main: (82 commits)
  We can remove ad-hoc handling now that we rely on page refreshes in the card perma
  Only broadcast when the preview changes, use the _later variant for the broadcast, add tests
  Update pinned cards when the title changes
  Rename to be more consistent
  Beautify board watchers list (#1946)
  Add missing data-attr on public board
  Fix hotkey text size on tiny viewports
  Use buil-in support for :self in Stimulus
  Save a bunch of invocations on morph events from children elements
  Fix: memoization was showing stale values when morphing
  GitHub actions: limit GITHUB_TOKEN permissions (#1933)
  Validate Identity email address
  Drop defunct user creation script
  Golden cards should be placed at the top
  Animate the column height with a stimulus controller so that it does not depend to the server to update when you D&D
  mise: respect .ruby-version
  Support custom validation messages
  Move css bit to the new blank slates CSS
  Prevent board names with only spaces and show validation message
  Keep the column color when D&D cards
  ...
2025-12-05 12:20:05 +01:00
2025-12-04 13:32:47 +00:00
2025-12-03 15:40:58 -05:00
2024-06-21 13:19:56 +01:00
2025-12-02 13:35:58 -08:00
2025-12-04 10:42:34 -08:00
2024-06-21 13:19:56 +01:00
2024-06-21 13:19:56 +01:00
2024-06-21 13:19:56 +01:00
2024-06-21 13:19:56 +01:00
2025-11-21 09:15:19 +00:00
2025-12-04 09:59:17 -08:00
2025-11-21 09:15:19 +00:00
2025-10-09 13:24:01 -07:00
2025-12-03 15:40:58 -05:00
2025-11-25 14:09:53 -08:00
2025-12-02 20:37:58 +01:00
2025-12-02 18:50:54 +01:00
2025-12-01 15:23:26 +00:00
2025-11-28 15:53:58 +01:00
2024-06-21 16:42:48 +01:00
2025-12-03 15:40:58 -05:00

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@example.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 works with SQLite by default and supports MySQL too. You can switch adapters with the DATABASE_ADAPTER environment variable. For example, to develop locally against MySQL:

DATABASE_ADAPTER=mysql bin/setup --reset
DATABASE_ADAPTER=mysql bin/ci

The remote CI pipeline will run 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_KEY
  • VAPID_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.

S
Description
No description provided
Readme 62 MiB
Languages
Ruby 67.8%
HTML 14.6%
CSS 10.8%
JavaScript 5.6%
Shell 0.9%
Other 0.3%