WeUseElixir is a curated directory of apps, libraries and companies that use the Elixir programming language.
A few years ago I was introduced to Elixir. It was the first functional programming language I'd ever used. I became a huge fan of the language and the community.
I've now used Elixir in a variety of different projects both professional and personal. It's become my go-to language for building web applications. It is just fun to work with.
I created WeUseElixir as a way to increase awareness of the Elixir language and how it's being used. WeUseElixir provides a place for creators to share their projects and allows others to discover new and interesting projects.
Same here, using Elixir only for personal/hobby projects. Sadly, my customers when they hear about Elixir they get scared as hell. The "song" they love includes only JS, Java, C#, or Python.
Just personal opinion, I would get a lot of value out of having open source projects on there like plausible. I'm fact that might be the most useful thing personally
I just did a small programming side project with a friend in Elixir and I was pretty impressed with the language, especially how it approaches functional programming, concurrency, parallelism, and “programming in the large” (e.g. networked systems and clusters).
I still think there’d be some sort of mental hurdle for me to consider using it for a project of the kinds described on WeUseElixir (vs my go-to language of Python).
But simply toying around with a concrete example of a concrete “word count” program scaled up to multi-core and multi-node made me “get” Elixir a lot more.
Also, I highly recommend this podcast interview with the author of “Elixir in Action.” He does a really nice job describing what makes Erlang and Elixir unique vs other commonly used backend programming languages.
Have you tried the codecrafters exercises, you can build a shell and a redis cache in it. It's not even that hard when you have a nice planned laid out like they do
yep, its always funny to come across a company that uses it. For me the latest one was tubi, ive heard truth social also uses it not 100% sure. Sometimes I wonder if they're quiet about elixir praise is because the technology just works with very little to no issues
Truth Social is just Mastodon on the backend and an alternative Twitter-like frontend called Soapbox. Soapbox is indeed Elixir-based and open source.
Soapbox has a very weird history of first being forked from Gab for a feminist platform called Spinster(.xyz), then it got acqui-hired by Truth Social, then many of them left Truth Social to be independent. Soapbox(.pub) today is mostly abandonware, the team switched focus to building products on top of Nostr.
The amount of times it switched sides in its 5 or so years of existence has been truly fascinating and difficult to keep track of.
Right now I'm using Elixir to build an open-source nonprofit tech company, I will have to remember to add it to this project directory once we launch. Cool idea, keep up the good work. As a nonprofit tech company keeping costs low matters a lot, and Erlang/Elixir on BEAM makes it very easy to have tons of concurrent users with minimal overhead. Server start time is very fast. Coming from other functional languages like Clojure helps, but is not a requirement for getting started quickly.
LiveView is fun, but my problem is that in practice I often want local-first state. Is there a good way to do that with LiveView, maybe a clean way to write the little javascript snippets so they work with local state?
LiveView already has local first state. The magic in LiveView is how it uses WebSocket connections to the client to keep the client state in sync with the server state. This is why you just need to update the socket and the rest just works.
If you want to have some state that only exists on the server, then you simply don’t assign that data to the socket.
You can take a look at JS commands and hooks. Ultimately I came to the determination that while LiveView is cool, I think I want the opposite. I’m hoping Hologram will be the answer.
This is a great idea. I'd like to make a few suggestions though:
- Allow filtering by companies and libraries. I'm interested in both, but I wanted to look at just the list of companies to see if there were any I didn't recognise.
- Adding a company seems to be just adding _your_ app. It would be good to suggest companies to be listed as long as you have some evidence that they use Elixir. I know that Apple has Elixir in their Environmental team, but I'm not sure how I would go about adding that.
- Move the category filtering to the directory page. It would be more interesting to see the whole list at once and filter by category.
Erlang is leaner and more elegant than Elixir. If you don't need the bells and whistles of Phoenix and Ash and so on, and your team is senior enough to just go with the syntax, then Erlang is a good option. Especially if you're doing sophisticated network plumbing and distributed processing stuff but not much direct interfacing with non-technical users.
Gleam takes inspiration from Elm, so if that's your thing and something you'd consider using, probably go with that rather than Phoenix. Again, if your team can handle it.
Personally I build web interfaces and so on as well as plumbing stuff and I'm also very fond of the one language through the entire stack experience it allows, so I mostly stick to Elixir. Prototyping in REPL, moving to scripts, and then into proper modules in the more stable projects. It also has a very nice code generation 'story' that allows a lot of nice shortcuts and sophisticated tools.
Small nitpick - I'd say the main Gleam web framework, Lustre, takes inspiration from Elm. Gleam itself takes inspiration from a number of sources, Rust, Erlang, the ML family of languages. I think Gleam is a lovely little language (though I'm also a huge fan of Elixir).
Is never say erlang is more elegant than elixir, simply due to things like ending functions with commas vs periods (yes they have actual meaning, no it's not really something worth worrying about), lack of pipes, and lack of things like with
They both compile down to the same bytecode, and both have fairly optimum compilers
As for gleam, it's a fun ml dialect, worth using if that's your thing. Same goes with LFE, if you like lisp
> Gleam takes inspiration from Elm, so if that's your thing and something you'd consider using, probably go with that rather than Phoenix. Again, if your team can handle it.
I’m not sure I’m following. Gleam is inspired by Elm in a lot of ways, and the major draw over Elixir would be the Elm-inspired type system, but Gleam is still a language not a web framework (which Elm is not either, since it only targets clients afaik).
I never used Erlang, and I'm a functional programming fan. But languages based on heavy VM that abstract OS away always make me doubt that's the right direction.
That's not a crazy instinct, and maybe if OSs were better you would even be right, but there's not really another way to get a skrillion communicating processes that can all crash/fail independently. Without a dedicated VM, all the other approaches are either less safe or too inefficient.
I consider BEAM an indication of a direction that OSs could and maybe should move. It's even possible to run BEAM on bare metal, (almost?) entirely in place of the normal OS.
I've built a hobby OS around BEAM... BEAM doesn't require a whole lot from the OS, I built a minimal kernel that runs a single process, which you could consider a unikernel or at least very close. I had originally wanted BEAM in ring 0, but I had a lot of trouble getting started. This way, I can just use a pre-compiled BEAM for FreeBSD and don't have to fight with weird compilation options. Anyway, with x86-32 at least, I can give my Ring 3 process access to all the ioports and let it request a mmap of any address, so the only drivers I need in the kernel are IRQ controllers, timers, and pre-beam console. Once beam is up, console i/o and networking is managed from erlang code (with a couple nifs)
It's almost like an OS in itself and initially designed to be like a more capable and robust OS on top of rather constrained computers. In my experience it's trivial to shell or port out to the environment when I want to, and I also see people that I don't think of as highly skilled low-level programmers do things with NIF:s so that can't be exceptionally demanding either.
I have a digital studio that needs to find good companies to pitch them my services... just searching LI is not very helpful, this is way better.
Also, as a place that uses Elixir... I can find all the new tools and cool projects without watching endless videos on Youtubes... As I want to spend most of my time working on projects, not trying to catch up.
I think this is excellent, thank you for making it in this format.
WeUseElixir is a curated directory of apps, libraries and companies that use the Elixir programming language.
A few years ago I was introduced to Elixir. It was the first functional programming language I'd ever used. I became a huge fan of the language and the community.
I've now used Elixir in a variety of different projects both professional and personal. It's become my go-to language for building web applications. It is just fun to work with.
I created WeUseElixir as a way to increase awareness of the Elixir language and how it's being used. WeUseElixir provides a place for creators to share their projects and allows others to discover new and interesting projects.
I use it for many side projects, and I am starting to use it for bigger ones too.
Should we submit personal projects and smaller side projects, or is this for fully fledged app only?
Also, should we add know open source applications such as Plausible[1]?
I am always happy to see Elixir and Erlang hit the front page.
[1] - https://github.com/plausible/analytics
Same here, using Elixir only for personal/hobby projects. Sadly, my customers when they hear about Elixir they get scared as hell. The "song" they love includes only JS, Java, C#, or Python.
Yes to all of the above. The goal is to share as much as possible what people are doing with Elixir.
Just personal opinion, I would get a lot of value out of having open source projects on there like plausible. I'm fact that might be the most useful thing personally
There are open source projects on the site, such as Oban and Absinthe. Is that what you’re looking for or did you mean something else?
Nice! There’s also this[0] project run by community /elixir-school[1] maintainers [0]https://elixir-companies.com/en [1]https://elixirschool.com/en
A big thank you to everyone for the interest, the suggestions and for the many submissions. Thank you!
How do I get in touch to correct the tech stack on one of these?
Hello! Email me at hello@14hippos.com and I can get that fixed up for you.
I just did a small programming side project with a friend in Elixir and I was pretty impressed with the language, especially how it approaches functional programming, concurrency, parallelism, and “programming in the large” (e.g. networked systems and clusters).
I still think there’d be some sort of mental hurdle for me to consider using it for a project of the kinds described on WeUseElixir (vs my go-to language of Python).
But simply toying around with a concrete example of a concrete “word count” program scaled up to multi-core and multi-node made me “get” Elixir a lot more.
Also, I highly recommend this podcast interview with the author of “Elixir in Action.” He does a really nice job describing what makes Erlang and Elixir unique vs other commonly used backend programming languages.
https://se-radio.net/2018/08/se-radio-336-sasa-juric-on-elix...
Have you tried the codecrafters exercises, you can build a shell and a redis cache in it. It's not even that hard when you have a nice planned laid out like they do
You can add:
ElectricSQL Supabase Felt
There’s another list here: https://elixir-companies.com
Thx for the tips!
Cool -- I've suspected Elixir is used in many more companies than it's "famously" used in. A quick survey on Indeed somewhat confirms that.
Big fan, of both the language and community.
This is absolutely true.
I can confirm, from firsthand knowledge, that Elixir is used at dozens of Fortune 500 companies in the US.
yep, its always funny to come across a company that uses it. For me the latest one was tubi, ive heard truth social also uses it not 100% sure. Sometimes I wonder if they're quiet about elixir praise is because the technology just works with very little to no issues
Truth Social is just Mastodon on the backend and an alternative Twitter-like frontend called Soapbox. Soapbox is indeed Elixir-based and open source.
Soapbox has a very weird history of first being forked from Gab for a feminist platform called Spinster(.xyz), then it got acqui-hired by Truth Social, then many of them left Truth Social to be independent. Soapbox(.pub) today is mostly abandonware, the team switched focus to building products on top of Nostr.
The amount of times it switched sides in its 5 or so years of existence has been truly fascinating and difficult to keep track of.
One of the devs at truth social is fairly infamous in the elixir community. I have several friends who worked with him at other places.
Infamous for what
Probably being an insufferable prick, if this is to be believed: https://www.reddit.com/r/elixir/comments/1lj907v/comment/mzj...
In my experience the Elixir community is inviting and inclusive, promoting pretty much the opposite ethics of what "Truth Social" stands for.
Who?
Right now I'm using Elixir to build an open-source nonprofit tech company, I will have to remember to add it to this project directory once we launch. Cool idea, keep up the good work. As a nonprofit tech company keeping costs low matters a lot, and Erlang/Elixir on BEAM makes it very easy to have tons of concurrent users with minimal overhead. Server start time is very fast. Coming from other functional languages like Clojure helps, but is not a requirement for getting started quickly.
Elixir is fantastic. Liveview is a huge productivity multiplier - lot of boilerplate disappears.
LiveView is fun, but my problem is that in practice I often want local-first state. Is there a good way to do that with LiveView, maybe a clean way to write the little javascript snippets so they work with local state?
LiveView already has local first state. The magic in LiveView is how it uses WebSocket connections to the client to keep the client state in sync with the server state. This is why you just need to update the socket and the rest just works.
If you want to have some state that only exists on the server, then you simply don’t assign that data to the socket.
I guess I should have said "offline-first".
Checkout Hologram. It aims at client based state (but it’s all Elixir as it transpiles the Hologram pieces to JS).
LiveSvelte or LiveVue have some impressive demos. I've never used them though.
Alpine.js is a good tool for this, but it can have issues when LV updates the DOM.
You can take a look at JS commands and hooks. Ultimately I came to the determination that while LiveView is cool, I think I want the opposite. I’m hoping Hologram will be the answer.
This is a great idea. I'd like to make a few suggestions though:
- Allow filtering by companies and libraries. I'm interested in both, but I wanted to look at just the list of companies to see if there were any I didn't recognise.
- Adding a company seems to be just adding _your_ app. It would be good to suggest companies to be listed as long as you have some evidence that they use Elixir. I know that Apple has Elixir in their Environmental team, but I'm not sure how I would go about adding that.
- Move the category filtering to the directory page. It would be more interesting to see the whole list at once and filter by category.
Great suggestions! Thank you for taking to the time to share those.
A suggestion for addition:
> Plausible Analytics is a standard Elixir/Phoenix application backed by a PostgreSQL database for general data and a Clickhouse database for stats.
https://github.com/plausible/analytics
Will do, thx for the idea!
Half-OT: When would you use Elixir, when Erlang, and when Gleam?
I know relatively new projects that started with Erlang, despite Elixir being available and stable for years now.
Erlang is leaner and more elegant than Elixir. If you don't need the bells and whistles of Phoenix and Ash and so on, and your team is senior enough to just go with the syntax, then Erlang is a good option. Especially if you're doing sophisticated network plumbing and distributed processing stuff but not much direct interfacing with non-technical users.
Gleam takes inspiration from Elm, so if that's your thing and something you'd consider using, probably go with that rather than Phoenix. Again, if your team can handle it.
Personally I build web interfaces and so on as well as plumbing stuff and I'm also very fond of the one language through the entire stack experience it allows, so I mostly stick to Elixir. Prototyping in REPL, moving to scripts, and then into proper modules in the more stable projects. It also has a very nice code generation 'story' that allows a lot of nice shortcuts and sophisticated tools.
Small nitpick - I'd say the main Gleam web framework, Lustre, takes inspiration from Elm. Gleam itself takes inspiration from a number of sources, Rust, Erlang, the ML family of languages. I think Gleam is a lovely little language (though I'm also a huge fan of Elixir).
Is never say erlang is more elegant than elixir, simply due to things like ending functions with commas vs periods (yes they have actual meaning, no it's not really something worth worrying about), lack of pipes, and lack of things like with
They both compile down to the same bytecode, and both have fairly optimum compilers
As for gleam, it's a fun ml dialect, worth using if that's your thing. Same goes with LFE, if you like lisp
> Gleam takes inspiration from Elm, so if that's your thing and something you'd consider using, probably go with that rather than Phoenix. Again, if your team can handle it.
I think you meant Elixir there, not Phoenix?
Elm targets web browser languages, so I considered Phoenix to be a better point of comparison than Elixir broadly.
I’m not sure I’m following. Gleam is inspired by Elm in a lot of ways, and the major draw over Elixir would be the Elm-inspired type system, but Gleam is still a language not a web framework (which Elm is not either, since it only targets clients afaik).
I never used Erlang, and I'm a functional programming fan. But languages based on heavy VM that abstract OS away always make me doubt that's the right direction.
That's not a crazy instinct, and maybe if OSs were better you would even be right, but there's not really another way to get a skrillion communicating processes that can all crash/fail independently. Without a dedicated VM, all the other approaches are either less safe or too inefficient.
I consider BEAM an indication of a direction that OSs could and maybe should move. It's even possible to run BEAM on bare metal, (almost?) entirely in place of the normal OS.
> It's even possible to run BEAM on bare metal, (almost?) entirely in place of the normal OS.
How? With a unikernel?
Using GRiSP Metal, not exactly without an OS, but using a real time OS designed for embedded devices.
https://www.grisp.org/software
It's been a while, but I believe so. I think I'm remembering the "Erlang on Xen" project, which seems to be defunct now.
i would think so, no other option afaik.
I've built a hobby OS around BEAM... BEAM doesn't require a whole lot from the OS, I built a minimal kernel that runs a single process, which you could consider a unikernel or at least very close. I had originally wanted BEAM in ring 0, but I had a lot of trouble getting started. This way, I can just use a pre-compiled BEAM for FreeBSD and don't have to fight with weird compilation options. Anyway, with x86-32 at least, I can give my Ring 3 process access to all the ioports and let it request a mmap of any address, so the only drivers I need in the kernel are IRQ controllers, timers, and pre-beam console. Once beam is up, console i/o and networking is managed from erlang code (with a couple nifs)
What makes you think the BEAM VM is "heavy"?
It's almost like an OS in itself and initially designed to be like a more capable and robust OS on top of rather constrained computers. In my experience it's trivial to shell or port out to the environment when I want to, and I also see people that I don't think of as highly skilled low-level programmers do things with NIF:s so that can't be exceptionally demanding either.
Yes it's definitely not heavy like a Java program that will cannibalize your RAM.
It's actually quite lean.
It will use all your cores without you asking (which is fantastic right?) but it's configurable AFAIK.
It will also use preemptive multitasking, so busy processes won't pin CPU cores at the expense of other tasks.
Why not just make it a yaml document in a git repo instead of making users register?
That's worth considering. Avoiding the user registration would certainly be nice.
I have a digital studio that needs to find good companies to pitch them my services... just searching LI is not very helpful, this is way better.
Also, as a place that uses Elixir... I can find all the new tools and cool projects without watching endless videos on Youtubes... As I want to spend most of my time working on projects, not trying to catch up.
I think this is excellent, thank you for making it in this format.
Thx! Glad you're finding it useful!
IIRC, Kagi is written in Elixir
No, it's written in Crystal
https://crystal-lang.org/
ah, right...
[dead]