Thank you for your interest in contributing to Cpplify! This document provides guidelines for contributing.
- Node.js 18+
- Docker 20.10+
- CMake 3.20+ (for kernel development)
- Clang 15+ (for kernel development)
# Clone the repository
git clone https://github.com/your-org/cpplify.git
cd cpplify
# Start the development environment with hot-reload
docker compose -f docker-compose.dev.yml up --watch
# Frontend development
cd frontend
npm install
npm run dev
# Kernel development (requires C++ toolchain)
cd kernel
mkdir build && cd build
cmake ..
makeThe project is organized into independent modules:
| Module | Directory | Description |
|---|---|---|
| Frontend | frontend/ |
React notebook UI |
| Kernel | kernel/ |
C++ execution engine |
| Docker | docker/ |
Container platform |
Before starting work, ensure there's an issue describing the change.
We follow a strict naming convention for branches: type/module/description
Types:
feature: New features or significant improvementsbugfix: Fixes for bugshotfix: Critical fixes for productiondocs: Documentation only changesrefactor: Code restructuring without checking behaviorstyle: Formatting, missing semi-colons, etc; no production code changetest: Adding missing tests, refactoring testschore: Updating build tasks, package manager configs, etcci: CI configuration changes
Examples:
feature/frontend/add-dark-mode
bugfix/kernel/memory-leak
docs/readme/update-installation
We follow the Conventional Commits specification. The structure is:
<type>(<scope>): <description>
Types:
feat: A new featurefix: A bug fixdocs: Documentation only changesstyle: Changes that do not affect the meaning of the code (white-space, formatting, etc)refactor: A code change that neither fixes a bug nor adds a featureperf: A code change that improves performancetest: Adding missing tests or correcting existing testsbuild: Changes that affect the build system or external dependenciesci: Changes to our CI configuration files and scriptschore: Other changes that don't modify src or test filesrevert: Reverts a previous commit
Examples:
feat(frontend): add cell reordering capability
fix(kernel): resolve compilation timeout issue
docs: update installation guide in README
Here is a complete example of how to contribute:
-
Fork and Clone:
git clone https://github.com/your-username/cpplify.git cd cpplify -
Create a Branch: Assuming you are adding a new Markdown export feature to the frontend.
git checkout -b feature/frontend/markdown-export
-
Make Changes: Modify the code...
-
Commit Changes:
git add . git commit -m "feat(frontend): add markdown export functionality"
-
Push and Create Pull Request:
git push origin feature/frontend/markdown-export
Go to GitHub and open a Pull Request against the
mainbranch.
- Reference the issue number (e.g., "Closes #123")
- Include tests for new features
- Update documentation as needed
- Request review from the module owner
- ESLint + Prettier configuration in
frontend/ - Run
npm run lintbefore committing
- Follow Google C++ Style Guide
- clang-format configuration in
kernel/
# Frontend tests
cd frontend && npm test
# Kernel tests
cd kernel/build && ctest
# Integration tests
./scripts/test-integration.shFor questions about specific modules, contact the respective owners:
- Frontend - [TBD]
- Kernel - [TBD]
- Docker - [TBD]
By contributing, you agree that your contributions will be licensed under the MIT License.