AnkiGenAddon main image

Опис та деталі проекту

Задача

AnkiGenAddon вирішує прикладну задачу: Розробив продвинутий додаток для Anki на Python для автоматичної генерації карток з підтримкою фрагментів коду (з підсвіткою синтаксису), markdown та JSX. Реалізував кастомні діалогові вікна UI, відстеження прогресу та кілька режимів навчання: Dive Mode (структуроване вивчення програмування), Testing Mode (оцінка знань) та Language Learning Mode (Beta). Забезпечив надійність за допомогою комплексного набору тестів pytest.

Проект є комерційним і наразі активно розробляється. Він пов'язаний з послугами: Full-stack веб-додатки та дашборди.

Кейс демонструє підхід до завдань у сфері "Full-stack веб-додатків та дашбордів": від визначення завдання до здачі з чіткою структурою модулів.

Перед початком зафіксували критерії готовності: зрозумілий перший екран, передбачувані помилки форм, можливість доопрацювання без переписування половини кодової бази.

Рішення

Зроблено навчальну, але повноцінну реалізацію з акцентом на читабельність коду та відтворювану збірку.

Сценарії спроектовані так, щоб основні дії укладалися в один-два екрани: менше перемикань, менше помилок при введенні. Навігація та підписи полів узгоджені з звичними патернами — користувачу не потрібно "вивчати інтерфейс".

Окрему увагу — станам завантаження та порожнім спискам: skeleton/spinner там, де дані приходять асинхронно, і зрозумілі empty-state тексти замість порожньої таблиці.

Архітектура і стек

Сервер і дані: python-dotenv.

Інфраструктура та утиліти: aiohttp, beautifulsoup4, openai, pygments, pytest, pytest-asyncio, pytest-cov, requests, tiktoken, typing-extensions, PyQt6, asyncio.

Розподіл мов у репозиторії: Python (95%), JavaScript (2.5%), HTML (1.1%), CSS (1%), Shell (0.3%), Dockerfile (0.1%).

Шари розділені так, щоб UI не знав деталей транспорту: адаптери API/сховища, доменні типи, компоненти представлення. Це спрощує заміну бекенду та точкові UX-правки.

Ключові функції

  • aiohttp — використано в продуктовій логіці: зменшує кількість самописного коду та прискорює додавання нових екранів.
  • beautifulsoup4 — використано в продуктовій логіці: зменшує кількість самописного коду та прискорює додавання нових екранів.
  • openai — використано в продуктовій логіці: зменшує кількість самописного коду та прискорює додавання нових екранів.
  • pygments — використано в продуктовій логіці: зменшує кількість самописного коду та прискорює додавання нових екранів.
  • pytest — використано в продуктовій логіці: зменшує кількість самописного коду та прискорює додавання нових екранів.
  • pytest-asyncio — використано в продуктовій логіці: зменшує кількість самописного коду та прискорює додавання нових екранів.
  • pytest-cov — використано в продуктовій логіці: зменшує кількість самописного коду та прискорює додавання нових екранів.
  • python-dotenv — використано в продуктовій логіці: зменшує кількість самописного коду та прискорює додавання нових екранів.

Додатково:

  • Інтеграція та використання aiohttp в продуктовій логіці та інтерфейсі.
  • Інтеграція та використання beautifulsoup4 в продуктовій логіці та інтерфейсі.
  • Інтеграція та використання openai в продуктовій логіці та інтерфейсі.

Результат

MVP вже покриває ключовий сценарій; далі — розширення звітності, тестів та моніторингу.

Вихідний код відкритий: https://github.com/astropsy999/ankiGenAddon — можна оцінити структуру модулів та стиль комітів.

Що б покращив

Наступний крок — observability (логи/метрики), автотести на регрес та документація API для інтеграторів. Для high-load сценаріїв — профілювання вузьких місць та кешування довідників.

Часті запитання

Для чого потрібен проєкт «AnkiGenAddon»?

Розробив просунутий аддон для Anki на Python для автоматичної генерації карток з підтримкою фрагментів коду (з підсвічуванням синтаксису), markdown та JSX. Реалізував кастомні діалогові вікна UI, відстеження прогресу та кілька режимів навчання: Dive Mode (структуроване вивчення програмування), Testing Mode (оцінка знань) та Language Learning Mode (Beta). Забезпечив надійність за допомогою комплексного набору тестів pytest.

Який стек у «AnkiGenAddon»?

Технології: aiohttp, beautifulsoup4, openai, pygments, pytest, pytest-asyncio, pytest-cov, python-dotenv, requests, tiktoken, typing-extensions, PyQt6, asyncio.

Інформація про проект

CommercialIn Development

Використані технології

aiohttpbeautifulsoup4openaipygmentspytestpytest-asynciopytest-covpython-dotenvrequeststiktokentyping-extensionsPyQt6asyncio

Мови

Python (95%)JavaScript (2.5%)HTML (1.1%)CSS (1%)Shell (0.3%)Dockerfile (0.1%)