Turn your GitHub commits into a professional work log
Perfect for internships, freelance reports, and portfolio reviews
You've been coding for weeks. Your commits tell the story. But when your manager asks "What did you work on?" or a client wants a progress report, you're stuck:
- ❌ Scrolling through
git log(ugly, technical) - ❌ Manually copy-pasting commits into Google Docs
- ❌ Hoping your PR descriptions are detailed enough
CommitLedger fixes this in 30 seconds:
- Paste your repo URL
- Pick a date range
- Export a polished work log (Markdown or PDF)
- ✅ Private repos supported — secure GitHub OAuth
- ✅ No data stored — 100% privacy-first, zero database
- ✅ Beautiful exports — professional Markdown & PDF
- ✅ Lightning fast — no signup, no config, just paste & go
- Next.js 14+ (App Router, React Server Components)
- TypeScript (strict mode)
- CSS Modules (no Tailwind)
- iron-session (encrypted cookie sessions)
- Octokit (GitHub REST API)
- jsPDF (PDF generation)
- Node.js 18+
- A GitHub OAuth App (create one here)
# Clone the repo
git clone https://github.com/flodlol/commitledger.git
cd commitledger
# Install dependencies
npm install
# Copy environment variables
cp .env.example .env.local
# Fill in your GitHub OAuth credentials and session secret
# See .env.example for instructions
# Start the dev server
npm run devOpen http://localhost:3000 to start generating work logs.
- Go to github.com/settings/applications/new
- Application name: CommitLedger (or anything)
- Homepage URL:
http://localhost:3000 - Authorization callback URL:
http://localhost:3000/auth/callback - Click "Register application"
- Copy the Client ID and generate a Client Secret
- Add both to your
.env.local
- Interns documenting weekly contributions
- Freelancers generating client progress reports
- Open-source maintainers summarizing work for sponsors
- Job seekers creating portfolio activity logs
- No database — your commit data is never stored
- No tracking — we don't log repos or export contents
- Secure OAuth — tokens stored in encrypted httpOnly cookies, never in localStorage
- PKCE flow — prevents authorization code interception
- Open source — audit the code yourself
Markdown Output
# Work Log: facebook/react
**Author:** gaearon
**Period:** Jan 1 – Jan 31, 2024
**Total Commits:** 47
## January 1, 2024
### [Add React.use() for suspense data fetching](https://github.com/...)
**Time:** 10:23 AM
**Files changed:** 5 (+124 -32)
**Modified files:**
- `packages/react/src/ReactHooks.js`
- `packages/react-reconciler/src/ReactFiberHooks.js`
---
## Summary
- Total commits: 47
- Files changed: 142
- Lines added: 3,421
- Lines deleted: 1,203PDF Output
Professional PDF with:
- Navy headings, gray body text
- Date-grouped commits with timestamps
- File change statistics
- Page numbers and generation date
- MVP: Single repo, Markdown/PDF export
- Multi-repo support
- Custom export templates
- CLI tool
- Browser extension
Contributions are welcome and appreciated! Whether it's fixing a typo, improving the UI, adding a feature, or just reporting a bug. All help is valued.
- Bug reports — Found something broken? Open an issue
- Feature requests — Have an idea? Let's hear it
- Pull requests — Code contributions are always welcome
- Documentation — Help make the README or comments clearer
- Design feedback — Suggestions for better UX are great too
- Fork the repo
- Create a branch (
git checkout -b my-feature) - Make your changes
- Run
npm run lintto check for issues - Commit and push
- Open a pull request
No contribution is too small. Even fixing a single typo helps.
MIT — do whatever you want with it.
Thanks for checking it out! ❤️
Sponsor this project
