questionHow to Contribute

we use a fork-based contribution workflow.

How to Contribute

We use a fork-based contribution workflow. The main branch is protected for production. All external contributions go through the develop branch.

Contribution Flow: Fork → Clone → Branch → Commit → Push → Pull Request → Review → Merge


Step 1: Fork the Repository

Go to https://github.com/betterbugs/dev-toolsarrow-up-right and click the Fork button in the top-right corner. This creates your own copy of the repository.


Step 2: Clone Your Fork Locally

git clone https://github.com/YOUR-USERNAME/dev-tools.git
cd dev-tools

Add the upstream remote to keep your fork synced:

git remote add upstream https://github.com/betterbugs/dev-tools.git
git fetch upstream

Step 3: Create a Feature Branch

Always work on a new branch, never directly on develop or main:

Branch naming:

  • feature/tool-name — New tool

  • fix/bug-description — Bug fix

  • docs/description — Documentation

  • refactor/component-name — Code improvements


Step 4: Make Your Changes

Adding a new tool? Read the Feature and Module Structure guide.

General guidelines:

  • Keep components focused and reusable

  • Use TypeScript types (avoid any)

  • Reuse existing UI components from app/components/ui/

  • Add shared logic to app/libs/helpers.tsx, not duplicated in components

Building Tools with Network Features?

Network requests are completely fine! We're building tools for developers.

All of these are acceptable:

  • Fetching data from public APIs

  • AI features using user-provided API keys

  • Tools that enhance with network features

  • Integrations with external services

When using network features, follow these best practices:

1. Make it optional and graceful

  • Core tool works without the API/network

  • If API is unavailable, feature gracefully disables itself

  • Show clear error messages ("API key missing" or "Network unavailable")

  • Provide fallbacks or helpful UI states

2. Document clearly

  • Which APIs are needed

  • How to get API keys (if required)

  • What happens if the feature is unavailable

  • Example: "This feature requires an OpenAI API key. If not provided, the tool still works for basic conversion."

3. Environment variables

  • Use env vars for API keys and sensitive data

  • Document required env vars in README or tool description

  • If env var is missing, the feature should disable gracefully

  • Example: If NEXT_PUBLIC_OPENAI_KEY is missing, button says "Configure API key to unlock AI features"

Example implementation:

Offline-Safe Tools

Most of our current tools work locally (recommended):

  • Process data entirely in the browser

  • No network calls needed

  • Works fully offline

  • Best user experience

Examples: JSON formatter, base64 encoder, text converters, CSS minifier, etc.


Step 5: Commit with Conventional Commits

We follow Conventional Commitsarrow-up-right for consistent, readable history.

Types:

  • feat: — New feature or tool

  • fix: — Bug fix

  • docs: — Documentation

  • refactor: — Code cleanup

  • style: — Code formatting

  • test: — Tests

Examples:


Step 6: Check Code Quality

Before pushing, run the linter:

Fix any warnings or errors. Your code must pass linting before opening a PR.


Step 7: Push to Your Fork


Step 8: Open a Pull Request

Go to https://github.com/betterbugs/dev-tools. You'll see a prompt to open a PR. Click Compare & pull request.

Important: Make sure you're merging INTO develop, not main.

Fill out the PR Template:

Example PR:

PR with Network Features:


Step 9: Code Review

The core team reviews your PR. They may ask for:

  • Code changes

  • Additional documentation

  • Clarification on network features

  • Screenshots or demos

Respond to feedback:

  1. Read the comments

  2. Make requested changes

  3. Commit and push (same branch)

  4. The PR updates automatically

Ask questions in the PR comment thread if something isn't clear!


Step 10: Merge

Once approved, a maintainer merges your PR into develop.

Cleanup your local branches:

Your code is now part of the project! 🎉

Later, the core team promotes changes from develop to main for production releases.


Important: Feature Labeling

When your PR is merged, we'll label it with one of these tags so users understand what they're getting:

circle-check

This builds trust. Users choose knowingly.


Key Documents

Before contributing, read:

  1. CODE_OF_CONDUCT.mdarrow-up-right — Community standards

  2. CONTRIBUTING.mdarrow-up-right — Detailed guidelines

  3. SECURITY.mdarrow-up-right — Security vulnerabilities → email [email protected]

  4. Feature and Module Structure — How tools are built

  5. PWA and Offline Behavior — Understanding offline support


Need Help?

  • Discord: Joinarrow-up-right (fastest!)

  • Ask in your PR: Comment with questions

  • Check issues: Existing discussions may help

  • Read docs: README, CONTRIBUTING, guides


Quick Reference Checklist

Before opening a PR:


Ready? Pick an open issuearrow-up-right or propose a featurearrow-up-right. Let's build!

Last updated