Thank you for your interest in contributing to Masaar CRM! This document provides guidelines and instructions for contributing.
Please read our Code of Conduct before contributing. We expect all contributors to follow it.
- Check existing issues to avoid duplicates.
- Open a new issue with a clear title and description.
- Include steps to reproduce, expected behavior, and actual behavior.
- Mention your OS, browser, and deployment method (Docker, manual, etc.).
- Open an issue with the
enhancementlabel. - Describe the feature, why it's needed, and how it should work.
- For UAE-specific features, mention relevant regulations (PDPL, VAT, etc.).
- Fork the repository.
- Create a feature branch from
main:git checkout -b feature/your-feature-name
- Make your changes following the coding standards below.
- Test your changes locally with Docker Compose.
- Commit with a clear message:
git commit -m "feat: add new feature description" - Push to your fork and open a Pull Request.
We especially welcome contributions that address UAE-specific needs:
| Gateway | Status | Priority |
|---|---|---|
| PayBy | Planned | High |
| Network International | Planned | High |
| Stripe UAE | Planned | Medium |
| Tabby (Buy Now Pay Later) | Planned | Medium |
| Tamara (Buy Now Pay Later) | Planned | Medium |
| Integration | Status | Priority |
|---|---|---|
| Ejari (Dubai Land Department) | Planned | High |
| DEWA (Dubai Electricity & Water) | Planned | Medium |
| ADDC (Abu Dhabi Distribution Company) | Planned | Medium |
| DED (Department of Economic Development) | Planned | Low |
| Federal Tax Authority (FTA) | Planned | High |
- Arabic language model fine-tuning
- Local LLM performance optimization
- Arabic NLP for lead scoring
- Bilingual template generation
- Template management and analytics
- Bulk messaging with rate limiting
- Chatbot workflows
- Multi-agent routing
- RERA-compliant property reports
- FTA VAT export formats
- Custom analytics dashboards
- Real-time KPI widgets
- Docker and Docker Compose
- Go 1.22+ (for backend development)
- Node.js 18+ (for frontend development)
# Clone your fork
git clone https://github.com/YOUR_USERNAME/masaar-crm.git
cd masaar-crm
# Copy environment file
cp .env.example .env
# Start dependencies only
docker compose up -d postgres redis ollama
# Run the backend
go run ./cmd/server
# In another terminal, run the frontend
cd web
npm install
npm run dev| Command | Description |
|---|---|
docker compose up |
Start all services |
go run ./cmd/server |
Run backend only |
cd web && npm run dev |
Run frontend only |
swag init -g cmd/server/main.go |
Regenerate Swagger docs |
- Follow Effective Go conventions.
- Use the handler-repo pattern for new endpoints.
- Always capture both return values from
uuid.Parse():// Correct id, _ := uuid.Parse(c.Locals("company_id").(string)) // Wrong - compile error id := uuid.Parse(c.Locals("company_id").(string))
- Scope all queries by
company_idfrom JWT claims. - Add Swagger comments for new endpoints.
- Use functional components with hooks.
- Use the
useLang()context for bilingual text. - Use the API client in
web/lib/api.tsfor all API calls. - Follow the existing component patterns in
web/components/.
- Migrations go in
migrations/with sequential numbering. - Use goose format for migration files.
- Never modify applied migrations.
masaar-crm/
├── cmd/server/ # Go backend entry point
├── internal/
│ ├── api/ # HTTP handlers and middleware
│ ├── domain/ # Models and types
│ ├── repo/ # PostgreSQL repositories
│ └── ws/ # WebSocket hub
├── migrations/ # SQL migrations (goose)
├── web/ # Next.js frontend
└── docker/ # Docker configuration
- Start the application with
docker compose up - Login with default credentials
- Test CRUD operations for each module
- Verify WhatsApp webhook integration
- Test AI features with Ollama
Use the Swagger UI at /docs to test API endpoints interactively.
By contributing, you agree that your contributions will be licensed under the MIT License.
Open an issue for any questions about contributing. We're happy to help!