Skip to main content
Welcome to the Invenicum contributor community! We’re excited to have you here. Whether you’re fixing bugs, adding features, improving documentation, or helping others, every contribution matters.

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

1

Fork and Clone the Repository

Fork the Invenicum repository and clone it locally:
2

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)
Install Flutter dependencies:
3

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.
4

Run the Application

Start the Flutter app:
For web development:

Development Workflow

Branching Strategy

We follow a simple branching model:
  • main - Production-ready code
  • develop - Integration branch for features
  • feature/* - New features (e.g., feature/plugin-marketplace)
  • fix/* - Bug fixes (e.g., fix/loan-date-calculation)
  • docs/* - Documentation updates

Making Changes

1

Create a Feature Branch

Always create a new branch for your work:
2

Make Your Changes

Write clean, well-documented code following our coding standards (see below).
3

Test Thoroughly

Run tests and verify your changes work as expected:
4

Commit Your Changes

Write clear, descriptive commit messages:
See the Commit Message Guidelines below.
5

Push and Create a Pull Request

Push your branch and create a PR:
Go to GitHub and create a pull request against the develop branch.

Coding Standards

Dart/Flutter Conventions

We follow the official Dart style guide with some project-specific conventions: File Structure
Naming Conventions
  • 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)
Code Style

Best Practices

Choose names that clearly describe purpose:
Functions should do one thing well. If a function is too long, break it into smaller functions.
Always handle potential errors and provide meaningful feedback:
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):
Widget Tests (for UI components):

Running Tests

Commit Message Guidelines

We follow Conventional Commits:
Types:
  • feat: New feature
  • fix: Bug fix
  • docs: Documentation changes
  • style: Code style changes (formatting, semicolons, etc.)
  • refactor: Code refactoring
  • test: Adding or updating tests
  • chore: Maintenance tasks
Examples:

Pull Request Process

1

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
2

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
3

Link Related Issues

Reference any related issues:
4

Request Review

Tag relevant maintainers or team members for review.
5

Address Feedback

  • Respond to all comments
  • Make requested changes
  • Push updates to the same branch
6

Merge

Once approved, a maintainer will merge your PR.

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
Thank you for contributing to Invenicum!