muety / wakapi

📊 A minimalist, self-hosted WakaTime-compatible backend for coding statistics

Home Page:https://wakapi.dev

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

📬 User Survey

muety opened this issue · comments

I'd love to get some community feedback from active Wakapi users. Let's so a brief user survey!

If you'd like to participate, simply comment what you like about Wakapi, what you don't like and what you'd like to see in the future.

You feedback is highly appreciated. Thanks a lot in advance!

EDIT: One more question I'd find interesting to know: how / where / why did you find this project?

Here are my 2 cents

What you like
Small, fast, run from source, integrates with Wakatime tools

What you don't like
Not very many ways to customize it (custom ranges, ...)

What you'd like to see in the future
More statistics and ways to show and filter them

I'm a new user as of today! I found this project by searching "wakatime" on GitHub and looking through the repositories available.

What you like
This application is self-hosted. I can build it myself and connect a debugger to see how it works. I've got it connected over my WireGuard VPN running in Docker, which is exactly what I was looking for. Having ownership over my heartbeat data (without needing to export) is important to me. I am interested in building my own metrics and reporting using that data.

What you don't like
Nothing so far, first day.

What you'd like to see in the future
More statistics and views around the current data. I'd like to answer questions like "what projects sent heartbeats over the past 3 days?" within the UI.

Thanks for the feedback @Syndamia @djanatyn! For advanced statistics and graphs that are not yet implemented in Wakapi natively, experienced users might consider integrating Wakapi with Prometheus and Grafana. There's a pre-built dashboard to display some awesome analyses.

Thank you! I was able to view the linked Grafana dashboard with data from Wakapi without any issues by running the exporter 🥳

/nix/store/h61aihj3ajrghbaqyhjw114cgvah6apj-wakatime_exporter/bin/wakatime_exporter \
  --wakatime.api-key="$API_KEY" \
  --wakatime.scrape-uri='http://10.100.0.1:3000/api/compat/wakatime/v1' \
  --wakatime.user="djanatyn"
  
...

level=info ts=2021-01-04T20:33:41.571Z caller=common.go:58 collector=summary msg="Scraping Wakatime" path=summaries url="http://10.100.0.1:3000/api/compat/wakatime/v1/users/djanatyn/summaries?cache=false&end=today&start=today"
level=info ts=2021-01-04T20:33:41.571Z caller=common.go:58 collector=all-time msg="Scraping Wakatime" path=all_time_since_today url="http://10.100.0.1:3000/api/compat/wakatime/v1/users/djanatyn/all_time_since_today?cache=false"

Hope I'm not too late for this!

What you like
It's fast, easy to use and easy to self-host. Does its job very well (it just works)

What you don't like
Hardcoded intervals

What you'd like to see in the future
I would love to have a way to look at statistics for a specific day/week/month other than Yesterday Today and so on... Also having something like a "daily" or "monthly" group-by view would be awesome. This way we could look at "daily" reports for a week in the past. Something like this:

wakapi-daily-week

@notarock It's never too late 😉

Thanks for your feedback! Custom time intervals might not even be too hard to realize, it might actually only be a UI thing. I'll look into it soon.

What you like
Great OSS example, my compliments.

What you don't like
I'd like design to be improved: calm colors, more elegant graphs.

What you'd like to see in the future
Would be great to add some periodic notifications, like weekly summaries via email or any other messaging channel.

Thanks for your feedback @agrrh! A redesign is planned, but it is probably still a while in coming. Reports and notifications are planned as well.

commented

Just want to say that I love this service!
So, you'll let us host here "forever", or is there an eventual time you'll stop hosting.

Maybe a signin with github would be good, but that's pretty low. Also, UI is great, would love to see more variety in the data shown. I know that will take time, just bringing it up.
Thanks again for all your work!

Just want to say that I love this service!

I am happy to hear that! 😊 Feels good to build something that people actually find useful, so thanks for the compliments!

So, you'll let us host here "forever", or is there an eventual time you'll stop hosting.

I don't plan on ceasing the hosting. However, if it becomes too expensive or time consuming or if the services is started to be abused I might consider taking it offline. In any case, there will be a way to export your data before.

Maybe a signin with github would be good

OAuth login in general is a good idea. I'll open a ticket and see if I can get to it soon.

EDIT: Just got reminded that there's a ticket already. This is definitely about to come.

[...] would love to see more variety in the data shown

Me too! There are already quite a few ideas. I only need to find time to realize them. In the meantime, consider checking out the Promtheus export in combination with the Grafana dashboard, which provides pretty rich visualizations.

What I like

  • very easy setup
  • fast
  • the ability to host it by yourself

What I don't like
Nothing!

What I'd like to see in the future

  • Custom AFK timeout (like in wakatime preferences)
  • Stacked chart with days on the x-axis and time on y-axis
commented

I stumbled across Wakapi some days ago and I love it so far - here's my feedback.

What I like

  • ability to self host it
  • open-source backend
  • design of the dashboard

What I don't like

  • I am using the third-party-app Timeless to access the tracked data on my mobile. It works as it should - except after it can't refresh the requested data after an initial request (unless I restart the wakapi backend). I also could reproduce this error when requesting /api/compat/wakatime/v1/users/current/summaries manually. It seems like wakapi is caching the answer for more than five hours (at least in my experiment). I would like to have a way do disable that behavior (at least for the summaries of the current day) as I'd like to use a live-indicator to show how much time I coded today.
  • Also operating system and editors do not work for me, but that's probably an issue on my side

What I'd like to see in the future

  • I really want to see a graph like this, as it shows me how I am doing in the weekly average:
    image
  • I also miss this section as it helps me to compere today with the other days of the week
    image
  • One other thing is that I want to see how I am doing in the current week instead only today's summary. It would be great if every user could customize this
  • One other thing would be custom branding (like custom colors, icon and more), maybe as a payed feature for donators?
  • Maybe add an easy way to edit the privacy policy site

Thanks again for this great software and keep up the great work!

Thanks a lot for your feedback!

Concerning the caching problem, I opened #211.

Also operating system and editors do not work for me, but that's probably an issue on my side

Probably yes. Let me know if I can assist debugging this.

I really want to see a graph like this, as it shows me how I am doing in the weekly average:

I agree, having that chart would be awesome. There is #157 for this.

I also miss this section as it helps me to compere today with the other days of the week

I agree. Hopefully I can start working on #116 soon.

One other thing would be custom branding (like custom colors, icon and more), maybe as a payed feature for donators?

I'd like to avoid "paid" features like these. Right now, you would have to change icons and colors in source code and compile it yourself. Frankly, I don't see much benefit in having a dedicated UI or config options for that. However, if more people request customization options like this, I'll definitely consider it!

Maybe add an easy way to edit the privacy policy site

Currently, you would have to edit the imprint value inside key_string_values table in your database. Similarly to your feature request above, I think having a dedicated admin UI for that would be a bit overkill, as Wakapi's target audience are developers and technical people anyway.

I appreciate your feedback and am happy you're enjoying Wakapi. Stay tuned for more to come!

commented

What you like
Small, fast, db compatibility, integrates with Wakatime.

What you don't like
Nothing.

What you'd like to see in the future
Team or Group statistics.

how / where / why did you find this project?
I just try to find a Wakatime alternative, so i type wakatime in github search, Wow! /muety/wakapi .

My situation and feedback:

I am looking for an alternative for wakatime which would reuse its plugins and be cheaper / free. It seems that wakapi may in future become what I'm looking for.

What I would like to achieve:
Let's say I have a team of programmers. I would like to automatically track time they spend on programming, so they don't need to send me their time manually. Also I would like to see how much time was spend on each file / branch. Additionally it would be great to have integration with GitHub so coding stats are visible on GitHub repo page.

As I understand it is possible to achieve this with Wakatime, but it is expensive as it requires Teams plan:

https://wakatime.com/teams

https://wakatime.com/pricing

In free plan it seems to also be possible via below methods, but they are not good enough:
1. I can ask programmers to share with me their project's SVG image badges and then extract coding time from them. It is good enough for billing purposes but all other details are unavailable in this method. Programmers would need to share SVG for every tracked project.
2. I can create app which connects to programmer's wakatime accounts via OAuth. The problem is it isn't possible to limit scope of OAuth access to organisation's projects, so I would need them to share their private coding statistics which for me seems not right.


If this would be possible with wakapi then it would be great, but I think one very important drawback is that programmers would need to switch from wakatime backend to wakapi backend for all projects (so also for private projects). It seems to not be possible to use wakatime backend for some projects and wakapi backend for others (It would be nice to have it configured in some config file in git repository similar to how project name can currently be configured in .wakatime-project file: https://wakatime.com/faq#rename-projects )

One can imagine a situation that a programmer has two jobs and in one is required to use wakatime when in second job is required to use wakapi. It seems now that you can't use both, you need to choose one of them. I think this issue needs to be resolved somehow.

Thanks a lot for your comprehesive feedback, very insightful!

File- and branch statistics, as well as teams, will be supported by Wakapi in the future (see #182, #80, #242).

Showing stats in GitHub is already supported by either using Badges or third-party tools like https://github.com/lowlighter/metrics/.

Being able to use Wakapi and WakaTime in parallel would be awesome! However, this would require non-trivial changes in the Wakatime CLI and therefore support from the Wakatime team. I'll file in issue upstream once I'm back from holiday ✌️

@muety Thank you.
I came up with another idea:

Now I think I came up with even better alternative way to solve this problem:

Instead of choosing per project it would be enough to have all heartbeats send to both backends. In this case data in wakatime and wakapi would be duplicated and users would be able to use both services as they need. Now I think this solution is the best because it allows to use features of both backends in each project. (It can happen that one feature is available only on wakatime and another only on wakapi backend.) And it also allows to switch which one we consider "main" backend anytime easily with all history kept.

It would be best to solve it in wakatime-cli but alternatively it can be hacked on wakapi side: when wakapi receives hearbeat then it sends it also to wakatime. Another way to hack it is probably by some proxy-like solution which sends hearbeats to both backends.

hey @karolzlot,
am i totally wrong, or isn't what you describe exactly what wakatime-integration is already doing anyway?

I've only been in the project since yesterday, but from my understanding it duplicates all heartbeats and sends them to the main wakatime dashboard.

hey @karolzlot, am i totally wrong, or isn't what you describe exactly what wakatime-integration is already doing anyway?

Yes, exactly. We discussed this further at wakatime/wakatime-cli#569 (comment).