Skip to content

creativecreature/pulse

Repository files navigation

pulse: like a fitness tracker for code

Go Reference License: MIT Go Report Card Test codecov

My vision with this project was to create a personal portfolio website that would update automatically with data from my coding sessions:

Screenshot of website

Screenshot of website

It has served as a playground for trying out new technologies, and so far it has been a really fun project!

How it works

This repository includes the foundation of the project:

  • rpc server
  • rpc client
  • nvim plugin
  • cli

I run the server as a daemon. It receives remote procedure calls from neovim pertaining to events such as the opening of buffers, windows gaining focus, the initiation of new nvim processes, etc:

Screen.Recording.2024-04-20.at.12.08.35.mov

As you can see in the video above, each instance of neovim establishes a new coding session. This leads to the creation of several sessions per day. Every session is stored temporarily on the file system. This is primarily to avoid surpassing any limits set by free database tiers.

I use the CLI to aggregate these temporary sessions by day, week, month, and year. The results are written to permanent storage, enabling me to retrieve and display them on my website.