TakaTime
TakaTime is a blazingly fast, privacy-focused coding time tracker for Neovim. It works just like WakaTime, but with one major difference: You own your data. Instead of sending your coding activity to a third-party server, TakaTime stores everything in your own MongoDB database.
Install / Use
/learn @Rtarun3606k/TakaTimeQuality Score
Category
Development & EngineeringSupported Platforms
README
TakaTime
The Open Source, Self-Hosted WakaTime Alternative. <br> <i>"Time is what we want most, but what we use worst."</i>
<br><br>
<a href="https://github.com/Rtarun3606k/TakaTime/stargazers"> <img src="https://img.shields.io/github/stars/Rtarun3606k/TakaTime?style=for-the-badge&logo=star&color=ffea00" alt="GitHub Stars"> </a> <a href="https://github.com/Rtarun3606k/TakaTime/blob/main/LICENSE"> <img src="https://img.shields.io/github/license/Rtarun3606k/TakaTime?style=for-the-badge&color=blue" alt="License"> </a> <br> <a href="https://github.com/Rtarun3606k/TakaTime"> <img src="https://img.shields.io/badge/NeoVim-%2357A143.svg?&style=for-the-badge&logo=neovim&logoColor=white" alt="Neovim"> </a> <a href="https://marketplace.visualstudio.com/items?itemName=Rtarun3606k.takatime"> <img src="https://img.shields.io/badge/VS%20Code-007ACC?style=for-the-badge&logo=visual-studio-code&logoColor=white" alt="VS Code"> </a> <br>
<img src="https://img.shields.io/badge/MongoDB-%234ea94b.svg?style=for-the-badge&logo=mongodb&logoColor=white" alt="MongoDB">
<img src="https://img.shields.io/badge/Docker-2496ED?style=for-the-badge&logo=docker&logoColor=white" alt="Docker">
Table of Contents
- Features
- How it Works
- Installation
- Setup Guide
- GitHub Profile Stats Setup
- Troubleshooting
- Disclaimer & Roadmap
- License
Features
- Non-Blocking Architecture Engineered in Go with asynchronous concurrency. Data synchronization occurs entirely in the background, ensuring zero latency impact on the editor's performance.
- Privacy-Centric Storage Data is persisted exclusively to your personal MongoDB instance. This self-hosted model ensures complete data ownership with no third-party tracking, telemetry, or subscription fees.
- Automated Dependency Management The plugin automatically detects the host operating system (Linux/macOS) and retrieves the appropriate pre-compiled binary during the initial setup.
- Portfolio Visualization Includes a dedicated CLI utility for generating high-resolution statistical charts, optimized for seamless integration into GitHub Profile READMEs.
- Granular Telemetry Intelligently tracks and categorizes development activity by project, programming language, and file type without requiring manual configuration.
How it Works
<div align="center"> <table border="0"> <tr> <th align="center">High-Level Architecture</th> <th align="center">Zero-Latency Flow</th> </tr> <tr> <td width="50%" valign="top"> <img src="https://github.com/user-attachments/assets/0aa39476-12c7-4cdd-9b27-8e985fcce29d" alt="Sequence Diagram" width="100%"> </td> <td width="50%" valign="top"> <img src="https://github.com/user-attachments/assets/9a844b2c-d018-470f-9dcc-fabf5a0ac3cf" alt="High Level Architecture Diagram" width="100%"> </td> </tr> </table> </div>Installation
Using VS Code
https://github.com/user-attachments/assets/a3c492d8-898c-497a-bc0c-c2f8ebc5d03b
Using lazy.nvim
https://github.com/user-attachments/assets/edf09531-ed66-4709-9b78-5edc90843510
Add this to your plugin configuration:
return {
"Rtarun3606k/TakaTime",
lazy = false,
config = function()
-- Optional: Enable debug mode if you run into issues
require("taka-time").setup({
debug = false
})
end,
}
Setup Guide
-
Step 1: Get a Database
You need a MongoDB connection string. You have two free options:
- add all ip access
(if you want github Stats its required) - <img width="986" height="752" alt="image" src="https://github.com/user-attachments/assets/d9433977-e841-4e0d-a1d2-9847901501d6" />
- Cloud (Recommended): Create a free account on MongoDB Atlas. Create a free cluster and get your connection string (e.g., mongodb+srv://user:pass@cluster...).
- Local (Docker): Run docker run -d -p 27017:27017 mongo.
- add all ip access
-
Step 2: Initialize the Plugin
Open Neovim.
Run the setup command: Vim Script
:TakaInitPaste your MongoDB Connection String when prompted. (This is saved securely in your local data folder, ~/.local/share/nvim/taka_data.json).
-
Step 3: Verify
Run the status command to check if everything is working: Vim Script
:TakaStatusIf it says "TakaTime is configured and running," you are good to go!
GitHub Profile Stats Setup
TakaTime comes with a report generator that works with GitHub Actions to update your Profile README automatically.
-
Prepare your Profile Repo
Go to your GitHub Profile Repository (the one named username/username).
Go to Settings > Secrets and variables > Actions.
Add a New Repository Secret named MONGO_URI with your connection string.
(Optional) Add
GIST_TOKENif you plan to use Gists (not required for direct README updates). -
Add the Markers
- Add start and end markers to your README.md
<!--takatime-start-->
<h2 align="center">TakaTime Weekly Report</h2>
<p align="center">
<img src="./public/taka-time.png" width="100%" alt="Time Stats" /><br/>
<img src="./public/taka-languages30.png" width="400" alt="Languages" />
<img src="./public/taka-projects30.png" width="400" alt="Projects" /><br/>
<img src="./public/taka-languages.png" width="400" alt="Languages" />
<img src="./public/taka-projects.png" width="400" alt="Projects" /><br/>
<img src="./public/taka-tech.png" width="100%" alt="Tech Stack" />
</p>
<p align="center"><em>Generated automatically by <a href="https://github.com/Rtarun3606k/TakaTime">TakaTime</a></em></p>
<!--takatime-end-->
- Create the Workflow
Create a file in your repo at .github/workflows/update-stats.yml and paste this content:
name: Update TakaTime Stats
on:
schedule:
- cron: "0 0 * * *" # Runs every midnight UTC
workflow_dispatch: # Allows manual trigger
jobs:
update-readme:
runs-on: ubuntu-latest
permissions:
contents: write # Needed to download releases
steps:
- name: Download Taka-Report Binary
env:
GH_TOKEN: ${{ github.token }}
run: |
# Downloads the latest stable binary
gh release download --repo Rtarun3606k/TakaTime --pattern "taka-report-linux-amd64" --output taka-report
chmod +x taka-report
- name: Generate Report & Update Profile
env:
MONGO_URI: ${{ secrets.MONGO_URI }}
GIST_TOKEN: ${{ github.token }}
TARGET_REPO: ${{ github.repository }}
run: ./taka-report -days=7
Note: This workflow downloads the taka-report tool and runs it against your database to generate stats.
-
Customization & Themes
Taka-Report supports full customization through command-line flags. You can choose from pre-built themes or override specific colors to match your GitHub profile aesthetic.
-
1. Base Themes
Use the
-themeflag to apply a pre-configured color palette.
Default:dark
| Theme | Description |
| :--- | :--- |
| dark | GitHub Dark Dimmed (Default) |
| light | GitHub Light |
| dracula | Dracula Color Palette |
| nord | Nord Winter Color Palette |
| gruvbox | Gruvbox Retro |
| monokai | Monokai Vivid |
| cyberpunk | High Contrast Neon |
| tokyonight | Tokyo Night Deep Blue Palette |
| everforest | Everforest Soft Nature Theme |
| iceberg | Iceberg Cool Minimal Blues |
| sunset | Warm Sunset Gradient Colors |
| deepocean | Deep Ocean Dark Blue Theme |
| midnight | Midnight Purple Developer Theme |
| catppuccin | Catppuccin Mocha Pastel Palette |
| solarized | Solarized Dark Classic Palette |
| onedark | OneDark Pro VSCode Style |
| material | Material Dark UI Theme |
| synthwave | Retro Synthwave Neon Colors |
**Usage Example:**
```bash
./taka-report -theme nord
```
-
Configuration Parameters
You can pass these flags to the
taka-reportbinary to control the data scope and visual style of your report.| Flag | Type | Default | Description | | :--- | :--- | :--- | :--- | |
-days|int|0
