Files
fizzy/docs/development.md
Mike Dalessio e70047ca0f Default development environment to app.fizzy.localhost (#2822)
Using fizzy.localhost causes CORS errors when using minio for Active
Storage because the minio endpoint is at minio.fizzy.localhost — a
sibling subdomain, not a subdomain of the app host. Switching to
app.fizzy.localhost makes both hosts subdomains of fizzy.localhost,
resolving the CORS issue. See #2814 for the related minio CORS fix.

fizzy.localhost will continue to work if people want to use it, but all
docs and scripts have been updated to point to app.fizzy.localhost.
2026-04-09 12:43:01 -04:00

81 lines
2.1 KiB
Markdown

## Development
### Setting up
First, get everything installed and configured with:
```sh
bin/setup
bin/setup --reset # Reset the database and seed it
```
And then run the development server:
```sh
bin/dev
```
You'll be able to access the app in development at http://app.fizzy.localhost:3006.
To login, enter `david@example.com` and grab the verification code from the browser console to sign in.
### Web Push Notifications
Fizzy uses VAPID (Voluntary Application Server Identification) keys to send browser push notifications. For notifications to work in development 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:
```ruby
vapid_key = WebPush.generate_key
puts "VAPID_PRIVATE_KEY=#{vapid_key.private_key}"
puts "VAPID_PUBLIC_KEY=#{vapid_key.public_key}"
```
### Running tests
For fast feedback loops, unit tests can be run with:
```sh
bin/rails test
```
The full continuous integration tests can be run with:
```sh
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:
```sh
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://app.fizzy.localhost:3006/rails/mailers.
You can enable or disable [`letter_opener`](https://github.com/ryanb/letter_opener) to open sent emails automatically with:
```sh
bin/rails dev:email
```
Under the hood, this will create or remove `tmp/email-dev.txt`.
## SaaS gem
37signals bundles Fizzy with [`fizzy-saas`](https://github.com/basecamp/fizzy/tree/main/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.