Vol. 0 · Early preview (v0.1)
Built in public · Rust + SQLite · AGPLv3 | Commercial
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
Plate II
Typecase
Neopress art collection, 2026
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

Neopress 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

Ready to pick up your first issue?