Contributing to Massu AI
Thank you for your interest in contributing to Massu AI! This guide covers everything you need to know to make your first contribution.
Ways to Contribute
Report Issues
Found a bug or have a feature idea?
- Check existing issues first
- Open a new issue with a clear title and description
- Include steps to reproduce for bugs
- Label appropriately (bug, enhancement, documentation)
Improve Documentation
Documentation improvements are always welcome:
- Fix typos or unclear explanations
- Add examples or use cases
- Translate documentation
- Improve code samples
Submit Code
Ready to write code?
- Fork the repository
- Create a feature branch (
git checkout -b feature/your-feature) - Make your changes
- Run the test suite (
npm test) - Submit a pull request
Development Setup
Prerequisites
- Node.js 18+
- npm 9+
- Git
Getting Started
# Clone your fork
git clone https://github.com/your-username/massu.git
cd massu
# Install dependencies
npm install
# Run tests
npm test
# Type check
cd packages/core && npx tsc --noEmit
# Build hooks
cd packages/core && npm run build:hooksEnvironment Variables
The main configuration lives in massu.config.yaml at the project root. This config file controls:
toolPrefix— Prefix for all MCP tool names (default:massu)project.name— Your project's display nameproject.root— Project root directory (useautoto detect)paths.source— Source code directory (default:src)domains— Domain boundary definitions for architecture validationrules— Pattern-specific coding rules
For the website (Cloud Dashboard), copy website/.env.example to website/.env.local and configure:
NEXT_PUBLIC_SITE_URL— Your site URL (e.g.,http://localhost:3000)NEXT_PUBLIC_SUPABASE_URL— Supabase project URLNEXT_PUBLIC_SUPABASE_ANON_KEY— Supabase anonymous keySUPABASE_SERVICE_ROLE_KEY— Supabase service role key (server-only)STRIPE_SECRET_KEY— Stripe secret key (server-only)STRIPE_WEBHOOK_SECRET— Stripe webhook signing secretNEXT_PUBLIC_STRIPE_PRICE_*— Stripe price IDs for subscription tiers
See website/.env.example for the complete list with descriptions.
Project Structure
massu/
massu.config.yaml # Project configuration (toolPrefix, domains, rules)
packages/
core/ # MCP server (main package)
src/
server.ts # Server entry point
tools.ts # Tool definitions & routing
config.ts # Configuration loader (reads massu.config.yaml)
db.ts # Database connections
memory-db.ts # Memory database
hooks/ # Lifecycle hooks (compiled with esbuild)
__tests__/ # Test files (vitest)
website/ # Next.js marketing site + Cloud Dashboard
src/
app/ # App router pages
lib/ # Shared utilities (auth, stripe, supabase)
components/ # React components
docs/ # Documentation and plans
scripts/ # Utility scriptsCoding Standards
- TypeScript strict mode — No
anytypes - ESM imports — Use
.tsextensions inpackages/core - Config-driven — Use
getConfig()fromconfig.ts, never hardcode project-specific values - Test everything — Add tests for new features
- Pattern compliance — Run
bash scripts/massu-pattern-scanner.shbefore committing
Pull Request Guidelines
- One feature per PR — Keep changes focused
- Include tests — New features need test coverage
- Update docs — If your change affects user-facing behavior
- Follow existing patterns — Look at similar code for conventions
- Write clear commit messages — Explain the "why", not just the "what"
Code of Conduct
We are committed to providing a welcoming and inclusive experience for everyone. Please be respectful, constructive, and kind in all interactions.
Getting Help
- GitHub Issues — For bugs and feature requests
- GitHub Discussions — For questions and community discussion
License
By contributing, you agree that your contributions will be licensed under the BSL 1.1 (Business Source License 1.1). This license allows free use, modification, and distribution with one restriction: you may not use the software to offer a competing commercial hosted service. The license converts to Apache 2.0 on 2029-02-14. A Contributor License Agreement (CLA) may be required for significant contributions.