Thank you for your interest in contributing to PlanForge! This document provides guidelines and information for contributors.
By participating in this project, you agree to maintain a respectful and inclusive environment for everyone.
- Check if the bug has already been reported in Issues
- If not, create a new issue with:
- A clear, descriptive title
- Steps to reproduce the bug
- Expected vs actual behavior
- Your environment (PHP version, OS, etc.)
- Check existing issues for similar suggestions
- Create a new issue with the
enhancementlabel - Describe the feature and its use case
- Fork the repository
- Create a feature branch:
git checkout -b feature/your-feature-name - Make your changes
- Run tests:
./vendor/bin/pest - Run linting:
./vendor/bin/pint - Commit with a clear message
- Push and create a Pull Request
# Clone your fork
git clone https://github.com/MujahidAbbas/planforge.git
cd planforge
# Install dependencies
composer install
npm install
# Setup environment
cp .env.example .env
php artisan key:generate
# Create database
touch database/database.sqlite
php artisan migrate
# Build assets
npm run build- Follow PSR-12 coding style
- Use Laravel Pint for formatting:
./vendor/bin/pint - Write tests for new features
- Use type hints and return types
- Use Tailwind CSS for styling
- Follow Alpine.js conventions for interactivity
- Use clear, descriptive commit messages
- Reference issues when applicable:
Fix #123: Description
# Run all tests
./vendor/bin/pest
# Run specific test
./vendor/bin/pest tests/Feature/ExportTest.php
# Run with coverage
./vendor/bin/pest --coverageapp/
├── Actions/ # Single-purpose action classes
├── Enums/ # PHP enums for status values
├── Jobs/ # Queue jobs for AI generation
├── Livewire/ # Livewire components
├── Models/ # Eloquent models
└── Services/ # Service classes
tests/
├── Feature/ # Feature tests
└── Unit/ # Unit tests
Feel free to open an issue for any questions about contributing.