Nicd
I hope this is ok to share in this section. ![]()
I have made a coding statistics website with Elixir and Phoenix. The basic idea is that when you write code, you get experience points and then you level up (like in an RPG). You can see how much you have “experience” in different languages and on different machines you use. It’s open source and free to use. Currently only Atom editor and JetBrains IDEs are supported (the API is documented, though, if you want to add editor support!).
Here is the index page: https://codestats.net/ and as an example, here is my profile page: https://codestats.net/users/Nicd.
It is a pretty standard Phoenix website. I use ETS for caching some data locally (it runs on one node) and store per-user cached data using PostgreSQL’s JSON field. Both profile pages and the index page are live updated while you code using Phoenix channels, and Elm in the frontend (it looks roughly like this, though the index page UI has since changed a bit).
In the future I plan to add more different statistics and other fun features.
All the code is licensed under 3-clause BSD, you can find the sources for the site, Atom plugin and JetBrains plugin respectively here:
- GitHub - code-stats/code-stats: Code::Stats website repository has moved to GitLab: · GitHub
- GitHub - code-stats/code-stats-atom: Mirror of GitLab repository for Code::Stats Atom plugin · GitHub
- GitHub - code-stats/code-stats-intellij: This repository has moved to GitLab: · GitHub
It’s my second ever production Phoenix site, and first ever Elm project, Atom plugin and JetBrains plugin, so the code will reflect that. I would appreciate any feedback so I can become better. ![]()
Trending in Discussions
Other Trending Topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #ai
- #elixirconf-us
- #blog-post
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #elixirconf-eu
- #metaprogramming
- #hex










Showing Posts 15 to 6- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
Nicd
6 years on, Code::Stats is still there and being updated. I just pushed release 2.3.0 (and 2.3.1 to fix issues) that has “flow state” tracking that tries to measure how much time you spent in a coding flow, i.e. a very focused state.
The profile page was rewritten in Phoenix LiveView, so I don’t have to spend time writing APIs and duplicate code for the frontend live updates. It was a great feeling getting to delete all those JS files! Chart.js still remains for rendering a couple of more complex charts. You can see the new profile page here: Nicd – Code::Stats
This version also birthed one Hex package, to get colours of programming languages to display in the charts: LanguageColours - Get colours for programming languages
Everything is still (and will be!) open source, so feel free to check it out. But of course it has been evolving for 6 years now and I was a much worse Elixir programmer back then, so it’s a mish mash of different styles and different experiments…
Nicd
In the end it was about productivity. Elm was interesting and new but I was very slow with it. As I have limited time to work on this project, I went with a more pragmatic solution. I have been thinking of looking at ReasonML though, at least for some project.
cmkarlsson
Interested to know why this change?
Nicd
https://twitter.com/code_stats/status/1013229785139548160
2.0 was released just now. It has a new UI, new graphs, Elm was replaced with RE:DOM, it has a GraphQL API written with Absinthe, and finally Distillery releases! It’s also a big quality of life upgrade on the backend so hopefully new releases should be much easier to make from this point forward. Still totally free to use!
Architect
There is a cool android app to check the stats:
https://play.google.com/store/apps/details?id=com.geekapps.codetrack
Nicd
We now have Vim support! It has been tested by a couple of people but I’m not a Vim user so if you have issues, please report them to us.
Nicd
So after about 1.5 years in production, Code::Stats has just passed the 1000 user mark and we’re working on improving it.
Since the first post, we have added integrations for Sublime Text 3, Visual Studio Code, Visual Studio (still some bugs to iron out), and Zsh. We also have a plugin in the works for Vim - if you’d like to help test it, you can contact us on our Gitter, Matrix, or IRC channels.
On the website side we’re working on a 2.0 version that will have a complete UI rewrite with RE:DOM (in place of Elm) and CSS Grid. The backend is updated to Phoenix 1.3 and refactored into a context-ish style (still learning this). Currently I’m working on a new profile API using GraphQL via Absinthe.
Of course it’s still all free to use and open source.
The sources have moved to GitLab, so you can follow our progress here: CodeStats · GitLab
Nicd
Elm was… interesting. I have never used Haskell or another ML and Elixir was my first functional language. So it took me a while to really grok the Elm syntax and what was happening. I still have only a faint idea about some of the things but most of it is clear now.
It lived up to its reputation in that when my frontend apps finally compiled, they really did work as expected. I didn’t really get to enjoy any productivity boosts from that though, since doing anything was very very slow (but it was my first try ever). I liked the builtin virtual DOM library, but I was kind of disappointed that it’s not possible to have Elm parse the existing DOM and change that (have to render the whole thing from scratch).
All in all it was a fun learning experience and I look forward to seeing how it develops.
AstonJ
Nice one! Looks neat
If you get a minute, please do a write-up on you Elm-Elixir experience - there is certainly a lot of love for Elm in the Elixir community
Nicd
At the moment, 220.