Nicd
Codestats.net - made with Elixir + Phoenix
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. ![]()
First Post!
OvermindDL1
Heh, looks nice, although being able to log in with google and/or github (especially github) would be more logical given the site purpose? ![]()
Github has a good API too, though slow it is.
EDIT: Also, how easy is it to game? Might be more accurate to parse over git commits instead for lines changed and so forth? Still gameable but not as easy?
Most Liked
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
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
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. ![]()
Popular in Discussions
Other popular topics
Latest Phoenix Threads
Chat & Discussions>Discussions
Latest on Elixir Forum
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #supervisor
- #elixirconf-us
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #metaprogramming
- #security
- #hex










