shiping
면접·시험 도우미, AI가 실시간으로 풀이 아이디어를 제공
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Self-hosted Anki in your browser, on your phone and on your computer: study your real Anki collection, play Quizlet sets in every mode, and turn your vocabulary into AI stories with tap-to-translate. Offline apps for Android, iPhone, Windows, macOS and Linux, AnkiWeb or your own sync server, multiple profiles, one-line install.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Watch the demo · Install · Features · Docs · API
AnkiBase is a self-hosted web app for language learners. It runs your real Anki collection in the browser, plays Quizlet sets in every Quizlet mode, and uses AI to turn the words you're learning into short stories you can read with tap-to-translate. It runs on your own server, so your decks stay with you.
.apkg import, and deck management.Import a set from its link and study it in Flashcards, Learn, Write, Test, Match, Blast and Blocks. Learn works like Quizlet's, with goals, rounds, multiple choice followed by written answers, and mastery tracking. Sessions save as you go, and the Study hub lists every unfinished one so you can pick it back up.
Search works like a dictionary, with pronunciation, senses, gender, plural and etymology. Next to it is "In your cards": every Anki note and Quizlet term that contains the word, along with its state.
A calendar heatmap, reviews over time, future due, card counts, intervals, ease, an hourly breakdown, answer buttons, true retention and cards added. Each view can be scoped to everything, one Anki deck or one Quizlet set. Quizlet gets its own terms to work on table.
Nine built-in themes, custom accent and base colours with a live preview, and theme import/export. Admins can set the server-wide default. Sliders, toggles and panels move with springy, velocity-aware motion.
The Android and iPhone apps run Anki's own engine on the phone: decks, studying, search, editing, .apkg import, stats and Anki's Deck Options all work with no connection at all. They only need the internet to sync, with AnkiWeb or your own sync server, and to reach your AnkiBase server for stories, AI and Quizlet, which they can also do without. What you opened from the server stays readable offline, and progress saved offline is sent when you're back.
They're built to feel like apps rather than a web page: no zooming, the layout clears notches, the Dynamic Island and the gesture bar, the answer buttons sit under your thumb, and the system bars follow your theme (on iPhone, the home screen icon too). Android: download the .apk from the latest release. iPhone: add the source https://apps.macr0.dev/static/ios/source.json in SideStore or AltStore and install AnkiBase from there (new builds show up as updates), or open the .ipa from the latest release in either, or build it yourself on Linux or a Mac (see ios/).
The same app runs on computers: download the Windows installer, the macOS .dmg or the Linux .AppImage from the latest release (see desktop/). They aren't code-signed, so the first launch needs one extra click: More info → Run anyway on Windows, right-click → Open on macOS.
https://<your AnkiBase>/syncserver/, so Anki Desktop, AnkiMobile, AnkiDroid and the iPhone app sync there instead of AnkiWeb.| Layer | Tech |
|---|---|
| Frontend | React 19, TypeScript, Vite, Tailwind CSS v4 |
| Backend | FastAPI + Uvicorn, SQLite |
| Anki engine | anki-cli: Anki's own engine as one small service, a collection per profile. No Anki Desktop, no container per profile |
AnkiBase doesn't reimplement Anki. All the Anki work goes through anki-cli, which I built alongside AnkiBase as its engine and released as its own project: Anki's official engine as a fast headless server, a drop-in for AnkiConnect (its test suite passes), that also serves Anki's own Statistics and Deck Options screens. It's useful on its own too, for scripts or anything that used AnkiConnect. More in the docs. | AI (optional) | Anthropic Claude, OpenAI, Google Gemini (bring your own key), or any OpenAI-compatible server such as Ollama |
You need a Debian-based server (Debian 12/13 or Ubuntu 22.04+) with root access.
curl -fsSL https://raw.githubusercontent.com/Macro002/AnkiBase/main/install.sh | sudo bash
The installer:
ankibase systemd service (and ankibase-anki for the Anki engine)Open the address it prints. The setup wizard walks you through your admin account, your first profile, syncing your cards (AnkiWeb, your own sync server, or one it runs for you) and an optional AI key.
One container with everything (the web app, Anki's engine and the optional sync server); your data stays in ./data:
mkdir ankibase && cd ankibase
curl -fsSLO https://raw.githubusercontent.com/Macro002/AnkiBase/main/docker-compose.yml
docker compose up -d
Open http://<your server>:8000 for the setup wizard. Put it behind your reverse proxy for HTTPS; it reads X-Forwarded-Proto. Update with docker compose pull && docker compose up -d (the in-app Update button shows this too). From a checkout, docker compose up -d --build builds the image yourself.
Click Update in the header when it lights up. AnkiBase follows tagged releases: it builds and checks the new version, backs up your code and data to /opt/ankibase/backups/, installs it, and puts the old version back if the new one doesn't start. To follow every commit instead, set UPDATE_CHANNEL=main in /opt/ankibase/backend/.env. From the command line:
curl -fsSL https://raw.githubusercontent.com/Macro002/AnkiBase/main/install.sh | sudo bash -s -- --update
backend/data/.secrets, mode 0600); API keys are encrypted with them.journalctl -u ankibase -f # live logs
systemctl restart ankibase # restart
systemctl status ankibase # status
journalctl -u ankibase-anki -f # Anki engine logs
Collections live in /opt/ankibase/anki-data/<profile>/ (Anki's usual layout: collection.anki2,
collection.media/, backups/), with a backup every hour.
Older versions ran one headless Anki container per account (now called profiles). The first
start after updating moves every one to the new engine on its own: it stops each container, copies the
collection and media into /opt/ankibase/anki-data/, carries the AnkiWeb login over and
removes the container. The Docker volumes are left untouched, so delete them yourself once
you're happy (docker volume ls, docker volume rm …).
# backend (http://localhost:8000)
cd backend
python3 -m venv venv && source venv/bin/activate
pip install -r requirements.txt
uvicorn main:app --reload
# frontend (http://localhost:5173, proxies /api to :8000)
cd frontend
npm install
npm run dev
Before opening a PR, run npm run lint and npm run build in frontend/. The docs site lives in docs/ (Nextra) and deploys to GitHub Pages on every push to main.
backend/
main.py FastAPI app and API routes
review.py studying through Anki's reviewer, signed media URLs
stats_engine.py Anki + Quizlet statistics
story_generator.py AI providers, stories, reading annotations
dictionary.py dictionary lookups
database.py SQLite: users, profiles, Quizlet sets, sessions, stories
security.py permissions, per-login profiles, secrets, outgoing-request checks
updater.py safe in-app updates (check, back up, install, roll back)
sync_server.py Anki's own sync server, run next to AnkiBase
frontend/src/
components/ Decks, Study, Quizlet modes, Story, Reading, Search, Stats…
components/study/ sandboxed Anki card frame
components/quizlet/ Learn, Test, Match, Blast, Blocks + shared UI
pages/Settings.tsx themes, sync, language, account, AI, users
pages/Setup.tsx first-run wizard
docs/ documentation site (Nextra)
install.sh installer / updater
MIT. AnkiBase is an independent project and isn't affiliated with Anki, AnkiWeb or Quizlet.