Thank you for your interest in contributing to REPRAM! We welcome contributions from the community and are grateful for any help you can provide.
By participating in this project, you agree to maintain a respectful and collaborative environment. We expect all contributors to:
- Be respectful and inclusive
- Accept constructive criticism gracefully
- Focus on what's best for the project and community
- Show empathy towards other contributors
- Fork the repository to your GitHub account
- Clone your fork locally:
git clone https://github.com/YOUR_USERNAME/REPRAM.git cd REPRAM - Add upstream remote:
git remote add upstream https://github.com/TickTockBent/REPRAM.git
- Create a feature branch:
git checkout -b feature/your-feature-name
-
Read the documentation:
- Core Principles - MUST READ before contributing
- Project Overview
-
Check existing issues to see if someone's already working on it
-
Open an issue to discuss significant changes before implementing
Go (node binary):
- Follow Effective Go guidelines
- Use
gofmtfor code formatting - Add comments for exported functions and types
TypeScript (MCP server / unified node):
- Strict TypeScript (
strict: truein tsconfig) - Use descriptive variable names
- Prefer interfaces over type aliases for public contracts
- No
anyunless interfacing with untyped external APIs
Both languages:
- Keep functions focused and small
- Test new functionality with unit tests
- Write tests for new functionality
- Ensure all tests pass:
make test # Go (83 tests) cd repram-mcp && npm test # TypeScript (248 tests)
- Include both unit and integration tests where appropriate
- Use clear, descriptive commit messages
- Follow conventional commits format:
feat: add new gossip protocol implementation fix: resolve memory leak in storage cleanup docs: update API documentation test: add tests for TTL enforcement refactor: simplify node initialization - Keep commits atomic and focused
-
Update your fork:
git fetch upstream git rebase upstream/main
-
Run all checks locally:
make build make test -
Push to your fork:
git push origin feature/your-feature-name
-
Create Pull Request:
- Use a clear, descriptive title
- Reference any related issues
- Describe what changed and why
- Include testing instructions
- Go 1.22 or higher
- Node.js 18+ (for MCP server development)
- Make
- Git
- Docker (optional, for containerized testing)
# Clone and setup
git clone https://github.com/YOUR_USERNAME/REPRAM.git
cd REPRAM
# Build and test the Go node
make build
make test
# Build and test the TypeScript node / MCP server
cd repram-mcp && npm install && npm run build && npm test
# Start a Go node
make run
# Or start a TypeScript node (standalone HTTP server)
cd repram-mcp && npx repram-mcp --standaloneWhen contributing, please maintain:
- Zero-knowledge nodes - Nodes never interpret data
- Privacy through transience - The network is safe because it forgets; encryption is the client's concern
- Ephemeral by design - Everything has a TTL, expired data is permanently gone
- Permissionless reads - No auth at node level
- Single binary - One
cmd/repramentry point, cluster-capable by default
- Open a GitHub Issue
- Check existing Discussions
By contributing, you agree that your contributions will be licensed under the same license as the project (see LICENSE file).