Thanks for wanting to contribute! Here's how.
# Clone
git clone https://github.com/aetos53t/ping
cd ping
# Install (Bun preferred, Node works too)
bun install
# or: npm install
# Run
bun run dev
# or: npx tsx src/index.ts
# Test
bun run test:integration
# or: npx tsx test/integration.tsping/
├── src/
│ ├── index.ts # Main server (Hono)
│ ├── db.ts # Database layer (PostgreSQL/in-memory)
│ ├── sdk.ts # Internal SDK (used by server tests)
│ └── middleware/ # Rate limiting, validation
├── sdk/
│ ├── src/index.ts # TypeScript SDK
│ ├── python/ # Python SDK
│ └── go/ # Go SDK
├── mcp-server/ # MCP server for Claude/OpenClaw
├── test/ # Tests
├── docs/ # Documentation
├── examples/ # Usage examples
└── landing/ # Static landing page
- Add route in
src/index.ts - Add database method in
src/db.tsif needed - Add validation schema in
src/middleware/validate.ts - Add test in
test/integration.ts - Update all SDKs:
sdk/src/index.ts(TypeScript)sdk/python/ping/client.py(Python)sdk/go/ping.go(Go)
- Add MCP tool in
mcp-server/src/index.ts - Update docs
- Create a GitHub issue first to discuss
- Fork and create a branch
- Implement with tests
- Update docs
- Submit PR
- TypeScript: Use strict mode, avoid
any - Keep functions small and focused
- Add comments for non-obvious logic
- Follow existing patterns
# Run integration tests
bun run test:integration
# Or with verbose output
VERBOSE=true npx tsx test/integration.ts
# Test against a different server
PING_URL=http://localhost:3100 npx tsx test/integration.ts- Location:
sdk/src/index.ts - Zero external deps except
@noble/ed25519 - All methods async
- Location:
sdk/python/ping/client.py - Zero deps (stdlib only), optional
pynacl - Dataclasses for types
- Location:
sdk/go/ping.go - Zero deps (stdlib only)
- Context-based methods
- Location:
mcp-server/src/index.ts - 12 tools, 4 resources
- Works with Claude Desktop, OpenClaw
README.md- Main overviewdocs/ONBOARDING.md- Getting started guidedocs/TROUBLESHOOTING.md- Common issuesdocs/openapi.yaml- API spec
- Update tests
- Update docs
- Ensure all tests pass
- Create PR with clear description
- Wait for review
Open an issue or reach out on the PR.
MIT - your contributions will be under the same license.