A simple tool to generate activity reports from GitHub and local activity data, inspired by Elon Musk's "What did you get done this week?" question. Perfect for team leads, managers, and anyone who wants to track and showcase their progress and achievements.
- π Generate activity reports for individual GitHub users
- π₯ Create team activity summaries
- π Export reports in Markdown format
- π Web UI for easy viewing and sharing
- π Automated weekly report generation (GitHub Pages)
- π» ActivityWatch integration for local activity tracking (optional)
- π― Smart filtering of noise and merge commits
- π¨ Dark/light mode support in web UI
- π± Responsive design for mobile and desktop
Visit the live demo at: https://erikbjare.github.io/whatdidyougetdone/
The web UI allows you to:
- Enter any GitHub username to generate a report
- View team reports
- Toggle between dark/light mode
- Share reports easily
The script uses uv's inline script metadata for dependency management.
- Install uv:
curl -LsSf https://astral.sh/uv/install.sh | sh- Set up GitHub token:
export GITHUB_TOKEN=your_token_here- Run the tool:
./whatdidyougetdone.py report usernameGenerate a report for a single user:
./whatdidyougetdone.py report usernameOptions:
--days N: Look back N days (default: 7)--output FILE: Save to file (default: stdout)--activitywatch: Include local ActivityWatch data (requires ActivityWatch)
Example:
# Generate last 14 days for erikbjare
./whatdidyougetdone.py report erikbjare --days 14
# Save to file
./whatdidyougetdone.py report erikbjare --output report.md
# Include local activity data
./whatdidyougetdone.py report erikbjare --activitywatchGenerate a combined report for multiple team members:
./whatdidyougetdone.py team username1 username2 username3Options:
--days N: Look back N days (default: 7)--output FILE: Save to file
Example:
# Generate team report for gptme contributors
./whatdidyougetdone.py team ErikBjare TimeToBuildBob --days 7Specify exact date ranges:
./whatdidyougetdone.py report username --start 2024-01-01 --end 2024-01-31# What did erikbjare get done?
Activity report for the last 7 days:
## ErikBjare/gptme
- β
feat: add RAG support (#123)
- π Implement context management (#59)
- π» fix: improve error handling
## ActivityWatch/activitywatch
- β
docs: update installation instructions
- π» feat: add new visualizationActivityWatch is a privacy-preserving time tracker that runs locally on your machine. The integration allows you to combine GitHub activity with local development activity for a complete picture.
- Install and run ActivityWatch:
# See https://activitywatch.net/ for installation- Generate reports with local data:
./whatdidyougetdone.py report username --activitywatch- Editor activity (VSCode, Vim, etc.)
- Application usage
- Project time breakdown
- Local commits and file changes
All ActivityWatch data stays on your local machine. The tool only accesses data you explicitly request, and nothing is sent to external servers.
The project includes automated weekly report generation via GitHub Actions.
- Fork this repository
- Add
GITHUB_TOKENsecret with read permissions - Enable GitHub Pages (Settings β Pages β Deploy from branch:
gh-pages) - Reports will be automatically generated weekly
You can manually trigger report generation from the Actions tab.
- Individual reports for configured users
- Team reports for configured teams
- Customizable date ranges
- Automatic gh-pages deployment
The project includes a modern, responsive web interface for viewing reports.
- π No backend required (static HTML/CSS/JS)
- π¨ Dark/light mode toggle
- π± Mobile-friendly responsive design
- π Real-time GitHub API integration
- π€ Easy sharing via URL
Open index.html in your browser, or use a simple HTTP server:
python -m http.server 8000
# Open http://localhost:8000The web UI is automatically deployed to GitHub Pages via the generate-reports.yml workflow.
- Clone the repository:
git clone https://github.com/TimeToBuildBob/whatdidyougetdone.git
cd whatdidyougetdone- Make the script executable:
chmod +x whatdidyougetdone.py- Install pre-commit hooks:
pip install pre-commit
pre-commit install# Linting and type checking
pre-commit run --all-files
# Manual checks
ruff check whatdidyougetdone.py
mypy whatdidyougetdone.pyThe script uses uv's inline script metadata, which automatically manages:
PyGithub- GitHub API clientaw-client- ActivityWatch client (optional)
Dependencies are isolated and managed automatically by uv.
Contributions are welcome! Please feel free to submit a Pull Request.
- Additional data sources (GitLab, Bitbucket, etc.)
- Enhanced ActivityWatch integration
- Report templates and formatting options
- Web UI improvements
- Documentation improvements
- Follow the existing code style (enforced by ruff/mypy)
- Add tests for new features
- Update documentation
- Keep the script standalone and minimal
Fetches GitHub activity for a user over the specified number of days.
Returns: Dictionary with activity data including:
repos: Dictionary of repositories with their eventstotal_events: Total number of eventsdate_range: Start and end dates
Generates a formatted Markdown report.
Parameters:
username: GitHub usernamedays: Number of days to look backoutput: Optional file path to save report
Returns: Markdown-formatted report string
Fetches local ActivityWatch data (requires ActivityWatch running).
Returns: Dictionary with local activity data including:
total_time: Total tracked timeprojects: Time spent per projecteditors: Editor usage statistics
The tool provides a simple CLI using Python's argparse:
# Report command
whatdidyougetdone.py report <username> [options]
# Team command
whatdidyougetdone.py team <username1> <username2> ... [options]See --help for full options.
A: Yes, for CLI usage. The web UI makes requests from the browser, so it uses the visitor's IP limits.
A: Visit GitHub Settings β Developer settings β Personal access tokens β Generate new token. Only public repository read access is needed.
A: Yes, if you grant the appropriate permissions to your GitHub token.
A: Not currently, but contributions are welcome!
A: Yes! ActivityWatch data stays local, and GitHub data is fetched directly from GitHub's API using your token.
MIT License - see LICENSE file for details.
Inspired by Elon Musk's famous question: "What did you get done this week?"
Built with:
- Python 3.10+
- PyGithub for GitHub API
- ActivityWatch for local tracking
- GitHub Actions for automation
- Pure HTML/CSS/JS for web UI