Contributing & CLA
Help us build the engine.
Whether you are submitting a Rust pull request, filing a WordPress migration report, or packaging binaries, here is how we work together.
Plate II
Typecase
Engineering Standards
Code quality & PR workflow
Fork the repository, branch from
upstream/main, and run the full test and lint suite locally before opening a pull request:cargo test --workspace cargo clippy --workspace --all-targets -- -D warnings cargo fmt --check
1. Zero unchecked panics (.unwrap()) in production code
Request handlers, API endpoints, and database methods must return explicit
Result<T, AppError>. Never call .unwrap() or .expect() on user input or database rows.2. Parameterized SQL queries only
Never concatenate or format user strings into SQL statements. Always use
rusqlite::params![...] or named parameters.3. Prevent mutex reentrancy deadlocks
If a function already locks
self.conn.lock(), do not invoke other public methods on self that re-acquire the lock; pass &Connection to private helpers.4. Isolated in-memory testing & no customer data
Tests use
Database::new_in_memory(). Never commit exports, screenshots, names, emails, or domains from real customer sites; use reserved domains (example.com, *.example).5. Passing CI & Conventional Commits
All PRs must pass
cargo test --workspace, cargo clippy --workspace --all-targets -- -D warnings, and cargo fmt --check. PR titles use Conventional Commits (feat(scope): summary) for squash-merging.Contributor License Agreement (v1.0)
You keep your copyright
Daypress is available under the GNU AGPLv3 and a commercial license. To keep both possible, every contributor signs our one-time CLA on their first pull request. Everything we merge stays available under the AGPLv3.
How to sign on your first Pull Request
When you open your first pull request, the CLA bot posts a comment with a link to
CLA.md. To accept, reply to the PR with this exact sentence:$
I have read the CLA Document and I hereby sign the CLA