I've long been interested in "learning how to learn" and have long been annoyed by how I have grown to forget things -- which is not a great sign for a 24-year-old. That, combined with how I, and several of my friends, have grown dependent on our phones over the years, has led me to create a system to better learn, memorize and remember things long term without necessarily needing your phone.
Flashcards
I remember using Quizlet extensively throughout high school since it was pseudo-required for many subjects, but that practice did not follow in college where most classes in my Data Science program required either coding or math, neither of which you would immediately connect to flashcards or memorization at first glance. I noticed throughout the years that it would be hard to recollect certain memories, whether that be with names of people, facts about certain subjects, or simply things I had definitely learned but could no longer recall.
So as one does, I made my own app with their native programming language called MonkeyC.
The Prototype

Garmin VivoActive 6 with Anki Prototype
When I won first place at UF AI Days Hackathon, we were given the choice of a $300 tech-related item. I got a Garmin VivoActive 6 despite not running that much, as I was kind of obsessed with my sleep and staying off my phone at that time, and that seemed like a good choice -- plus I could leave my phone outside of my room and set alarms on my watch.
Going back to the flashcards, I was also excited to install Anki on my brand new Garmin and review my flashcards on my wrist whenever I was walking or showering or doing just about anything else.
Anki on My Wrist
Well, that was short lived. I did not find a downloadable Anki app for Garmin, or any public implementation of how to get Anki on your Garmin. So as one does, I made my own app with their native programming language called MonkeyC, installed the AnkiConnect add-on to enable programmatic HTTP calls, exposed my computer via an ngrok tunnel, realized Garmin expects API calls to be HTTPS, recreated their API system with FastAPI and a Cloudflare tunnel, and went through many iterations by refusing to use Windows' native Garmin plugin and using WSL2 instead. Once done, my watch could fetch, review and sync cards both ways with my Anki account.
Is Your Laptop On 24/7?
As you may have picked up, this setup does require my laptop to be turned on for the tunnel to be exposed, and when I do want to use my watch's app I am typically walking with my laptop happily closed and/or without wifi in my backpack. This was recently solved by getting one of the free Oracle VMs and moving all of my workflow to be inside the VM.
This VM does not have that much RAM -- well there is one better Oracle free VM, but that is typically always taken. I wrote a script to keep trying to select the better free version once it became available across all 3 available regions, and the script ran for 2 days with no luck.
System Architecture
More Issues
A Garmin, not surprisingly, does not have that much memory dedicated to third-party apps, so once my decks grew in size -- or the one time I forgot to review cards by being too busy making the workflow instead of reviewing them -- pressing sync overloaded the watch and crashed the app. The fix was paginated sync: fetching 10 cards at a time instead of the full deck, and eliminating intermediate data copies that tripled memory usage.
Even More Extensions
A separate issue I had was with note taking. I've used NotePad, Obsidian, OneNote, even a server with myself on Discord or a groupchat by myself on WhatsApp. I really liked Obsidian and used it for quite some time, but something that always annoyed me was having to alt-tab between whatever I was doing or relying on a separate monitor. This led me to create a super simple, lightweight AutoHotKey script that spawns a toggleable overlay.
I quickly expanded this small tool, adding a pomodoro timer, a feature that locks your screen in the current tab since I tend to sidetrack and do many things at once, an article clipper as I read many articles and lose track of what I read or where I found certain info later, and finally compatibility with my flashcards since I had already defined the API endpoints.
I integrated Claude into it by adding a notes-to-flashcards button (you can choose which cards you approve), and also this fun functionality where it proposes bridges between certain cards -- for example, you could have the cards "Neural Networks" and "Symbolic Programming" and the bridge system may propose "Neurosymbolic AI" as a bridge term that connects them.
Once again, once you have the API endpoints, you can integrate this into almost anything. I used ChatGPT Actions to create an "AnkiGPT," allowing me to review my cards via ChatGPT -- which also works with voice mode, letting me do my flashcards while driving on the highway.
Project Timeline
- Nov 2025 -- v1: basic Garmin watch app with sample cards, tap/swipe UI
- Dec 2025 -- FastAPI bridge with deck listing, card fetching, review submission
- Dec 2025 -- Cloudflare tunnel deployment -- anki.matheus.wiki goes live
- Dec 2025 -- AnkiGraph: LLM analysis, knowledge graphs, Obsidian export
- Jan 2026 -- Landing page with drag-and-drop multi-format card import
- Mar 2026 -- 24/7 Oracle Cloud VM deployment with headless Anki
Overreliance
As with all things, balance is important. Memorization without understanding, especially in a field like Machine Learning, may harm you as you may be unable to form new connections or generalize to new terms. The system I've built is a tool, not a replacement for deep thinking. But when you need to remember that one professor's name, or the year a paper was published, or the flags for a CLI tool you use twice a month -- having it on your wrist is genuinely useful.
Top comments (16)
Thank you for sharing @matheusmaldaner First time you told me about this project, I was immediately interested. Glad you're sharing it with the community : )
Thank you for the support, I look forward to sharing other projects (:
This is awesome! Sick project
Thank you Jon!
I have not reached this level of Anki Intense, but will stive to ๐ซก
howโs the legibility on a screen that small? any limitations you faced after?
That is a really good question. A lot of my cards have really long descriptions (I did not follow the "keep it simple" approach, and that is still a bad habit), so I ran into some issues where the app would either (1) crash or (2) display only a small subset of the description when the card was flipped.
Right now I have a little "scrolling" mechanism that you can swipe up and down after flipping the card to check the description in full. You can then tap the screen again to rate the card ("Again", "Easy", "Good", "Hard") by swiping up/down/left/right.
One more limitation is that in order to sync it, the watch talks through your phone, so sometimes I need to open the Garmin app on my phone and try the "resync" on the watch again.
the phone dependency angle is real. i tried doing anki on my phone and the problem is you open the app, do 3 cards, then somehow end up on twitter 20 minutes later. having it on a wrist device removes that entire failure mode. the friction is the feature
Hahah same here, even on my computer I get distracted with email pop-ups so this certainly helps. I have tried Opal and recently played around with a Brick for app blocking, but it is hard when many work-related things require 2FA on my phone. Next side project might be how to move 2FA for my other apps to the watch...
the 2FA on watch idea is actually interesting - TOTP codes would work fine on a small display. would make checking codes way less of a context switch than unlocking your phone
Fascinating
Thank you Ben!
what watch platform did you build this on and how are you handling the card rating input, because that's the part that breaks most wrist based review tools when the screen is small enough that a mis tap changes your rating
Glad to see you posting here ๐ The wrist flashcard thing is a great idea. What's your daily card review count looking like?
Hi Swift, thank you for the support! I must admit that I spent too much time building the workflow instead of reviewing the cards, so now I am sitting at ~150 unreviewed ones...
Typically I have no more than ~25 cards a day to review + a lot of short of language ones (english vocab and basic German words)
This is the kind of project I love seeing โ solving your own problem and shipping something real. The Cloudflare tunnel + Oracle Cloud VM setup for 24/7 availability is scrappy in the best way.
As an indie iOS/watchOS developer, I'm always thinking about what "micro-interactions" work best on wrist-sized screens. Flashcards are a perfect fit โ the tap/swipe UI maps naturally to watch gestures.
The Claude integration for notes-to-flashcards is a smart touch. I'm building a Markdown note app for iOS with on-device AI, and auto-generating study cards from notes is something I hadn't considered. Might steal that idea. ๐
Really impressive end-to-end system from Garmin app โ FastAPI โ Anki โ Cloud deployment. The project timeline shows how quickly you can iterate when you're building something you actually use daily.
The architecture evolution here is what makes this fascinating โ going from ngrok tunnel to FastAPI + Cloudflare to a 24/7 Oracle VM is basically the classic indie developer infrastructure progression compressed into a few months. I went through a very similar journey when I needed always-on services for a programmatic SEO project (started with my laptop, moved to a VPS, eventually landed on edge functions).
The "bridge" feature between flashcards using an LLM is genuinely brilliant. That's not just spaced repetition anymore โ it's knowledge graph construction happening passively while you review. I wonder if you've considered exporting those bridge connections as an Obsidian graph or similar visualization? Seeing which concepts cluster together over time could reveal gaps in your knowledge map that you wouldn't notice from individual cards.
Also, the paginated sync fix for Garmin's memory limits is a good reminder that constrained environments force better engineering. MonkeyC sounds like it has some interesting limitations to work around โ do you find the development cycle painful or is the Garmin SDK reasonably developer-friendly?