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
I’ve published the first version of my Makeup library. It’s a syntax highlighter for Elixir in the spirit of Pygments, Currently it highl...
New
seancribbs
Today I released a new dialyzer Mix task as the dialyzex package! At the time we started writing this task, the existing dialyzer integra...
New
pkrawat1
Presenting Aviacommerce, open source e-commerce platform in Elixir Aviacommerce is an open source e-commerce platform in Elixir. We at...
New
bradley
I’ve been working with Claude Code extensively and absolutely love it. However, I’ve come across the challenge of managing configuration ...
New
Crowdhailer
Experimenting with this code. OK.try do user <- fetch_user(1) cart <- fetch_cart(1) order = checkout(cart, user) save_orde...
New
nikokozak
Hello all, I’ve been working on Svonix - a library for quickly integrating Svelte components into Phoenix views. It’s a much-needed succ...
New
Qqwy
Hello everyone, I wrote a small library today called MapDiff. It returns a map listing the (smallest amount of) changes to get from map...
New
sbs
Only 650 LOC, wrote for fun :slight_smile: https://github.com/sunboshan/qrcode
New
cjen07
parameterized pipe in elixir: |n> edit: negative index in |n> and mixed usage with |> are supported example: use ParamPipe ...
New
benlime
LiveMotion enables high performance animations declared on the server and run on the client. As a follow up to my previous thread A libr...
New

Other popular topics Top

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 48475 226
New
Darmani72
If I have a post route which an argument: post /my_post_route/:my_param1, MyController.my_post_handler How would get the post params ...
New
TunkShif
This post is an instruction guide to help you setup your Neovim for Elixir development from scratch. It includes general information on h...
274 42158 114
New
sen
Hi All, I set a environment variables in dev.exs , like below code. when i start server, how can i set the ${enable} value? thanks. d...
New
shahryarjb
Hello, I have map which I want to convert it to string like this: the map: %{last_name: "tavakkoli", name: "shahryar"} the string I ne...
New
jerry
Good day to you all. I have been struggling to get a query involving like and ilike to work. Can anyone assist me on this, please? pro...
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
AstonJ
Seen any cool LiveView demos, sample apps or examples? Please post them here! :003:
New
jononomo
For some reason my phoenix channels are working for me in my local dev environment, but as soon as I deploy via Docker, I get a 403 error...
New
senggen
Erlang/OTP 25 [erts-13.2.2] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] 15:22:35.803 [error] gen_event {lager_file_backend...
New

We're in Beta

About us Mission Statement