Contributing to Sequin
July 11, 2025 ยท View on GitHub
Thank you for your interest in contributing to Sequin! This document provides guidelines for contributing to the project.
Development setup
Prerequisites
- Elixir 1.18+
- PostgreSQL 14+
- GitHub CLI (
gh) - Node.js (for frontend assets)
- Go (only necessary for CLI development)
Getting started
-
Fork and clone the repository
-
Start PostgreSQL and Redis with docker compose
docker compose --profile databases up -dIf you encounter an error about the default PostgreSQL user "postgres" not existing, you can create the user with:
createuser -s postgres -
Install Elixir, Erlang, and Node.js through
asdfInstall and configureasdfif you don't have it already: https://asdf-vm.com/guide/getting-started.htmlOn Mac, you can use Homebrew:
brew install asdfAdd the following to your shell configuration file (e.g.,
.zshrcor.bashrc) to configureasdf:. /opt/homebrew/opt/asdf/libexec/asdf.shNow you can use
asdfto install the necessary versions of Elixir, Erlang, and Node.js:asdf plugin add erlang asdf plugin add elixir asdf plugin add nodejsRun this in the root of the repository to use our
.tool-versionsfile:asdf install -
Run the setup script
mix setup -
Start the development server:
make dev
The app will be available at http://localhost:4000.
Sequin uses LiveView + LiveSvelte for its frontend. As a monolith, the entire app is available at http://localhost:4000.
Development workflow
- Create a new branch for your changes
- Make your changes
- Run tests:
# Run Elixir tests mix test - Push your changes and open a pull request
- Run
make signoffto verify your changes pass all checks
Signoff process
For external contributors
When you submit a pull request, GitHub Actions will automatically run a series of checks.
After your PR passes, we will review your changes and hopefully merge!
If you need to reach us sooner, the fastest way is through our Discord server or Slack community.
For core contributors
Core contributors with repository access should run the signoff script before merging:
# From the project root
./scripts/signoff.sh
This script:
- Checks code formatting
- Performs compilation with warnings as errors
- Runs all tests
- Performs linting and other checks
- Updates the GitHub commit status with a signoff
Code style
- Elixir: Follow the standard Elixir formatting (enforced by
mix format) - TypeScript/JavaScript: Use Prettier (enforced by the signoff process)
- Go: Use standard Go formatting (enforced by
go fmt) - SQL: Use lowercase for keywords
Documentation
- Update relevant documentation in the
docs/directory - Follow the style guide for documentation
- Run the docs locally using
make docs
Getting help
- Join our Discord server or Slack community for questions and discussions
- Open an issue for bugs or feature requests
- Tag maintainers in your PR if you need help
License
By contributing to Sequin, you agree that your contributions will be licensed under the MIT License.