As an open source project, ArtisanPack UI Livewire Drag and Drop is open to contributions from everyone. You don't need to be a developer to contribute. Whether it's contributing code, writing documentation, testing the package or anything in between there's a place for you here to contribute.
- Code of Conduct
- Ways to Contribute
- Getting Started
- Issue Templates
- Branching Strategy
- Merge Request Process
- Label System
- Milestone Strategy
- Forking and Contributing
- Naming Conventions
In order to make this a best place for everyone to contribute, there are some hard and fast rules that everyone needs to abide by.
- ArtisanPack UI Livewire Drag and Drop is open to everyone no matter your race, ethnicity, gender, who you love, etc. In order to keep it that way, there's zero tolerance for any racist, misogynistic, xenophobic, bigoted, Zionist, antisemitic (yes, there is a difference), Islamophobic, etc. messages. This includes messages sent to a fellow contributor outside of this repository. In short, don't be a jerk. Failure to comply will result in a ban from the project.
- Be respectful when communicating with fellow contributors.
- Respect the decisions made for what to include in the package.
- Work together to create the best possible content management system.
There are a ton of different ways to contribute to ArtisanPack UI Livewire Drag and Drop even if you're not a developer. Here are some (but not all) of the ways you can contribute to the project:
- Write code for ArtisanPack UI Livewire Drag and Drop core
- Create plugins to extend ArtisanPack UI Livewire Drag and Drop
- Create themes to add designs for ArtisanPack UI Livewire Drag and Drop
- Test and report bugs found in the package
- Write documentation
- Write tutorials and talk about ArtisanPack UI Livewire Drag and Drop on your blog and/or social media profiles
- Review pull/merge requests
- Improve existing code
- Help answer questions in issues
Before contributing, make sure you have:
- Git installed on your machine
- PHP 8.1 or higher
- Composer
- A GitLab, GitHub, or other Git hosting account
- Fork the repository (see Forking and Contributing)
- Clone your fork locally
- Install dependencies:
composer install - Create a feature branch:
git checkout -b feature/your-feature-name - Make your changes
- Test your changes
- Push to your fork
- Create a merge/pull request
When creating an issue, you'll be prompted to choose a template. We have several templates to help you provide the right information:
Use this template when you've found a bug. It will ask for:
- Expected behavior - What should happen
- Current behavior - What actually happens
- Steps to reproduce - How to recreate the bug
- Environment - Your OS, browser, PHP version, project version
- Screenshots - If applicable
The template automatically applies these labels:
Type::BugStatus::Backlog
You should also add:
Priority::*(Critical, High, Medium, or Low) if urgentArea::*(Frontend, Backend, etc.) for the affected area
Use this when suggesting new functionality. It will ask for:
- Problem statement - What problem does this solve?
- Proposed solution - What would you like to happen?
- Alternatives considered - Other solutions you've thought about
- Use cases - How would this be used?
The template automatically applies:
Type::FeatureStatus::Backlog
Use this for improvements to existing features. It will ask for:
- Current behavior - How it works now
- Proposed improvement - How to make it better
- Benefits - Why this improvement is valuable
- Backwards compatibility - Will this break anything?
The template automatically applies:
Type::EnhancementStatus::Backlog
Use this for general tasks that don't fit other categories. It will ask for:
- Task description - What needs to be done
- Acceptance criteria - How we know it's complete
- Context - Why this is needed
The template automatically applies:
Status::Backlog
After filling out the template:
- Review your issue for completeness
- The labels will be applied automatically
- Add any additional labels if needed (Priority, Area)
- Submit the issue
- A maintainer will review and triage it
Note: Issues are initially added to the "Future Release" milestone until they're scheduled for a specific version.
We use GitLab Flow with release branches. Here's how it works:
-
main- Latest stable release- All releases are tagged from main
- Protected: No direct pushes allowed
-
release/X.Y.x- Long-term support branches for patch releases- Example:
release/1.0.xfor v1.0.1, v1.0.2, etc. - Created when needed for patches
- Example:
When contributing, create a feature branch:
Format: feature/short-description or fix/short-description
Examples:
feature/add-dark-modefix/navigation-bugfeature/issue-123-user-profiles
# For new features
git checkout main
git pull origin main
git checkout -b feature/your-feature
# For bug fixes
git checkout main
git pull origin main
git checkout -b fix/your-bugfix- Create branch from
main - Make changes and commit
- Push to your fork
- Create MR to
mainbranch - Wait for review from maintainer
- Address feedback if needed
- Maintainer merges when approved
Important: Always create your branch from main and target main in your merge request.
- Ensure there isn't an existing MR for the same change
- Create or link to an issue - All MRs should reference an issue
- Test your changes locally
- Run code linting - Follow the naming conventions
- Update documentation if needed
We have templates for different types of merge requests:
Use this for most MRs. It includes:
- Description of changes
- Type of change (Bug fix, Feature, Enhancement, etc.)
- Testing performed
- Accessibility tests (required for all UI changes)
- Tests added
- Documentation updates
- Pre-submission checklist
The template automatically applies:
Status::In Review
You should also add:
Type::*(Bug, Feature, Enhancement, etc.)Area::*(Frontend, Backend, etc.)
This template is for release merge requests and should only be used by maintainers.
For External Contributors:
- Create your MR using the Default template
- Fill out all sections completely
- Link to the related issue:
Closes #123 - Wait for maintainer review
- Address any feedback promptly
- A maintainer will approve and merge your MR
Note: All MRs require maintainer approval. External contributors cannot merge their own MRs.
When you submit an MR:
- A maintainer will review within 1-3 days
- They may request changes or ask questions
- Address feedback by pushing new commits
- Once approved, the maintainer will merge
- Your branch will be automatically deleted
- Your changes will be included in the next release
- The related issue will automatically close
- You'll be credited in the release notes
- Thank you for contributing! 🎉
We use a comprehensive label system to organize issues and merge requests:
Labels that track where an issue/MR is in the workflow:
Status::Backlog- Not yet prioritizedStatus::To Do- Ready to work onStatus::In Progress- Currently being worked onStatus::In Review- Under code reviewStatus::Approved- Approved and ready to mergeStatus::Blocked- Cannot proceed (explain in comments)Status::On Hold- Paused temporarily
Labels that categorize the work:
Type::Bug- Something isn't workingType::Feature- New functionalityType::Enhancement- Improvement to existing featureType::Documentation- Documentation updatesType::Refactor- Code improvement without behavior changeType::Security- Security-related changesType::Performance- Performance improvementsType::Experimental- Experimental features
Labels that indicate importance:
Priority::Critical- Broken functionality, needs immediate fixPriority::High- Important, should be addressed soonPriority::Medium- Normal priorityPriority::Low- Nice to have, low urgency
Labels that indicate affected code area:
Area::Frontend- UI/client-side codeArea::Backend- Server/API codeArea::Design- Visual design workArea::Infrastructure- DevOps/deploymentArea::Testing- Test-related work
good first issue- Good for new contributorshelp wanted- Community assistance requestedbreaking change- Breaks backward compatibilityaccessibility- Accessibility improvements
Templates apply some labels automatically, but you may need to add others manually.
We use milestones to organize and schedule work:
- Current Version (e.g.,
v1.0) - Actively being developed - Version Planning (e.g.,
v1.x) - Planned for future v1 releases - Future Release - Nice-to-have features, no timeline yet
When you create an issue:
- It's initially unassigned to a milestone
- A maintainer will assign it to a milestone during triage
Future Release= under consideration but not scheduledv1.xorv2.x= planned for that major versionv1.0,v1.1, etc. = scheduled for that specific release
You don't need to assign milestones - maintainers will handle this.
- Assign issues to specific versions when scheduled
- Use
vX.xfor planned but not yet scheduled features - Use
Future Releasefor community requests - Create patch milestones (v1.0.1) only when needed
ArtisanPack UI Livewire Drag and Drop is primarily hosted on GitLab, but you can contribute from any Git hosting platform.
Easiest method:
-
Fork the repository
- Go to the project page
- Click "Fork" button
- Fork will be created in your account
-
Clone your fork
git clone git@gitlab.com:your-username/artisanpack-ui-package.git cd artisanpack-ui-package -
Add upstream remote
git remote add upstream git@gitlab.com:jacob-martella-web-design/artisanpack-ui/package-name.git
-
Create feature branch
git checkout -b feature/your-feature
-
Make changes and push
git add . git commit -m "Add your feature" git push origin feature/your-feature
-
Create Merge Request
- Go to your fork on GitLab
- Click "Create merge request"
- Target the original repository's
mainbranch - Fill out the MR template
- Submit
If you prefer GitHub:
-
Clone on GitLab (even without account)
git clone https://gitlab.com/jacob-martella-web-design/artisanpack-ui/package-name.git cd package-name -
Create repository on GitHub
- Go to GitHub and create a new repository
- Don't initialize with README
-
Add GitHub as remote
git remote add github git@github.com:your-username/package-name.git
-
Create feature branch
git checkout -b feature/your-feature
-
Make changes and push to GitHub
git add . git commit -m "Add your feature" git push github feature/your-feature
-
Create Pull Request
- Create PR on GitHub as normal
- Mention you're contributing to a GitLab project
- Include: "This PR is for GitLab project: [link]"
-
Maintainer will create GitLab MR
- Maintainer will pull your changes
- Create MR on GitLab
- Credit you in commits
Note: This requires maintainer coordination. GitLab forks are preferred.
Similar to GitHub process:
-
Clone from GitLab
git clone https://gitlab.com/jacob-martella-web-design/artisanpack-ui/package-name.git cd package-name -
Create Bitbucket repository
-
Add Bitbucket remote
git remote add bitbucket git@bitbucket.org:your-username/package-name.git
-
Push to Bitbucket
git checkout -b feature/your-feature # ... make changes ... git push bitbucket feature/your-feature -
Notify maintainer
- Create issue on GitLab: "Contribution available"
- Link to your Bitbucket branch
- Maintainer will integrate
If you don't want any hosting account:
-
Clone project
git clone https://gitlab.com/jacob-martella-web-design/artisanpack-ui/package-name.git cd package-name -
Create feature branch
git checkout -b feature/your-feature
-
Make changes
# ... work on your feature ... git add . git commit -m "Add your feature"
-
Create patch file
git format-patch main --stdout > my-contribution.patch -
Submit patch
- Create GitLab issue (no account needed via email)
- Or email patch to: [your email or link to contribution email]
- Describe changes in issue/email
- Attach
.patchfile
-
Maintainer applies patch
git apply my-contribution.patch
For GitLab forks:
# Fetch upstream changes
git fetch upstream
# Merge into your main
git checkout main
git merge upstream/main
# Push to your fork
git push origin mainFor other platforms:
# Add GitLab as upstream
git remote add upstream https://gitlab.com/jacob-martella-web-design/artisanpack-ui/package-name.git
# Fetch and merge
git fetch upstream
git checkout main
git merge upstream/main
# Push to your platform
git push origin main # or 'github' or 'bitbucket'| Platform | Difficulty | Preferred? | Notes |
|---|---|---|---|
| GitLab Fork | ⭐ Easy | ✅ Yes | Native workflow, use this if possible |
| GitHub | ⭐⭐ Medium | Requires maintainer coordination | |
| Bitbucket | ⭐⭐ Medium | Requires maintainer coordination | |
| Local/Patch | ⭐⭐⭐ Advanced | For privacy or no-account contributors |
Recommendation: Use GitLab fork whenever possible for the smoothest contribution experience.
To keep things consistent across the code base, it's important to follow these naming conventions:
- Class names: Pascal Case -
ClassName - Function names: Camel Case -
functionName - Variables: Camel Case -
variableName - Array keys: Camel Case -
$array['arrayKey'] - Database columns: Snake case -
table_column - Constants: Upper snake case -
CONSTANT_NAME
- PHP class files: Match class name -
ClassName.php - Config files: Kebab case -
config-name.php - View files: Kebab case -
view-name.blade.php
- Feature branches:
feature/short-description - Bug fix branches:
fix/short-description - Use hyphens not underscores
- Keep it short but descriptive
- Examples:
feature/dark-mode,fix/navbar-responsive
Follow conventional commit format:
type: Short description
Longer description if needed.
Closes #123
Types:
feat:- New featurefix:- Bug fixdocs:- Documentation changesstyle:- Code style changes (formatting)refactor:- Code refactoringtest:- Test updateschore:- Maintenance tasks
Examples:
feat: Add dark mode support
Implements dark mode theme with toggle in settings.
Includes proper color contrast for accessibility.
Closes #456
fix: Resolve navigation menu overlap on mobile
Menu was overlapping content on screens < 768px.
Updated CSS media queries and z-index values.
Closes #789
If you have questions about contributing:
- Check existing documentation - Wiki, README, this guide
- Search existing issues - Your question might be answered
- Ask in an issue - Create a question issue
- Join discussions - Comment on relevant issues
Thank you for contributing to ArtisanPack UI Livewire Drag and Drop! Your contributions help make this project better for everyone.
Every contribution matters, whether it's:
- 🐛 Fixing a typo in documentation
- ✨ Adding a major feature
- 🧪 Writing tests
- 📝 Improving documentation
- 💡 Suggesting ideas
We appreciate your time and effort! 🎉
Project Maintainer: Jacob Martella (@viewfromthebox94)
License: MIT
Website: https://jacobmartella.me