PJUllrich

PJUllrich

Author of Building Table Views with Phoenix LiveView

I recently read the wonderful article Homemade Analytics with Elixir and Ecto by @josevalim and decided on using the described approach in a couple of my projects. I didn’t want to copy&paste the code into every project and decided on creating a library instead.

Disclaimer: I absolutely do not want to take credit for José’s code, so I tried to reference his blog article everywhere I could. This library is simply meant as a helper for using his code in your project.

AnalyticsEx

GitHub: GitHub - PJUllrich/analytics_ex · GitHub
Hex: API Reference — analytics_ex v0.2.2

A library tracking how many visitors a Phoenix-based application receives per day without collecting any data from the user. It encapsulates the Homemade Analytics code of José Valim and simply counts the page-requests per path per day. The collected data is stored in a configurable Ecto-repository.

I hope that you find this helpful. My next steps will be to create a nice UI for the collected data. Feel free to help and contribute :slight_smile:

Showing Posts 1 to 8

josevalim

josevalim

Creator of Elixir

Awesome work!

After I announced the blog post, I learned about Plausible.io, which is an open source analytics focused on privacy that is written in Elixir. We are using them since then and we are very happy with it, so I definitely recommend them.

So between analytics_ex and plausible, it seems we are well served in the analytics area. :slight_smile:

17
Post #1
gordoneliel

gordoneliel

This was really helpful but I found that using it with liveview won’t work on routes that go though the socket connection on push_patches. Is there an idiomatic way of doing this that tracks all routes going through the router in a liveview project? @josevalim

PJUllrich

PJUllrich OP

Author of Building Table Views with Phoenix LiveView

I just released a small addition, which is bump_with_uri/1. You can now bump the metrics whenever you have a URI like in the handle_params/3 function of your LiveView. Simply call:

def handle_params(params, uri, socket) do
  AnalyticsEx.Metrics.bump_with_uri(uri)

  # Do other stuff here
end

If you really want to be sure that the metric was bumped, you can check the return value of bump_with_uri/1, which is either :ok or {:error, :path_not_found}, if URI.parse/1 doesn’t return a value for path.

If you want to use this functionality, simply update AnalyticsEx to 0.1.1.

@gordoneliel I hope this solves your problem as well. Sorry, I didn’t see your message until now.

PJUllrich

PJUllrich OP

Author of Building Table Views with Phoenix LiveView

I added a LiveDashboard-page to AnalyticsEx which gives you a quick overview of the counted requests per day, week, and month.

Simply update AnalyticsEx to 0.2.1 and include this in the live_dashboard route in your router.ex.

live_dashboard "/dashboard",
      additional_pages: [
        {:analytics, AnalyticsEx.LiveDashboard.AnalyticsPage}
      ]

You will then have a Tab called Analytics in your LiveDashboard!

If you want to always ignore certain routes in the overview, add them to the live_dashboard-route:

live_dashboard "/dashboard",
      additional_pages: [
        {:analytics, {AnalyticsEx.LiveDashboard.AnalyticsPage, ignore: ["/this-route", "/and-this-route-including-subpaths"]}
      ]

It’s been a bit tricky to add this tab to LiveDashboard using the predefined components, mostly because LiveDashboard was not yet refactored enough in order support adding custom pages with ease. I will create a GitHub ticket for the issues I had with adding this page, but in general, it only took me 1 day to include this page and that is without having any examples! So, it certainly is possible :slight_smile:

11
Post #4
KristerV

KristerV

hey. this looks like a cool tool. you said you’re using Plausible now. Plausible is great. but i want a lib to install on random projects without having to worry about an extra service. so my question is how are you using Plausible, are you hosting your own server and then intergrating to the server? is it easy to set up for every project?

PJUllrich

PJUllrich OP

Author of Building Table Views with Phoenix LiveView

thanks! I pay for Plausible, but you can also self-host it. Otherwise, here’s a promising new library that could satisfy you needs too: GitHub - lalabuy948/PhoenixAnalytics: 📊 Plug and play analytics for Phoenix applications. · GitHub

KristerV

KristerV

oh wow, what an interesting project. I’m glad I asked. and it looks like DuckDB doesn’t need separate hosting. okay, i’ll give it a go. thanks a lot.

how did you even find this project?

edit: yeah, easy install, just works. didn’t even have to config DuckDB. deployed to fly and there are errors, but for v0.2 that’s expected :smiley:

KristerV

KristerV

yeah, several rabbit holes later, I was unable to deploy this to fly.io. here’s my issue.

https://github.com/lalabuy948/PhoenixAnalytics/issues/31

— All posts loaded —

Where Next? Top

Trending in Announcing Top

wojtekmach
Hey everyone! Req is an HTTP client for Elixir that I’ve been working on for quite some time. There is already a lot of HTTP clients out...
New
handnot2
Samly can be used to enable SAML 2.0 Single Sign On in a Plug/Phoenix application. This library uses Erlang esaml to provide plug enabl...
New
woylie
Flop is an Elixir library that applies filtering, ordering and pagination parameters to your Ecto queries. offset-based pagination with...
New
MRdotB
I needed to reuse React components from my Chrome extension in my Phoenix/LiveView backend. I noticed that for Svelte/Vue, there are live...
New
garrison
Hobbes is a low-level distributed database for the Elixir programming language. Hobbes provides a simple, safe, and scalable storage lay...
New
marciok
Hi there! We created Gust: A task orchestrator inspired by Airflow. For those who have never heard about Aiflow, it’s a Python-based wor...
New
fuelen
Hi all! I want to present a small library which provides a mix task for generating an Entity-Relationship Diagram for Ecto schemas. You...
New

Other Trending Topics Top

mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
mudasobwa
I am seeing a lot of aplications of Argumentum ad Vericundiam in software discussions. They do link some piece of writing and point us to...
New
AstonJ
This showed up on my feed.. anyone heard of it? Just hype? Ox Alpha is a reasoning model designed for coding, sustained ag...
New
sergio
It’s not that it’s vocabulary is too advanced. It’s something worse. I get lost trying to follow even a paragraph written by Claude. It’...
New
sorenone
Today we’re releasing Oban for Python. Not an Oban client in Python. Not a pythonx wrapper embedded in Elixir. Nope, it’s a fully operati...
New
akoutmos
@hugobarauna, Dr. Dimitrios Koutmos (my brother) and I (Alex Koutmos) have been hard at work on writing a book on how you can use Elixir ...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews