yxx / weekly-report
Generate weekly reports from git commits and GitHub issues, with email preview and confirmation workflow.
Installs: 1
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/yxx/weekly-report
Requires
- php: ^8.1
- illuminate/console: ^9.0|^10.0|^11.0
- illuminate/mail: ^9.0|^10.0|^11.0
- illuminate/routing: ^9.0|^10.0|^11.0
- illuminate/support: ^9.0|^10.0|^11.0
README
A Laravel package that generates weekly reports from git commits and GitHub issues, with an email preview and confirmation workflow.
Installation
composer require yxx/weekly-report
Setup
Add to your .env:
WEEKLY_REPORT_PREVIEW_TO=you@example.com WEEKLY_REPORT_RECIPIENTS=boss@example.com,team@example.com
That's it. Everything else is auto-detected:
| Item | Auto-detection |
|---|---|
| GitHub token | gh auth token (GitHub CLI) |
| Repo owner/name | git remote get-url origin |
| Repo path | Defaults to current project |
| Mail from | Laravel's MAIL_FROM_* config |
Multi-repo setup (optional)
Edit config/weekly-report.php:
'repositories' => [ ['path' => '/path/to/repo-a'], ['path' => '/path/to/repo-b'], ],
Usage
# Generate and send preview email php artisan report:weekly # Dry run - show data without sending emails php artisan report:weekly --dry-run # Generate for a previous week php artisan report:weekly --weeks-ago=1
How it works
- Scans
git logfor the current week's commits - Extracts
#issuereferences from commit messages - Fetches issue titles via GitHub API
- Sends a preview email to you (with Confirm / Cancel signed URL buttons)
- Click Confirm → final report sent to all recipients
- Click Cancel → report discarded
- Links expire after 24 hours
Customization
php artisan vendor:publish --tag=weekly-report-views
Architecture
src/
├── Commands/WeeklyReportCommand.php # report:weekly command
├── Http/Controllers/ # Signed URL confirm/cancel
├── Mail/ # Preview and final mailables
├── Services/
│ ├── GitLogParser.php # Git log parsing + issue extraction
│ ├── GitHubClient.php # GitHub API client (auto token via gh CLI)
│ └── ReportGenerator.php # Orchestrator
└── WeeklyReportServiceProvider.php # Auto-registered provider
License
MIT