Contributing
Learn how to contribute to the Portabase ecosystem.
We love contributions! Portabase is an open-source project, and we welcome help with the Dashboard, the Agent, and the CLI.
Whether you want to fix a bug, add a new feature, or improve the documentation, here is how you can get started with development for each component.
Dashboard Development
Contribute to the Next.js web interface. Learn how to run it locally and manage the database.
Agent Development
Improve the Rust-based agent that handles backups and communication with the dashboard.
CLI Development
Help enhance the Python command-line tool that orchestrates the entire ecosystem.
E2E Tests
Maintain the shared end-to-end test suite, reused to validate both the Dashboard and the Agent.
Dashboard development
Run the Dashboard from source:
Clone the repository
git clone https://github.com/Portabase/portabase.git
cd portabaseInstall dependencies
pnpm installEnvironment configuration
Copy the example environment file and adjust values if necessary:
cp .env.example .envStart in development mode
make upAgent development
Set up the agent in a development environment:
Clone the repository
git clone https://github.com/Portabase/agent.git
cd agentBuild the agent
cargo buildStart in development mode
docker compose upSee the development requirements for the toolchain versions.
General Workflow
- Fork the repository you want to contribute to.
- Clone your fork locally.
- Create a branch for your changes.
- Commit your work with clear and concise messages.
- Run the tests and make sure they pass, including the end-to-end tests where relevant (see Testing below).
- Push to your fork and open a Pull Request.
Thank you for helping make Portabase better!
Testing
Portabase ships with an automated test pipeline that runs on every pull request.
The end-to-end (E2E) tests are maintained in a dedicated repository, Portabase/e2e-tests, rather than inside the main project repositories. Keeping them separate makes them easier to maintain and lets us reuse the same suite for agent-side testing.
Dashboard
Currently relies exclusively on end-to-end tests. Unit tests are not yet included.
Agent
Includes unit tests run on every pull request with a code coverage report, alongside the end-to-end tests.
Useful Development Commands
To make managing the development environment easier, make commands are available to handle authentication provider data.
Seed authentication test data
This command loads test data for Keycloak and Pocket ID. It is an alias for make seed-keycloak and make seed-pocket.
make seed-authSeed Keycloak test data
Resets and loads test data for Keycloak from seeds/keycloak/*.json.
make seed-keycloakSeed Pocket ID test data
Resets and loads test data for Pocket ID from seeds/pocket-id/portabase.zip.
make seed-pocketExport Keycloak data
Exports Keycloak configuration and users to seeds/keycloak/.
make export-keycloakExport Pocket ID data
Exports Pocket ID data to seeds/pocket-id/portabase.zip.
make export-pocketGenerate Pocket ID access token
Generates a one-time access token for the Pocket ID administrator.
make pocket-tokenLast updated on