Thank you for your interest in contributing to Sequin! This document provides guidelines for contributing to the project.
- Elixir 1.18+
- PostgreSQL 14+
- GitHub CLI (
gh) - Node.js (for frontend assets)
- Go (only necessary for CLI development)
-
Fork and clone the repository
-
Start PostgreSQL and Redis with docker compose
docker compose up -d
If you encounter an error about the default PostgreSQL user "postgres" not existing, you can create the user with:
createuser -s postgres
-
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.
- 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
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.
Core contributors with repository access should run the signoff script before merging:
# From the project root
./scripts/signoff.shThis 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
- 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
- Update relevant documentation in the
docs/directory - Follow the style guide for documentation
- Run the docs locally using
make docs
- Join our Discord server for questions and discussions
- Open an issue for bugs or feature requests
- Tag maintainers in your PR if you need help
By contributing to Sequin, you agree that your contributions will be licensed under the MIT License.