Thank you for considering contributing to SysAdmin! This document explains our development process and how you can be part of improving Linux server management for mobile users worldwide.
- Contributing to SysAdmin
By participating in this project, you agree to maintain a respectful and inclusive environment for everyone. Please be kind, constructive, and patient with other community members.
- Flutter SDK (latest stable version)
- Dart SDK
- Android Studio or VS Code with Flutter extensions
- Git
-
Fork the Repository
Start by forking the SysAdmin repository to your GitHub account. This creates your own copy of the project to work on.
-
Clone Your Fork
git clone https://github.com/YOUR-USERNAME/SysAdmin.git cd SysAdmin -
Add the Upstream Remote
git remote add upstream https://github.com/prathameshkhade/SysAdmin.git
-
Create a local dev branch that tracks upstream/dev
git fetch upstream git checkout -b dev upstream/dev
-
Install Dependencies
flutter pub get
-
Run the App
flutter run
-
Find an Issue or Create One
- Browse through existing issues
- Look for issues labeled
good first issueif you're new to the project - If you want to work on something not listed, create a new issue describing the feature or bug
-
Discuss the Implementation
- For significant changes, discuss your approach in the issue before starting work
- This ensures your time is well spent and your contribution aligns with the project's direction
-
Implement Your Changes
- Create a feature branch from the
devbranch (not frommain) - Write clean, maintainable code
- Follow the existing code style and patterns
- Include comments where necessary
- Create a feature branch from the
-
Submit Your Contribution
- Create a pull request from your branch to the
devbranch (not tomain) - Respond to review feedback
- Once approved, your changes will be merged into
dev!
- Create a pull request from your branch to the
We follow a branching model with two primary branches:
| Branch | Purpose |
|---|---|
main |
Production-ready code only. Stable releases are deployed from this branch. |
dev |
Development branch where all feature branches are merged first for integration testing. |
Feature branches are based on specific types of work:
| Branch Type | Purpose | Naming Convention |
|---|---|---|
feat/* |
New features or enhancements | feat/descriptive-feature-name |
bugfix/* |
Non-critical bug fixes | bugfix/descriptive-bug-name |
hotfix/* |
Critical fixes that need immediate release | hotfix/descriptive-issue-name |
docs/* |
Documentation changes | docs/what-you-documented |
main
|
|__________
| \
| \
v v
dev hotfix/*
| |
| |
/ | \ |
/ | \ |
v v v v
feat/* bugfix/* docs/*
- Regular development work is done on feature branches (
feat/*,bugfix/*,docs/*) fromdev - All feature branches are merged back to
dev - When
devis stable, it gets merged tomainfor release - Critical fixes may be done on
hotfix/*branches frommain, then merged to bothmainanddev
# Make sure your dev branch is up to date
git checkout dev
git pull upstream dev
# Create and switch to a new branch
git checkout -b feat/your-feature-name-
Update Your Branch
Ensure your branch is up to date with the latest changes:
git checkout dev git pull upstream dev git checkout feat/your-feature-name git merge dev
-
Run Tests Locally
Before submitting, run tests to ensure your changes don't break existing functionality:
flutter analyze flutter test -
Push Your Changes
git push origin feat/your-feature-name
-
Create a Pull Request
- Go to the repository on GitHub
- Click "Pull Request"
- Choose
devas the base branch and your feature branch as the compare branch - Fill out the PR template with details about your changes
-
PR Title and Description
- Use a clear, descriptive title that summarizes your changes
- In the description, explain what the PR does, why it's needed, and how it's implemented
- Link any related issues using keywords like "Fixes #123" or "Closes #456"
-
Code Review
- Be responsive to feedback and make requested changes
- Push additional commits to address review comments
- Maintain a positive and collaborative attitude
-
Merge
Once your PR is approved and all checks pass, a maintainer will merge it into the
devbranch.
Our release process follows these steps:
-
Integration in
dev- All feature branches are merged into
dev - Comprehensive testing is performed on the
devbranch
- All feature branches are merged into
-
Version Update
- When
devis stable and ready for release, the maintainer:- Updates the version in
pubspec.yamlfollowing semantic versioning - Updates the version code in
pubspec.yaml
- Updates the version in
- When
-
Release Branch Creation
- The maintainer merges
devintomain
- The maintainer merges
-
Automated Release
- The GitHub workflow in
.github/workflows/main.ymlbuilds and publishes releases when changes are pushed tomain - This creates a new tag and GitHub release with Android and iOS builds
- The GitHub workflow in
-
Hotfix Process
- For critical issues:
- Create a
hotfix/*branch frommain - Fix the issue and create a PR to
main - After merging to
main, create another PR to merge the hotfix intodev
- Create a
- For critical issues:
We follow Semantic Versioning for releases:
- MAJOR.MINOR.PATCH (e.g., 1.2.3)
- Increment MAJOR for incompatible API changes
- Increment MINOR for new features in a backward-compatible manner
- Increment PATCH for backward-compatible bug fixes
- Follow the Dart Style Guide
- Use meaningful variable and function names
- Write self-documenting code where possible
- Keep functions focused and concise
- Use Flutter best practices for UI components
- Maintain the project structure as outlined in the README
- Follow the established patterns for state management
- Separate UI from business logic
- Create reusable components when appropriate
Good documentation is crucial for an open-source project:
- Update the README.md if you add or change features
- Add comments to complex code sections
- Include dartdoc comments for public APIs
- Consider updating Wiki pages for major features
We encourage a test-driven development approach:
- Write unit tests for business logic
- Add widget tests for UI components
- Ensure all tests pass before submitting a PR
- Run
flutter testto verify
Our CI workflow automatically runs tests for all PRs to the main branch.
- GitHub Discussions: For questions, ideas, and community chat
- Issues: For bugs and feature requests
- Pull Requests: For code contributions
If you need help at any point:
- Ask in the GitHub Discussions
- Comment on the relevant issue
- Reach out via email: pkhade2865+sysadmin@gmail.com