For the past 3 years I have been working on a Golang port of plausible analytics dashboard.
vince is a single binary, single user with multiple website system with zero runtime dependency.
Key featues:
- Automatic TLS - Outbounds link tracking - File downloads tracking - 404 pages tracking - Custom event tracking
And so much more, basically everything that you see on plausible dashboard except funnels and custom properties.
You can use vince as a drop in replacement for plausible for personal websites.
The goal is to make the plausible dashboard easily accessible for people who like to self host.
All features not related to the dashboard are non goal, hence not implemented.
Full dashboard demo hosted on 6$ vultr instance https://demo.vinceanalytics.com/share/vinceanalytics.com/v1/...
Dead Comment
https://github.com/vinceanalytics/vince/blob/f0c2c3cc38cbd8c...
My dream for a business is practically dead now. That snippet is a relic of early days of vince and I will remove it.
I am currently looking for work, and will be maintaining vince as usual (I do a lot of open source stuff) since I also use it with my hobby projects.
I'm struggling finding remote roles now, since remote now means Remote US or Remote EU and I'm stuck here in Tanzania.
So, don't worry, I also use vince so I will keep hacking on it.
Also why are you using pebble exactly? I was interested in seeing how you're managing your geo databases because that's usually the most mind numbing part of handling analytics if your cloud provider doesn't add that information into the request header already. However, I can't understand why you'd use pebble over something like sqlite.
> Why protocol buffers ?
They are very good for defining API boundaries, in vince we only use them for configuration and admin structure. We use Roaring Bitmap based storage, so fundamental units persisted are Bitmap containers.
> Also why are you using pebble exactly?
Well, vince is write heavy and any LSM based key value store would have been nice. It happens pebble is the best option for us.
Also, we don't use transactions (We batch writes and use snapshots for reads). Combining with the fact we rely on pebble batch Merge api.
The merge api allows us to do efficient updates. Since we only store bitmap containers, when doing update we just do a container union of observed values of a key.
Bitmap unions are pretty fast and efficient.
I hope I covered all your questions.
Edit: Just noticed the feature comparison in the readme.
404 page not found
Twitter, Threads, Mastodon, Blusky all look the same. Project management apps all reuse the same UI patterns. The "AI" logo looked pretty much the same for all companies for a while. Video sharing websites all use YouTube's layout. Forums like Reddit and HN share quite a lot in their looks.
If you want to display website analytics, you will want to show the most important metrics at a glance, you'll need graphs showing visitors over time, top sources and pages... There is only so much you can do to display those and have users understand what's going on on your website.
Plausible gets crazy expensive on their hosted option and it complex to setup (needs elixir + high memory requirements)
If Vince gets 1:1 parity with plausible and has the option to use clickhouse, I'll consider moving a few servers and people I know over.
Love that Vince is also a single binary as well.
"Add the following line to you page source to send data to Vince"