Contributing to CannaNote
Learn how to contribute to CannaNote's mission of privacy-first cannabis wellness tracking.
Contributing to CannaNote
Welcome to the CannaNote community! We're building the future of privacy-first cannabis wellness tracking, and we'd love your help.
Our Mission
CannaNote exists to help people develop a healthier relationship with cannabis through:
- Privacy by design - Your data belongs to you
- Evidence-based features - Backed by research and user needs
- Harm reduction focus - Supporting mindful consumption
- Radical transparency - Open source and honest practices
How to Contribute
Code Contributions
Prerequisites
- Go 1.21+ for backend development
- Flutter/Dart for mobile development
- Git for version control
- Make for development commands
Getting Started
- Fork the repository on GitHub
- Clone your fork locally:
git clone https://github.com/yourusername/cannanote.git cd cannanote - Set up development environment:
make dev - Create a feature branch:
git checkout -b feature/your-feature-name
Development Workflow
- Write tests first - We practice test-driven development
- Follow existing patterns - Check similar features for consistency
- Keep privacy first - Never log or expose personal data
- Document your changes - Update relevant docs and comments
- Test thoroughly - Run the full test suite before submitting
Code Standards
- Go: Follow
gofmtandgolintconventions - Flutter: Use
dart formatand follow Flutter best practices - Commit messages: Use conventional commits format
- Privacy: Never commit secrets or personal data
Submitting Changes
- Push your branch to your fork
- Open a pull request against the main branch
- Describe your changes clearly in the PR description
- Link any related issues using GitHub keywords
- Wait for review - We'll provide feedback within 48 hours
Documentation Contributions
Content Guidelines
- Clear and concise - Help users accomplish their goals quickly
- Privacy-focused - Emphasize user control and data ownership
- Evidence-based - Include research links where relevant
- Inclusive language - Welcoming to all cannabis users
How to Add Documentation
- Follow the Content Workflow guide
- Use proper frontmatter with all required fields
- Test locally before submitting
- Create related page links to improve navigation
Feature Requests
Before Submitting
- Search existing issues to avoid duplicates
- Consider privacy implications of your request
- Think about harm reduction impact
- Provide use case examples from real experience
Creating Good Feature Requests
- Use the issue template on GitHub
- Describe the problem you're trying to solve
- Explain your proposed solution with specific details
- Consider alternative approaches and their tradeoffs
- Estimate impact on user privacy and data security
Bug Reports
Information to Include
- Steps to reproduce the issue
- Expected behavior vs actual behavior
- Platform details (web, iOS, Android)
- App version and device information
- Screenshots or screen recordings if helpful
Privacy in Bug Reports
- Never include personal consumption data
- Redact any personal information from screenshots
- Use example data instead of your actual entries
- Report security issues privately to security@cannanote.com
Community Guidelines
Our Values
- Respect - Treat all community members with kindness
- Privacy - Respect others' personal information and choices
- Evidence - Base discussions on research and facts
- Harm Reduction - Support safer cannabis use practices
- Inclusivity - Welcome all responsible cannabis users
Code of Conduct
We follow a zero-tolerance policy for:
- Harassment or discrimination
- Sharing others' personal information
- Promoting unsafe cannabis practices
- Commercial spam or self-promotion
Recognition
Contributors are recognized in several ways:
Hall of Fame
Outstanding contributors are featured in our documentation and app credits.
Community Roles
Active contributors may be invited to become:
- Maintainers - Help review and merge contributions
- Moderators - Assist with community management
- Advisors - Provide guidance on product direction
Beta Access
All contributors receive early access to new features and beta releases.
Development Resources
Architecture Overview
CannaNote uses hexagonal architecture with these key components:
- Domain Layer - Core business logic (Go)
- Application Layer - Use cases and services (Go)
- Adapters - External interfaces (HTTP, database, etc.)
- Mobile App - Flutter with Drift for local storage
- Web Frontend - Server-side rendering with HTMX
Key Principles
- Privacy by Design - Encrypt sensitive data client-side
- Offline First - Full functionality without network
- Performance - Sub-30-second logging experience
- Accessibility - Support screen readers and keyboard navigation
Testing Strategy
- Unit tests for domain logic (85%+ coverage required)
- Integration tests for API endpoints
- Widget tests for Flutter UI components
- End-to-end tests for critical user journeys
Getting Help
Documentation
- Content Workflow - Adding/editing documentation
- README.md - Quick start development guide
- Architecture docs - Technical implementation details
Community Support
- GitHub Discussions - Ask questions and share ideas
- Issue tracker - Report bugs and request features
- Email - Contact maintainers at hello@cannanote.com
Office Hours
Core maintainers host virtual office hours:
- When: Every other Wednesday at 7 PM EST
- Where: Announced in GitHub Discussions
- Format: Casual Q&A and pair programming
License and Legal
Open Source License
CannaNote is released under the MIT License, which means:
- ✅ Use for any purpose (personal, commercial, etc.)
- ✅ Modify and distribute freely
- ✅ Include in proprietary software
- ❗ Must include original license notice
- ❗ No warranty provided
Contributor License Agreement
By contributing, you agree that:
- You have the right to license your contribution
- Your contribution will be licensed under MIT
- You grant permission for your code to be used in CannaNote
- You understand this is a cannabis-related project
Privacy Commitment
All contributors must commit to:
- Never accessing or storing user consumption data
- Reporting security vulnerabilities responsibly
- Following privacy-by-design principles in all code
- Respecting user autonomy and data ownership
Thank you for contributing to CannaNote! Together, we're building a better future for cannabis wellness tracking.
Questions? Reach out to us at hello@cannanote.com or start a discussion on GitHub.