Thank you for your interest in contributing to dpkit! This document provides guidelines and instructions for contributing to this project.
Project is a monorepo with the following packages:
@dpkit/desktop: Desktop application@dpkit/engine: OpenAPI-based service@dpkit/library: Node library@dpkit/mobile: Mobile application@dpkit/terminal: Terminal application@dpkit/toolbox: Visual toolbox@dpkit/website: Web application
Tip
For CLI compilation and development, we recommend using Bun. For example, to run CLI in dev bun cli/main.ts
- Node.js: v24.0.0 or higher
- PNPM: v10.0.0 or higher
-
Clone the repository
git clone https://github.com/yourusername/dpkit.git dpkit cd dpkit -
Install dependencies
pnpm install
We use Biome for linting and formatting, and TypeScript for type checking:
-
Lint: Check for code issues
pnpm run lint
-
Format: Auto-fix formatting issues
pnpm run format
-
Type Check: Verify TypeScript types
pnpm run type -
Comprehensive Check: Run lint and type checking
pnpm run check
Tests are located in __spec__ directories and use Vitest:
-
Run All Tests: (includes linting and type checking)
pnpm test -
Run Tests Only: (without linting/type checking)
pnpm run spec
-
Run a Specific Test:
pnpm exec vitest run library/aspect/__spec__/findTask.ts
Update all dependencies to their latest versions:
pnpm run bump- Use TypeScript with strict type checking
- Follow ES modules pattern (
import/export) - Tests should be placed in
__spec__directories - Use semicolons as needed (not required everywhere)
- Use arrow function parentheses as needed (omitted for single parameters)
When adding new functionality:
- Add it to the appropriate package first (
core,cli, orcron) - Ensure it's properly exported from that package
- No additional work is needed for the meta-package as it automatically re-exports everything
- Create a feature branch (
git checkout -b feature/your-feature) - Make your changes with appropriate tests
- Ensure the code passes all checks:
pnpm test - Commit your changes with a descriptive message
- Submit a pull request
By contributing to dpkit, you agree that your contributions will be licensed under the project's license.
Thank you for your contribution!