I am a prolific coder!
I am often coding for 12 hours or more a day.
But my GitHub doesn't reflect this because I often test locally and many things never make it to GitHub.
But seeing all those blank spaces in my GitHub activity makes me look lazy.
To fix this I made the Prolific app.
Just download and let it know which folder you code your projects in.
Each time you start a new project, it will detect the new folder.
Each time you modify files, add files, delete files, create other assets, Prolific will detect the changes.
Every 1-4 hours, it will push an anonymized report to the git repo of your choice. (creating activity on githubs contributions calendar)
After the first run (baseline), it will run automatically (including scheduled runs) and push a report on what you have been doing (no details).
It also creates a nice little bubblemap with each project being a node on the bubblemap.
It will identify the languages you are coding in based on file extension and color code bubblemap items accordingly.
- Never reads file contents (no parsing, no hashing contents, no string searching).
- Scans use metadata only: size (bytes), mtime, is_dir, extension.
- Reports committed to git contain aggregates only (no file names/paths).
- Watch folders are represented as pseudonymous project IDs (e.g.
Project-1a2b3c4d5e), not real folder names/paths.
Do not watch entire drives (e.g. C:\ or /) or very large folders (like your whole home directory). That can cause excessive CPU/memory usage and long scans. Prefer specific project folders and use excludes.
Inside your configured repo, the agent writes:
reports/YYYY-MM-DD/HHmmss.json(aggregated event)reports/YYYY-MM-DD/HHmmss.md(human summary)docs/index.html+docs/events.json(GitHub Pages site)viz/index.html+viz/events.json(local copy; same content)
You need a separate git repo (public or private) where the agent will commit the reports/ and viz/ folders.
- Create a new empty repo on GitHub (private is fine), e.g.
prolific-activity. - Clone it locally (pick any folder you want).
- Make sure
git pushworks from that folder (auth is required).
cd C:\path\to
git clone https://github.com/YOUR_USER/prolific-activity.git
cd .\prolific-activity
git status
git commit --allow-empty -m "Initialize activity repo"
git push -u origin maincd /path/to
git clone https://github.com/YOUR_USER/prolific-activity.git
cd prolific-activity
git status
git commit --allow-empty -m "Initialize activity repo"
git push -u origin mainNotes:
- If your default branch is
master(or anything else), setagent.branchin the config to match. - For authentication:
- HTTPS usually requires a GitHub token (PAT) or your OS credential manager.
- SSH requires an SSH key loaded for your GitHub account.
- Languages used: inferred by file extension (e.g.
.py,.ts,.js). - Estimated LOC: derived from byte deltas only, using
bytes_per_loc(slightly optimistic defaults; configurable per language).
- Python 3.11+
gitinstalled (for commit/push)- UI: Tkinter (included on Windows/macOS Python; on some Linux distros you may need package
python3-tk)
You have two ways to install/run:
- Install Python 3.11+ (from python.org). During install, check “Add Python to PATH”.
- Then double‑click:
Launch-Prolific-Git-Active.bat
This will create a local .venv/, install the app, and open the UI.
- Ensure
python3is installed. - Run:
chmod +x ./launch-ui.sh
./launch-ui.shFrom the project folder:
pip install -e .Create config (repeat --scan-path to watch multiple folders):
prolific-agent init \
--scan-path "/path/to/project1" \
--scan-path "/path/to/project2" \
--repo-path "/path/to/activity-report-repo"prolific-agent init `
--scan-path "C:\path\to\project1" `
--scan-path "C:\path\to\project2" `
--repo-path "C:\path\to\activity-report-repo"Run one cycle:
prolific-agent runCheck config:
prolific-agent statusLaunch:
prolific-agent uiOr:
prolific-agent-uiIn the UI you can add/remove watch folders, save config, and click Run now.
Scheduling is manual by design: installing a background timer/service modifies your OS (Scheduled Task / systemd). We provide scripts, but you choose when to run them.
The interactive bubblemap is generated as a small static site in docs/.
- Go to your activity repo on GitHub → Settings → Pages.
- Under Build and deployment:
- Source: Deploy from a branch
- Branch: your branch (usually
main) - Folder: /docs
- Save. After it deploys, your bubblemap will be at your repo’s GitHub Pages URL.
If you don’t see updates immediately, wait a minute and refresh (Pages deployments are not instant).
- Scripts:
scripts/install_windows.ps1,scripts/uninstall_windows.ps1 - Install example (PowerShell):
powershell -ExecutionPolicy Bypass -File scripts\install_windows.ps1 `
-ConfigPath "$HOME\.prolific\config.toml" `
-IntervalHours 2- Uninstall example:
powershell -ExecutionPolicy Bypass -File scripts\uninstall_windows.ps1- Scripts:
scripts/install_linux.sh,scripts/uninstall_linux.sh - Install example:
bash scripts/install_linux.sh "$HOME/.prolific/config.toml" 2- Uninstall example:
bash scripts/uninstall_linux.shUsage examples are in scripts/README.md.
Default config location:
~/.prolific/config.toml
Key fields:
agent.scan_paths: list of folders to watchagent.repo_path: target git repo for reports/vizagent.exclude_globs: exclude patterns (recommended)agent.bytes_per_loc: per-language calibrationagent.push: set false to commit without pushingagent.branch/agent.remote: git target
- Push fails: the run still commits locally and logs the push error to
~/.prolific/agent.log. Next run will retry pushing the newer commit. - Nothing committed: if
reports/andviz/didn’t change, there’s nothing to commit (or the repo isn’t a valid git repo). - Linux UI fails to start: install Tkinter (commonly
python3-tk) and retry.
