Project Ideas

If you want to participate, but you don't know what project to work on, fear not! Here you have a list of project ideas to inspire you and your team


Livebook notebooks

(for bracket "Livebook projects")

Be creative and submit Livebook notebook(s)!

Livebook Smart Cells

(for bracket "Livebook projects")

Be creative and submit Livebook Smart Cell(s)!

Add branch coverage to cover
Add branch coverage to cover, so that if you see expr1() orelse expr2() and the right-hand side of an orelse is never invoked in the test, the line is shown as yellow (partially covered)

Dialyzer Simplifier
We always complain about the cryptic (but right, though!) messages Dialyzer generates. It would be amazing to create something to help newcomers (and experienced devs alike) understand them better.

rebar3 vendor plugin
Create a rebar3 plugin that vendors in dependencies from multiple sources (paths, Git, Hex, etc.). Said plugin would properly handle renaming files and module names per consumer configuration.

visual code coverage reporting tool with history
A tool that keeps history of coverage percentage and allows displaying results in a visual fashion (e.g. like a graph with the run id on the x axis and the coverage percentage on the y axis)

Native secrets library for projects
A tool to allow storing secrets in Git (or another CVS) with minimal configuration effort, native to BEAM

Pretty diff support for common tests
A library that provides assertions which produce pretty diffs a la ExUnit on match and comparison assertions.

Recurring event site
A website to organize recurring events (in the style of Meetup but for stuff that happens every week). I'm thinking about... say... a group of friends that gather every week in the same place to play soccer, watch movies, read books, or hike.

A public sports field status tracker app/website.
This service would allow players to share the status of public sports facilities (i.e. table tennis tables, basketball rings, soccer fields, etc.) around the city. You will be able to know if they're free or if your friends are there or even what's the weather like there, without actually moving to that location.

An auto-emoji creator for Slack/Discord
A Slack plugin that when you write ":bananas:", if there is no emoji yet for that… it will try to guess what you mean by that, find out a proper image for it, and upload it to that Slack workspace so that ":bananas:" immediately turns into 🍌 without you having to actually create that emoji yourself.

Distributed systemd scheduler
A BEAM based implementation of fleetctl from CoreOS

RSS/email/NNTP client
would work similarly to Hey.com, but would allow reading news and mailing groups in tree-like format

Vulnerabilities store
An application that tracks vulnerabilities in BEAM libs and applications. Said application would work with https://hex.pm, utilizing CycloneDX SBoM and providing an API for GitHub/GitLab for generating security notifications.

Calendar library in Erlang
Calendar library with TZ support, sub second support, and anything else the current calendar module in Erlang/OTP is missing.

Unicode manipulation library
The string module does not provide a number of operations that have to be implemented by hand (such as removing accented characters). Support for Unicode codepoint properties ala libicu. Support for decoding/encoding UTF-8 from/to various other character encodings would also be useful, for example when dealing with email data.

Hedy on the BEAM
Implement Hedy on the BEAM. See Hedy Code for details.

Leex column number support
Currently Leex https://erlang.org/doc/man/leex.html the lexical analyser generator for Erlang does not support column numbers for the generated scanners. The returned tokens contain only a line number and not a tuple of {line(), column()}. This doesn't matter for the Erlang compiler because it doesn't use a leex generated scanner but all languages that do use leex can't support column numbers in error messages because of that. For backwards compatibility this should probably be optional. Optimally such a project could target itself for inclusion in Erlang/OTP.

Generic non-deterministic user level scheduler
Create a general purpose non-deterministic user level scheduler that generates random schedules, provides hook for shrinking, and produces seeds for repeatability ala PULSE in QuickCheck.

Erlang Code Improver
We have Elvis which will show places where we can improve our code, but it won't fix them. It would be cool to go one step further and build something to apply changes to our code to improve it.

copyright-header creator/updater
a copyright-header-creator lib. (add an easy copyright - or update an existing one - to all your source files) - might have to deal with parse_trans or regexp

Some Application
If you feel adventurous, why not implement something suggested by The App Idea Generator?

A Game
Pick your favorite game and make a server for it, like we did with Serpents. You can make it so the clients can be bots, or they can connect through an API or you can actually provide a visual interface to the game.

dependency upgrade suggestion system
have a way to, given a folder full of random projects (e.g. rebar3 or mix -based) determine what would be the best way to bump deps in them tree analysis + upstream analysis (think AdRoll/rebar3_depup but for a complete tree)