Files
domnitor/CONTRIBUTING.md

320 lines
7.8 KiB
Markdown
Raw Permalink Normal View History

2025-10-08 14:23:07 +03:00
# Contributing to Domain Monitor
Thank you for your interest in contributing to Domain Monitor! This document provides guidelines and instructions for contributing.
## 🌟 Ways to Contribute
- 🐛 **Report bugs** - Help us identify and fix issues
- 💡 **Suggest features** - Share ideas for improvements
- 📝 **Improve documentation** - Help others understand the project
- 🔧 **Submit code** - Fix bugs or implement features
- 🎨 **Enhance UI/UX** - Improve the user experience
- 🌍 **Add translations** - Make the project accessible to more users
## 🐛 Reporting Bugs
Before submitting a bug report:
1. **Check existing issues** to avoid duplicates
2. **Update to the latest version** to see if the issue persists
3. **Gather information** about your environment
When reporting a bug, include:
- Clear description of the issue
- Steps to reproduce
- Expected vs actual behavior
- Environment details (OS, PHP version, etc.)
- Error messages and logs
- Screenshots if applicable
Use our [Bug Report Template](.github/ISSUE_TEMPLATE/bug_report.md).
## 💡 Suggesting Features
We welcome feature suggestions! Before submitting:
1. **Check the roadmap** to see if it's already planned
2. **Search existing issues** to avoid duplicates
3. **Consider the project scope** - does it fit?
When suggesting a feature, include:
- Clear description of the feature
- Problem it solves
- Use cases and benefits
- Implementation ideas (if any)
Use our [Feature Request Template](.github/ISSUE_TEMPLATE/feature_request.md).
## 🔧 Code Contributions
### Getting Started
1. **Fork the repository**
```bash
git clone https://github.com/Hosteroid/domain-monitor.git
cd domain-monitor
```
2. **Install dependencies**
```bash
composer install
```
3. **Set up your development environment**
- Copy `env.example.txt` to `.env`
- Configure database settings
Upgraded to 1.1.0 1.1.0 (2025-10-09) - **User Notifications System** - In-app notification center with 7 notification types, filtering, pagination - **Advanced Session Management** - Database-backed sessions with geolocation (country, city, ISP) - **Remote Session Control** - Terminate any device instantly with immediate logout validation - **Enhanced Profile Page** - Sidebar navigation with 4 tabs, hash-based routing (#profile, #security, #sessions) - **MVC Architecture Refactoring** - 3 new Helpers (Layout, Domain, Session), ~265 lines cleaned from views - **Geolocation Tracking** - IP-based location detection using ip-api.com, country flags with flag-icons - **Device Detection** - Browser & device type parsing (Chrome/Firefox/Safari, Desktop/Mobile/Tablet) - **Auto-Detected Cron Paths** - Settings show actual installation paths (thanks @jadeops) - **Welcome Notifications** - Sent to new users on registration or fresh install - **Upgrade Notifications** - Admins notified on system updates with version & migration count - **Web-Based Installer** - Replaces CLI, auto-generates encryption key, one-time password display - **Web-Based Updater** - `/install/update` for running new migrations with smart detection - **User Registration** - Full signup flow with email verification, password reset, resend verification - **User Management** - CRUD for users with filtering, sorting, pagination (admin-only) - **Remember Me** - 30-day secure tokens linked to sessions, cascade deletion on logout - **Session Validator** - Middleware validates sessions on every request for instant remote logout - **Consistent UI/UX** - Unified filtering, sorting, pagination across Domains, Users, Notifications, TLD Registry - **Smart Migrations** - Consolidated schema for fresh installs, incremental for upgrades - **XSS Protection** - htmlspecialchars() applied across all user-facing data (thanks @jadeops)
2025-10-09 18:02:46 +03:00
- Run web installer: Visit `http://localhost:8000` (or your local domain)
2025-10-08 14:23:07 +03:00
4. **Create a feature branch**
```bash
git checkout -b feature/your-feature-name
```
### Coding Standards
We follow PSR-12 coding standards. Key points:
#### PHP Code Style
- Use 4 spaces for indentation (no tabs)
- Follow PSR-12 naming conventions
- Add type hints for parameters and return types
- Use strict typing: `declare(strict_types=1);`
#### File Organization
- Controllers in `app/Controllers/`
- Models in `app/Models/`
- Services in `app/Services/`
- Views in `app/Views/`
#### Naming Conventions
```php
// Classes: PascalCase
class DomainController {}
// Methods: camelCase
public function getDomainInfo() {}
// Variables: camelCase
$domainName = 'example.com';
// Constants: UPPER_SNAKE_CASE
const MAX_DOMAINS = 1000;
// Database tables: snake_case
domains, notification_groups, notification_logs
```
#### Documentation
```php
/**
* Get domain information via WHOIS lookup
*
* @param string $domain The domain name to lookup
* @return array|null Domain info or null if lookup fails
*/
public function getDomainInfo(string $domain): ?array
{
// Implementation
}
```
#### Security
- Always use prepared statements for SQL queries
- Sanitize user input with `htmlspecialchars()`
- Validate and type-check all inputs
- Never expose sensitive data in error messages
### Database Changes
If your contribution includes database changes:
1. **Create a new migration file** in `database/migrations/`
Upgraded to 1.1.0 1.1.0 (2025-10-09) - **User Notifications System** - In-app notification center with 7 notification types, filtering, pagination - **Advanced Session Management** - Database-backed sessions with geolocation (country, city, ISP) - **Remote Session Control** - Terminate any device instantly with immediate logout validation - **Enhanced Profile Page** - Sidebar navigation with 4 tabs, hash-based routing (#profile, #security, #sessions) - **MVC Architecture Refactoring** - 3 new Helpers (Layout, Domain, Session), ~265 lines cleaned from views - **Geolocation Tracking** - IP-based location detection using ip-api.com, country flags with flag-icons - **Device Detection** - Browser & device type parsing (Chrome/Firefox/Safari, Desktop/Mobile/Tablet) - **Auto-Detected Cron Paths** - Settings show actual installation paths (thanks @jadeops) - **Welcome Notifications** - Sent to new users on registration or fresh install - **Upgrade Notifications** - Admins notified on system updates with version & migration count - **Web-Based Installer** - Replaces CLI, auto-generates encryption key, one-time password display - **Web-Based Updater** - `/install/update` for running new migrations with smart detection - **User Registration** - Full signup flow with email verification, password reset, resend verification - **User Management** - CRUD for users with filtering, sorting, pagination (admin-only) - **Remember Me** - 30-day secure tokens linked to sessions, cascade deletion on logout - **Session Validator** - Middleware validates sessions on every request for instant remote logout - **Consistent UI/UX** - Unified filtering, sorting, pagination across Domains, Users, Notifications, TLD Registry - **Smart Migrations** - Consolidated schema for fresh installs, incremental for upgrades - **XSS Protection** - htmlspecialchars() applied across all user-facing data (thanks @jadeops)
2025-10-09 18:02:46 +03:00
- Name it: `XXX_descriptive_name.sql` (e.g., `014_add_new_feature.sql`)
- Use sequential numbering (next available number)
2025-10-08 14:23:07 +03:00
- Include `IF NOT EXISTS` checks where appropriate
Upgraded to 1.1.0 1.1.0 (2025-10-09) - **User Notifications System** - In-app notification center with 7 notification types, filtering, pagination - **Advanced Session Management** - Database-backed sessions with geolocation (country, city, ISP) - **Remote Session Control** - Terminate any device instantly with immediate logout validation - **Enhanced Profile Page** - Sidebar navigation with 4 tabs, hash-based routing (#profile, #security, #sessions) - **MVC Architecture Refactoring** - 3 new Helpers (Layout, Domain, Session), ~265 lines cleaned from views - **Geolocation Tracking** - IP-based location detection using ip-api.com, country flags with flag-icons - **Device Detection** - Browser & device type parsing (Chrome/Firefox/Safari, Desktop/Mobile/Tablet) - **Auto-Detected Cron Paths** - Settings show actual installation paths (thanks @jadeops) - **Welcome Notifications** - Sent to new users on registration or fresh install - **Upgrade Notifications** - Admins notified on system updates with version & migration count - **Web-Based Installer** - Replaces CLI, auto-generates encryption key, one-time password display - **Web-Based Updater** - `/install/update` for running new migrations with smart detection - **User Registration** - Full signup flow with email verification, password reset, resend verification - **User Management** - CRUD for users with filtering, sorting, pagination (admin-only) - **Remember Me** - 30-day secure tokens linked to sessions, cascade deletion on logout - **Session Validator** - Middleware validates sessions on every request for instant remote logout - **Consistent UI/UX** - Unified filtering, sorting, pagination across Domains, Users, Notifications, TLD Registry - **Smart Migrations** - Consolidated schema for fresh installs, incremental for upgrades - **XSS Protection** - htmlspecialchars() applied across all user-facing data (thanks @jadeops)
2025-10-09 18:02:46 +03:00
2. **Update `app/Controllers/InstallerController.php`**
- Add your migration to the `$incrementalMigrations` array
- Add it to the appropriate version upgrade path
2025-10-08 14:23:07 +03:00
Upgraded to 1.1.0 1.1.0 (2025-10-09) - **User Notifications System** - In-app notification center with 7 notification types, filtering, pagination - **Advanced Session Management** - Database-backed sessions with geolocation (country, city, ISP) - **Remote Session Control** - Terminate any device instantly with immediate logout validation - **Enhanced Profile Page** - Sidebar navigation with 4 tabs, hash-based routing (#profile, #security, #sessions) - **MVC Architecture Refactoring** - 3 new Helpers (Layout, Domain, Session), ~265 lines cleaned from views - **Geolocation Tracking** - IP-based location detection using ip-api.com, country flags with flag-icons - **Device Detection** - Browser & device type parsing (Chrome/Firefox/Safari, Desktop/Mobile/Tablet) - **Auto-Detected Cron Paths** - Settings show actual installation paths (thanks @jadeops) - **Welcome Notifications** - Sent to new users on registration or fresh install - **Upgrade Notifications** - Admins notified on system updates with version & migration count - **Web-Based Installer** - Replaces CLI, auto-generates encryption key, one-time password display - **Web-Based Updater** - `/install/update` for running new migrations with smart detection - **User Registration** - Full signup flow with email verification, password reset, resend verification - **User Management** - CRUD for users with filtering, sorting, pagination (admin-only) - **Remember Me** - 30-day secure tokens linked to sessions, cascade deletion on logout - **Session Validator** - Middleware validates sessions on every request for instant remote logout - **Consistent UI/UX** - Unified filtering, sorting, pagination across Domains, Users, Notifications, TLD Registry - **Smart Migrations** - Consolidated schema for fresh installs, incremental for upgrades - **XSS Protection** - htmlspecialchars() applied across all user-facing data (thanks @jadeops)
2025-10-09 18:02:46 +03:00
3. **Test the migration** using the web updater at `/install/update`
2025-10-08 14:23:07 +03:00
### Frontend Changes
If modifying views:
- Follow the established design patterns
- Use consistent spacing and styling
- Ensure responsive design (mobile-friendly)
- Test in multiple browsers
- Use semantic HTML
- Keep JavaScript minimal and vanilla (no frameworks)
### Testing
Before submitting:
1. **Test your changes** thoroughly
- Test in different environments
- Test edge cases
- Test with different PHP versions (8.1+)
2. **Check for errors**
- No PHP warnings or notices
- No console errors (for UI changes)
- No SQL errors
3. **Verify functionality**
- Feature works as expected
- Doesn't break existing functionality
- Handles errors gracefully
### Commit Messages
Write clear, descriptive commit messages:
```bash
# Good commit messages
git commit -m "Add RDAP support for .uk domains"
git commit -m "Fix notification duplicate issue on cron"
git commit -m "Update UI design for consistency"
# Bad commit messages
git commit -m "fix bug"
git commit -m "changes"
git commit -m "update"
```
**Format:**
- Use present tense ("Add feature" not "Added feature")
- Be specific and descriptive
- Reference issues when applicable: "Fix #123: Domain refresh error"
### Pull Request Process
1. **Update documentation** if needed
- README.md for new features
- CHANGELOG.md for all changes
- Inline code comments
2. **Create Pull Request**
- Use a clear title
- Describe what changed and why
- Link related issues
- Add screenshots for UI changes
3. **PR Template**
```markdown
## Description
Brief description of changes
## Type of Change
- [ ] Bug fix
- [ ] New feature
- [ ] Breaking change
- [ ] Documentation update
## Testing
How has this been tested?
## Checklist
- [ ] Code follows project style
- [ ] Self-review completed
- [ ] Comments added for complex code
- [ ] Documentation updated
- [ ] No new warnings
- [ ] Tests pass
```
4. **Respond to feedback**
- Address review comments
- Make requested changes
- Keep the conversation productive
## 📝 Documentation
Help improve our documentation:
- Fix typos and unclear explanations
- Add examples and use cases
- Improve installation instructions
- Create tutorials or guides
- Translate documentation
## 🎨 Design Guidelines
When contributing UI/UX changes:
- **Consistency** - Follow existing design patterns
- **Accessibility** - Ensure usability for all users
- **Responsiveness** - Works on all screen sizes
- **Performance** - Optimize images and assets
- **Simplicity** - Keep it clean and intuitive
## 🌍 Translations
We welcome translations! To add a new language:
1. Create language files in appropriate directories
2. Follow existing translation structure
3. Test thoroughly with the interface
4. Ensure all strings are translated
## 📜 Code of Conduct
### Our Standards
- Be respectful and inclusive
- Welcome newcomers
- Accept constructive criticism
- Focus on what's best for the community
- Show empathy towards others
### Unacceptable Behavior
- Harassment or discrimination
- Trolling or insulting comments
- Public or private harassment
- Publishing others' private information
- Other unprofessional conduct
## 🏆 Recognition
Contributors are recognized in:
- CHANGELOG.md for significant contributions
- README.md contributors section
- GitHub contributors page
## 📞 Getting Help
- 💬 [GitHub Discussions](https://github.com/Hosteroid/domain-monitor/discussions) - Ask questions
- 🐛 [Issues](https://github.com/Hosteroid/domain-monitor/issues) - Report bugs
- 📖 [Wiki](https://github.com/Hosteroid/domain-monitor/wiki) - Documentation
## 📋 Project Priorities
Current focus areas:
1. Bug fixes and stability
2. Performance improvements
3. Documentation
4. New notification channels
5. API development
6. Multi-user support
See [CHANGELOG.md](CHANGELOG.md) for the full roadmap.
---
<div align="center">
**Thank you for contributing to Domain Monitor!** 🚀
A project by [Hosteroid](https://www.hosteroid.uk) - Premium Hosting Solutions
</div>