Thank you for your interest in contributing to the Student Profiling for Learners with Disabilities (SPLWD) System! We welcome contributions from the community and appreciate your help in making this project better.
- Code of Conduct
- Getting Started
- How to Contribute
- Development Setup
- Coding Standards
- Testing Guidelines
- Pull Request Process
- Issue Reporting
- Documentation
This project and everyone participating in it is governed by our Code of Conduct. By participating, you are expected to uphold this code.
Before contributing, ensure you have:
- PHP 8.0 or higher
- MySQL 8.0 or higher
- Composer 2.0 or higher
- Git
- A GitHub account
- Fork the repository on GitHub
- Clone your fork locally:
git clone https://github.com/YOUR_USERNAME/SPLWD.git
cd SPLWD- Add the original repository as upstream:
git remote add upstream https://github.com/VoxDroid/SPLWD.gitWe welcome several types of contributions:
- Bug fixes: Help us identify and fix issues
- Feature enhancements: Propose and implement new features
- Documentation improvements: Help improve our docs
- Code quality: Refactoring, optimization, and cleanup
- Testing: Add or improve test coverage
- UI/UX improvements: Enhance user experience
- Check existing issues: Look for existing issues or create a new one
- Discuss: Comment on the issue to discuss your approach
- Create a branch: Create a feature branch for your work
- Make changes: Implement your changes following our guidelines
- Test: Ensure all tests pass and add new tests if needed
- Submit: Create a pull request with a clear description
- Install dependencies:
composer install- Set up environment:
cp .env.example .env
# Edit .env with your local database credentials- Set up database:
# Create database and import schema
mysql -u root -p < database/sc_district.sql- Run tests:
composer test- Start development server:
php -S localhost:8000- Follow PSR-12 coding standards
- Use PSR-4 autoloading
- Write self-documenting code with clear variable and function names
- Add PHPDoc comments for all classes and methods
<?php
namespace App\Models;
/**
* Student model for managing learner data
*/
class Student
{
/**
* Get student by ID
*
* @param int $id Student ID
* @return array|null Student data or null if not found
*/
public function getById(int $id): ?array
{
// TODO: Implement method logic
return null;
}
}- Use semantic HTML5 elements
- Follow BEM methodology for CSS classes
- Write modern JavaScript (ES6+)
- Ensure responsive design principles
- Use prepared statements for all queries
- Follow normalized database design
- Use meaningful table and column names
- Add proper indexes for performance
- Write tests for all new functionality
- Maintain minimum 90% code coverage
- Use descriptive test names
- Follow AAA pattern (Arrange, Act, Assert)
<?php
use PHPUnit\\Framework\\TestCase;
class StudentTest extends TestCase
{
public function testCanCreateStudentWithValidData(): void
{
// Arrange
$studentData = [
'name' => 'John Doe',
'grade' => '5',
'disability_type' => 'Learning Disability'
];
// Act
$student = new Student($studentData);
// Assert
$this->assertEquals('John Doe', $student->getName());
$this->assertEquals('5', $student->getGrade());
}
}# Run all tests
composer test
# Run specific test file
./vendor/bin/phpunit tests/StudentTest.php
# Run tests with coverage
./vendor/bin/phpunit --coverage-html coverage/- Update your branch:
git fetch upstream
git rebase upstream/main- Run tests:
composer test- Check code style:
composer cs-check- Clear title: Use descriptive titles
- Detailed description: Explain what and why
- Link issues: Reference related issues
- Screenshots: Include UI changes screenshots
- Tests: Ensure all tests pass
- Documentation: Update docs if needed
When creating a PR, use our Pull Request Template.
When reporting bugs, include:
- Clear title: Descriptive summary
- Steps to reproduce: Detailed reproduction steps
- Expected behavior: What should happen
- Actual behavior: What actually happens
- Environment: PHP version, OS, browser
- Screenshots: If applicable
For feature requests, include:
- Problem description: What problem does this solve?
- Proposed solution: How should it work?
- Alternatives: Other solutions considered
- Additional context: Any other relevant information
- Use clear, concise language
- Include code examples where helpful
- Keep up-to-date with code changes
- Follow Markdown best practices
- README: Project overview and setup
- API Documentation: Code documentation
- User Guides: End-user instructions
- Technical Docs: Architecture and design decisions
Use conventional commit format:
type(scope): description
[optional body]
[optional footer]
- feat: New feature
- fix: Bug fix
- docs: Documentation changes
- style: Code style changes
- refactor: Code refactoring
- test: Test additions/changes
- chore: Maintenance tasks
feat(auth): add password reset functionality
fix(database): resolve connection timeout issue
docs(readme): update installation instructions
test(student): add unit tests for student model
- Security enhancements
- Performance optimization
- Mobile responsiveness
- Accessibility improvements
- Test coverage expansion
- API development for mobile apps
- Advanced reporting features
- Integration with external systems
- Multi-language support
- GitHub Issues: For bugs and feature requests
- Email: izeno.contact@gmail.com for direct contact
- Documentation: Check
/docsfolder for technical details
- Bug reports: Within 48 hours
- Feature requests: Within 1 week
- Pull requests: Within 72 hours
Contributors will be recognized in:
- README.md: Contributors section
- Release notes: Major contributions
- GitHub: Contributor graphs and statistics
Thank you for contributing to SPLWD! Your efforts help improve education technology for learners with disabilities.