Ways to Contribute
There are many ways you can contribute to Invenicum:- Code Contributions: Fix bugs, add features, or improve performance
- Documentation: Write guides, improve existing docs, or add examples
- Issue Reports: Report bugs or suggest new features
- Code Reviews: Review pull requests from other contributors
- Plugins & Templates: Create extensions for the community marketplace
- Community Support: Help others in discussions and issues
Getting Started
Fork and Clone the Repository
Fork the Invenicum repository and clone it locally:
Install Flutter and Dependencies
Invenicum is built with Flutter. You’ll need:
- Flutter SDK (latest stable version)
- Dart SDK (comes with Flutter)
- Android Studio or Xcode (for mobile development)
- Docker (for running the backend locally)
Set Up the Development Environment
Copy the environment configuration:Start the backend services using Docker Compose:Configure your Gemini API key in the
.env file for AI features.Development Workflow
Branching Strategy
We follow a simple branching model:main- Production-ready codedevelop- Integration branch for featuresfeature/*- New features (e.g.,feature/plugin-marketplace)fix/*- Bug fixes (e.g.,fix/loan-date-calculation)docs/*- Documentation updates
Making Changes
Commit Your Changes
Write clear, descriptive commit messages:See the Commit Message Guidelines below.
Coding Standards
Dart/Flutter Conventions
We follow the official Dart style guide with some project-specific conventions: File Structure- Classes:
PascalCase(e.g.,AssetTemplate,PluginService) - Files:
snake_case(e.g.,asset_template_model.dart) - Variables/Functions:
camelCase(e.g.,getUserName,isActive) - Constants:
lowerCamelCase(e.g.,defaultPageSize) - Private members: Prefix with
_(e.g.,_apiService)
Best Practices
Use Meaningful Names
Use Meaningful Names
Choose names that clearly describe purpose:
Keep Functions Small
Keep Functions Small
Functions should do one thing well. If a function is too long, break it into smaller functions.
Handle Errors Gracefully
Handle Errors Gracefully
Always handle potential errors and provide meaningful feedback:
Document Complex Logic
Document Complex Logic
Add comments for non-obvious code:
Testing Guidelines
Writing Tests
We use Flutter’s built-in testing framework. Every new feature should include tests. Unit Tests (for services, models, utilities):Running Tests
Commit Message Guidelines
We follow Conventional Commits:feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code style changes (formatting, semicolons, etc.)refactor: Code refactoringtest: Adding or updating testschore: Maintenance tasks
Pull Request Process
Prepare Your PR
- Ensure your branch is up to date with
develop - All tests pass
- Code follows style guidelines
- Commits are clean and well-structured
Write a Clear Description
Your PR should include:
- What: Clear summary of changes
- Why: Problem being solved or feature being added
- How: Technical approach (if complex)
- Testing: How you tested the changes
- Screenshots: For UI changes
Code Review Guidelines
For Authors
- Be open to feedback and constructive criticism
- Respond to comments promptly
- Ask questions if feedback is unclear
- Don’t take criticism personally - it’s about the code, not you
For Reviewers
- Be respectful and constructive
- Explain the “why” behind suggestions
- Approve when changes meet standards
- Focus on:
- Correctness and functionality
- Code quality and maintainability
- Performance implications
- Security concerns
- Test coverage
Community Guidelines
Code of Conduct
We are committed to providing a welcoming and inclusive environment:- Be respectful: Treat everyone with respect and kindness
- Be collaborative: Work together toward the best solutions
- Be patient: Help newcomers and be understanding
- Be constructive: Provide helpful feedback
- Be professional: Keep discussions focused and productive
Getting Help
- Documentation: Check the docs first
- Discussions: Use GitHub Discussions for questions
- Issues: Search existing issues before creating new ones
- Discord/Slack: Join our community channels (if available)
Next Steps
Ready to contribute?Plugin Development
Create custom plugins to extend Invenicum’s functionality
Template Creation
Build asset templates for specialized collections
Recognition
All contributors are recognized in our:- GitHub contributors list
- Release notes (for significant contributions)
- Community showcase
