Transform your Git commits into professional reports with AI
A lightweight desktop application that automatically generates weekly/monthly reports from your Git repositories using LLM technology.
English | 简体中文
Features • Installation • Usage • Tech Stack • Development • License
- Multi-Repository Support: Manage multiple Git repositories simultaneously with automatic session restoration
- AI-Powered Reports: Generate weekly/monthly reports using OpenAI, Claude, Gemini, or local LLM models
- Smart Commit Analysis: Filter commits by author, date range, and repository
- Customizable Templates: Create and manage report templates with Handlebars syntax
- Real-time Streaming: Watch your reports being generated in real-time
- Multiple Export Formats: Export reports as Markdown, HTML, or PDF
- Modern UI: Built with shadcn/ui and Tailwind CSS for a clean, responsive interface
- Dark/Light Mode: Full theme support with system preference detection
- Internationalization: Support for English and Chinese (easily extensible)
- Global Repository Access: Manage repositories from anywhere via the top bar
- Persistent State: Automatically restores your last session on startup
- Local-First: All data stored locally on your machine
- Secure API Keys: Credentials stored in system keyring (planned)
- No Telemetry: Your data never leaves your computer unless you explicitly use cloud LLM services
- Node.js 18+ and npm
- Rust 1.70+ (for building from source)
- Git installed on your system
- Clone the repository
git clone https://github.com/Tassoi/Commitly.git
cd Commitly- Install dependencies
npm install- Run in development mode
npm run tauri dev# Build the application
npm run tauri build
# Output will be in src-tauri/target/release/bundle/
# - Windows: .msi / .exe
# - macOS: .dmg / .app
# - Linux: .deb / .AppImage-
Open a Repository
- Click the "Repository Management" button in the top bar
- Select "Open Repository" and choose your Git repository folder
- The app will load the last 30 days of commits
-
Select Commits
- Navigate to the "Commits" page
- Use filters to narrow down commits by author, date, or repository
- Select the commits you want to include in your report
-
Generate Report
- Click "Generate Report" button
- Choose report type (Weekly/Monthly)
- Select a template
- Watch as AI generates your report in real-time
-
Export & Share
- View your generated report in the "Reports" page
- Export as Markdown, HTML, or PDF(TODO)
- Share with your team or manager(TODO)
Configure your preferred LLM provider in Settings:
- OpenAI: GPT-4, GPT-3.5-turbo
- Anthropic: Claude 3 Opus, Sonnet, Haiku
- Google: Gemini Pro
- Local Models: Ollama or llama.cpp server
Create custom report templates:
- Go to Templates page
- Click "Create Template"
- Use Handlebars syntax with available variables:
- Repositories involved: {{total_repos}}
- Total commits: {{total_commits}}
- Date range: {{date_range}}
- Number of authors: {{unique_authors}}
- Framework: React 18 + TypeScript
- State Management: Zustand with persistence
- UI Components: shadcn/ui + Radix UI
- Styling: Tailwind CSS
- Routing: React Router v6
- Internationalization: i18next + react-i18next
- Charts: Recharts
- Date Handling: date-fns
- Framework: Tauri 1.5+
- Language: Rust 1.70+
- Git Integration: git2-rs
- HTTP Client: reqwest
- Template Engine: Handlebars
- Async Runtime: tokio
- Serialization: serde
- Frontend: Vite
- Backend: Cargo
- Linting: Prettier
- Type Checking: TypeScript
Commitly/
├── src/ # Frontend source
│ ├── components/ # React components
│ │ ├── CommitList/ # Commit list with filters
│ │ ├── navigation/ # TopBar, SideNav
│ │ └── ui/ # shadcn/ui components
│ ├── pages/ # Page components
│ │ ├── Dashboard/ # Overview & statistics
│ │ ├── Commits/ # Commit management
│ │ ├── Reports/ # Report viewer
│ │ ├── Templates/ # Template editor
│ │ └── Settings/ # App configuration
│ ├── store/ # Zustand stores
│ │ ├── repoStore.ts # Repository state
│ │ ├── reportStore.ts # Report state
│ │ └── uiStore.ts # UI preferences
│ ├── hooks/ # Custom React hooks
│ ├── i18n/ # Internationalization
│ │ └── locales/ # Translation files
│ └── types/ # TypeScript definitions
│
├── src-tauri/ # Rust backend
│ ├── src/
│ │ ├── commands/ # Tauri command handlers
│ │ │ ├── git.rs # Git operations
│ │ │ ├── llm.rs # LLM integration
│ │ │ ├── report.rs # Report generation
│ │ │ └── template.rs # Template management
│ │ ├── services/ # Business logic
│ │ │ ├── git_service.rs # Git repository handling
│ │ │ ├── llm_service.rs # LLM API calls
│ │ │ └── template_service.rs
│ │ ├── models/ # Data structures
│ │ └── main.rs # Application entry
│ └── templates/ # Built-in report templates
│
├── public/ # Static assets
├── CLAUDE.md # Project guidelines for AI
└── README.md # This file
# Development
npm run dev # Start Vite dev server only
npm run tauri dev # Start full Tauri app with hot reload
# Building
npm run build # Build frontend for production
npm run tauri build # Build complete desktop application
# Code Quality
npm run format # Format code with Prettier
npm run type-check # Run TypeScript compiler check
# Rust
cd src-tauri
cargo check # Check Rust code
cargo test # Run Rust tests
cargo clippy # Run Rust linter- Frontend Components: Add to
src/components/orsrc/pages/ - Backend Commands: Add to
src-tauri/src/commands/ - Translations: Update
src/i18n/locales/zh.tsanden.ts - Types: Define in
src/types/index.ts
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Overview of repository statistics and recent activity
Real-time AI-powered report generation with streaming
Create and customize report templates
Configure LLM providers and application preferences
-
Security Enhancements
- System keyring integration for API keys
- Encrypted configuration storage
- Secure file permissions
-
Advanced Features
- Commit diff analysis in reports
- Team collaboration features
- Report scheduling and automation
- Custom chart types in reports
-
Integrations
- GitHub/GitLab API integration
- Slack/Discord notifications
- Email report delivery
-
Performance
- Incremental Git parsing for large repos
- LLM response caching
- Virtual scrolling optimization
- PDF export requires wkhtmltopdf to be installed separately
- Large repositories (10k+ commits) may take time to load initially
- Some LLM providers may have rate limits
This project is licensed under the MIT License - see the LICENSE file for details.
- Tauri - For the amazing desktop framework
- shadcn/ui - For beautiful UI components
- git2-rs - For Git integration
- All the open-source contributors who made this possible
- Issues: GitHub Issues
- Discussions: GitHub Discussions
Made with ❤️ by developers, for developers
⭐ Star this repo if you find it helpful!