We love your input! We want to make contributing to Zeal as easy and transparent as possible, whether it's:
- Reporting a bug
- Discussing the current state of the code
- Submitting a fix
- Proposing new features
- Becoming a maintainer
We use GitHub to host code, to track issues and feature requests, as well as accept pull requests.
- Fork the repo and create your branch from
main. - If you've added code that should be tested, add tests.
- If you've changed APIs, update the documentation.
- Ensure the test suite passes.
- Make sure your code lints.
- Issue that pull request!
- Update the README.md with details of changes to the interface, if applicable.
- Update the docs/ with any new features or changes.
- The PR will be merged once you have the sign-off of at least one maintainer.
In short, when you submit code changes, your submissions are understood to be under the same Apache License 2.0 that covers the project. Feel free to contact the maintainers if that's a concern.
Report bugs using GitHub's issue tracker
We use GitHub issues to track public bugs. Report a bug by opening a new issue; it's that easy!
Great Bug Reports tend to have:
- A quick summary and/or background
- Steps to reproduce
- Be specific!
- Give sample code if you can
- What you expected would happen
- What actually happens
- Notes (possibly including why you think this might be happening, or stuff you tried that didn't work)
- Node.js 20+
- Rust 1.75+ (for CRDT server)
- PostgreSQL 14+
- Redis 6+
-
Clone the repository:
git clone https://github.com/offbit-ai/zeal.git cd zeal -
Install dependencies:
npm install
-
Set up environment variables:
cp .env.example .env cp .env.local.example .env.local
-
Set up the database:
createdb zeal_db psql zeal_db < init.sql -
Build the CRDT server:
cd crdt-server cargo build cd ..
-
Start development servers:
npm run dev
- We use ESLint and Prettier for code formatting
- Run
npm run lintto check your code - Run
npm run formatto auto-format
- Follow standard Rust conventions
- Run
cargo fmtbefore committing - Run
cargo clippyto check for common mistakes
# Unit tests
npm run test
# E2E tests
npm run test:e2e
# All tests
npm run test:allcd crdt-server
cargo testzeal/
├── app/ # Next.js app directory
├── components/ # React components
├── services/ # API services
├── store/ # State management
├── types/ # TypeScript types
├── utils/ # Utility functions
├── crdt-server/ # Rust CRDT server
└── docs/ # Documentation
The core team reviews Pull Requests on a regular basis. During code review, we look for:
- Correctness: Does the code do what it's supposed to?
- Complexity: Is the code more complex than it needs to be?
- Consistency: Does the code follow our conventions?
- Coverage: Is the code adequately tested?
- Documentation: Are complex parts documented?
- Discord [coming soon]
- Blog [coming soon]
- Newsletter [coming soon]
By contributing, you agree that your contributions will be licensed under its Apache License 2.0.