abreujp

abreujp

ExDocAnki - generate Anki flashcards from Elixir project documentation using ExDoc

Hi everyone,

I built a small Elixir library called ex_doc_anki to generate Anki flashcards from any Elixir project’s documentation using ExDoc.

The main goal is to help you study Elixir APIs through spaced repetition, turning documentation into practice.

How it works:

  • uses ExDoc under the hood to extract documentation
  • for each function, type, and callback, generates a card
  • Front: Module.function/arity (e.g., Enum.map/2)
  • Back: documentation, type spec, and code examples
  • outputs a CSV file you can import directly into Anki
    Typical usage inside a project:
    {:ex_doc_anki, “~> 0.1.1”, only: :dev, runtime: false}
    Then:

Generate cards for your project

mix doc_anki

Generate cards for a dependency

mix doc_anki ecto
mix doc_anki phoenix ecto ecto_sql
The CSV is saved at doc/anki_cards.csv. To import into Anki:

  1. File → Import, select the CSV
  2. Set separator to Semicolon
  3. Map column 1 to Front, column 2 to Back
    A few notes:
  • it works as a Mix task added to your project, not as a standalone CLI
  • you can generate cards for any dependency, even transitive ones
  • if you already have ex_doc as a dependency, you may need to adjust the :only option (the docs explain why)
    It has already been useful in my own workflow, especially for memorizing common Elixir patterns and function signatures.
    Feedback is very welcome, especially around:
  • card formatting and content quality
  • edge cases in documentation parsing
  • ideas for improving the Anki import experience
    Links:
  • Hex.pm: ex_doc_anki | Hex
  • GitHub:

https://github.com/abreujp/ex_doc_anki

Thanks!

Where Next?

Popular in Announcing Top

tmbb
PhoenixWS - Websockets over Phoenix Channels Source code on Github here: GitHub - tmbb/phoenix_ws: Websockets implemented over Phoenix Ch...
New
pkrawat1
Presenting Aviacommerce, open source e-commerce platform in Elixir Aviacommerce is an open source e-commerce platform in Elixir. We at...
New
restlessronin
The repo is at GitHub - cyberchitta/openai_ex: Community maintained Elixir library for OpenAI API · GitHub. Docs are at OpenaiEx User Gu...
152 10167 134
New
alisinabh
Hey everyone i’ve developed a library for Jalaali calendar for elixir which supports converting Gregorian dates to Jalaali and vice vers...
New
woutdp
Hi! I wanted to introduce my latest project LiveSvelte. It allows you to render Svelte inside LiveView with end-to-end reactivity. It’s ...
New
tmbb
I’ve been working on two packages (not on hex.pm yet) to build admin interfaces for phoenix apps: bureaucrat - which contains a bunch ...
New
RobertDober
Earmark is a pure-Elixir Markdown converter. It is intended to be used as a library (just call Earmark.as_html), but can also be used as...
239 12560 134
New
michalmuskala
Another small library today. PersistentEts Hex: persistent_ets | Hex GitHub: GitHub - michalmuskala/persistent_ets · GitHub Ets table ...
New
michalmuskala
Hello everybody. I have just released Jason - a new JSON library. You might be wondering, why do we need a new library? The primary foc...
New
zachdaniel
Ash Framework What is Ash? Ash Framework is a declarative, resource-oriented application development framework for Elixir. A resource can...
New

Other popular topics Top

albydarned
Hello all! I am typing this post from my new MacBook Pro with the M1 chip. I’m loving it so far, and will probably use it as my daily dr...
New
skosch
To my knowledge, put_in, Map.update etc. all have the one limitation of not automatically creating intermediate keys when needed (for exa...
New
lessless
I believe there are people here who are dealing with CSV files import on the daily basis, and since Excel is a really popular tool there ...
New
vegabook
I’m brand new to Phoenix and I have stripped one of the demo applications to the bone. I just want to get an svg up on the screen. Here i...
New
stefanluptak
Hello everybody, usually, I use a 29" ultra-wide monitor for VSCode which can easily accomodate explorer (files panel) + file with code ...
New
bsollish-terakeet
Credo is smart enough to check for (something like) this: assert length(the_list) == 0 with this response: Checking if an enum is empt...
New
jason.o
In the code below, if the create action is not set to accept “extra_key” as an input, it errors out with a message shown above. Is there ...
New
nsuchy
Hi. I’ve noticed that Windows Powershell has it’s own IEX command and you cannot access Elixir’s IEX due to the conflict. This isn’t a cr...
New
axelson
This post is a wiki (feel free to hit the edit button near the bottom right of this post to add your own changes!) This post collects co...
239 47930 226
New
dogweather
I wrote this comment on r/haskell, and it’s not popular there. :wink: But I think I’m on to something… Haskell reminds me of Java, and e...
New

We're in Beta

About us Mission Statement