Skip to content

Latest commit

 

History

History
331 lines (234 loc) · 8.27 KB

File metadata and controls

331 lines (234 loc) · 8.27 KB

Contributing to ENV Storage Manager

First off, thank you for considering contributing to ENV Storage Manager! 🎉

It's people like you that make ENV Storage Manager such a great tool for the developer community.

📋 Table of Contents

📜 Code of Conduct

This project and everyone participating in it is governed by our Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to the project maintainers.

🤔 How Can I Contribute?

Reporting Bugs 🐛

Before creating bug reports, please check the existing issues to avoid duplicates. When you create a bug report, include as many details as possible:

  • Use a clear and descriptive title
  • Describe the exact steps to reproduce the problem
  • Provide specific examples
  • Describe the behavior you observed and what you expected
  • Include screenshots if relevant
  • Include your environment details (OS, Node.js version, etc.)

Suggesting Enhancements 💡

Enhancement suggestions are tracked as GitHub issues. When creating an enhancement suggestion:

  • Use a clear and descriptive title
  • Provide a detailed description of the suggested enhancement
  • Explain why this enhancement would be useful
  • List any similar features in other tools

Your First Code Contribution 🌱

Unsure where to begin? Look for issues labeled:

  • good first issue - Issues suitable for beginners
  • help wanted - Issues where we need community help
  • documentation - Help improve our docs
  • bug - Fix known bugs

Pull Requests 🚀

  • Fill in the required template
  • Follow the style guidelines
  • Include appropriate test cases
  • Update documentation as needed
  • End all files with a newline

🏁 Getting Started

  1. Fork the repository on GitHub
  2. Clone your fork locally:
    git clone https://github.com/YOUR-USERNAME/ENV_Storage.git
    cd ENV_Storage
  3. Add the upstream repository:
    git remote add upstream https://github.com/curiouscoder-cmd/ENV_Storage.git
  4. Create a branch for your changes:
    git checkout -b feature/your-feature-name

🛠️ Development Setup

Prerequisites

  • Node.js 20 or higher
  • npm (Node package manager)
  • Git

Installation

  1. Install dependencies:

    npm install
  2. Generate Prisma client:

    npx prisma generate
  3. Run in development mode:

    npm run electron:dev

Running Tests

# Run tests (when implemented)
npm test

# Run linting
npm run lint

# Build the application
npm run build

Code Quality Checks

# Run ESLint
npm run lint

# Build the application
npm run build

# Run all checks (recommended before committing)
npm run lint && npm run build

🔄 Pull Request Process

  1. Update your fork with the latest upstream changes:

    git fetch upstream
    git rebase upstream/main
  2. Make your changes and commit them with clear messages

  3. Push to your fork:

    git push origin feature/your-feature-name
  4. Create a Pull Request from your fork to the main repository

  5. Wait for review - maintainers will review your PR and may request changes

  6. Make requested changes if any, and push them to your branch

  7. Once approved, your PR will be merged! 🎉

PR Checklist

Before submitting your PR, ensure:

  • Code follows the project's style guidelines
  • Linting passes (npm run lint)
  • Build succeeds (npm run build)
  • New tests added for new features (if applicable)
  • Documentation updated (if applicable)
  • Commit messages follow guidelines
  • No merge conflicts with main branch
  • PR description clearly describes the changes
  • Issue number referenced (if applicable)

🎨 Style Guidelines

JavaScript/React Style Guide

We follow modern JavaScript and React best practices:

  • Line length: Maximum 100 characters
  • Indentation: 2 spaces (no tabs)
  • Quotes: Use double quotes for strings
  • Imports: Group and sort imports (use isort)
  • Type hints: Use type hints for function signatures
  • Docstrings: Use Google-style docstrings

Example Code Style

// Use modern ES6+ syntax
import { encrypt } from './crypto';

const encryptSecret = async (secret, key) => {
    """Encrypts a secret using the provided key.
    
    Args:
        secret: The plaintext secret to encrypt
        key: The encryption key
        
    Returns:
        The encrypted secret as bytes
        
    Raises:
        ValueError: If secret is empty or key is invalid
    """
    if not secret:
        raise ValueError("Secret cannot be empty")
    
    # Implementation here
    pass

Documentation Style

  • Use Markdown for all documentation
  • Include code examples where appropriate
  • Keep language clear and concise
  • Use proper headings and formatting

📝 Commit Message Guidelines

We follow the Conventional Commits specification:

Format

<type>(<scope>): <subject>

<body>

<footer>

Types

  • feat: A new feature
  • fix: A bug fix
  • docs: Documentation changes
  • style: Code style changes (formatting, etc.)
  • refactor: Code refactoring
  • test: Adding or updating tests
  • chore: Maintenance tasks

Examples

feat(cli): add search command for finding environment variables

Implements fuzzy search functionality to quickly find stored secrets
across all projects.

Closes #123
fix(crypto): resolve decryption error with special characters

Fixed an issue where environment variables containing special
characters would fail to decrypt properly.

Fixes #456
docs(readme): update installation instructions

Added clarification for Windows users and troubleshooting section.

🎃 Hacktoberfest Guidelines

Hacktoberfest Participation

We're excited to participate in Hacktoberfest 2025! Here are some guidelines:

Quality Over Quantity

  • Focus on meaningful contributions
  • Avoid spam PRs (e.g., minor typo fixes, whitespace changes)
  • Read the issue description carefully before working on it

Valid Contributions

Accepted:

  • Bug fixes
  • New features
  • Documentation improvements
  • Test coverage improvements
  • Performance optimizations
  • UI/UX enhancements

Not Accepted:

  • Automated/bot PRs
  • Duplicate PRs
  • PRs with no description
  • Minor formatting changes without substance
  • PRs that don't follow guidelines

Getting Your PR Counted

  1. Label: PRs must have the hacktoberfest-accepted label (added by maintainers)
  2. Review: PRs must be reviewed and approved
  3. Merge: PRs must be merged or labeled hacktoberfest-accepted
  4. Timeline: PRs must be created between October 1-31, 2025

Tips for Success

  • 💬 Comment on issues before starting work to avoid duplicates
  • 🔍 Look for hacktoberfest labeled issues for curated tasks
  • 📖 Read the documentation thoroughly
  • Test your changes before submitting
  • 🤝 Be patient and respectful with maintainers

🆘 Getting Help

🙏 Recognition

All contributors will be:

  • Listed in our README
  • Mentioned in release notes
  • Part of our amazing community!

📚 Additional Resources


Thank you for contributing to ENV Storage Manager! 🚀

Happy coding and Happy Hacktoberfest! 🎃