From 4dbc53890a81fc22d95332be7d0d315ac156e367 Mon Sep 17 00:00:00 2001 From: Antigravity Date: Tue, 22 Sep 2026 13:09:18 +0000 Subject: [PATCH] docs(plan): update roadmap with security layer (auth, sessions, rate-limit) and general english scope --- PEDAGOGY.md | 96 ++++++++++++++---------------- PLAN.md | 166 ++++++++++++++++++++++++++++------------------------ README.md | 49 ++++++---------- 3 files changed, 152 insertions(+), 159 deletions(-) diff --git a/PEDAGOGY.md b/PEDAGOGY.md index 0c01b5c..f1646e9 100644 --- a/PEDAGOGY.md +++ b/PEDAGOGY.md @@ -1,76 +1,70 @@ # Методология и педагогическая концепция проекта -> **Цель**: Быстро, качественно и без стресса вывести чтение и понимание технической англоязычной литературы (RFC, вендорная документация Cisco/Juniper, Linux networking, сетевые протоколы) на уровень свободного владения. +> **Цель**: Быстро, качественно и без стресса освоить живой английский язык (словарный запас, фразовые глаголы, идиомы, устойчивые обороты) и сформировать крепкий фундамент, на который впоследствии легко ляжет любая специализированная литература. --- -## 1. В чём главная проблема традиционного подхода? +## 1. В чём главная проблема традиционного изучения слов? -Студенты и инженеры, читая техническую документацию, регулярно сталкиваются с двумя ловушками: +Студенты, пытаясь расширить словарный запас при чтении или просмотре контента, регулярно сталкиваются с типичными барьерами: 1. **Разрыв фокуса (Context Switching Friction)**: - Встретив незнакомое слово (*deprecate*, *overhead*, *stale*, *propagate*), инженер переключается в переводчик, читает перевод, возвращается к тексту. Теряется мысль статьи, процесс чтения превращается в мучение. + Встретив незнакомое слово или идиому (*inevitable*, *figure out*, *out of the blue*, *reluctant*), человек переключается в переводчик, читает перевод, возвращается к тексту. Мысль потеряна, чтение превращается в мучение. 2. **«Кладбище слов» (Passive Word Graveyard)**: - Если слово записывается в блокнот или текстовый файл, оно никогда не повторяется по правильной кривой памяти. Пассивный список из 100 слов бесполезен: через неделю мозг помнит максимум 10–15% из них. -3. **Изолированный перевод без доменного контекста**: - В сетевых технологиях слова имеют специфические значения: - - *Stale* (не «чёрствый», а «устаревший/неактуальный маршрут»); - - *Drop* (не просто «уронить», а «отбросить пакет»); - - *Graceful* (не «изящный», а «корректный/штатный останов сервиса без потери данных»); - - *Flapping* (не «хлопанье крыльями», а «нестабильное падение и подъем интерфейса/маршрута»). + Если слово просто выписывается в блокнот или заметки на телефоне, оно никогда не повторяется по научной кривой памяти. Пассивный список из 100 слов бесполезен: через пару недель мозг забывает до 85% записанного. +3. **Изолированный перевод vs. Живая речь**: + В английском языке изолированное слово часто вводит в заблуждение: + - Фразовые глаголы полностью меняют смысл в связке с предлогами (*give up*, *turn down*, *look forward to*); + - Идиомы не переводятся дословно (*hit the nail on the head*, *piece of cake*); + - У каждого слова есть свои «партнёры» (collocations) — нельзя сказать *make a photo*, говорят *take a photo*. --- -## 2. Пять золотых правил методики +## 2. Пять золотых правил преподавательской методики -### Правило 1. Лексический подход и коллокации (The Lexical Approach) -*Мозг думает не отдельными словами, а блоками (chunks).* -- Не учите изолированное `overhead` — учите `encapsulation overhead`. -- Не учите изолированное `handshake` — учите `three-way handshake`. -- Не учите изолированное `bottleneck` — учите `throughput bottleneck`. -В сервисе сохраняется не просто голое слово, а **готовое терминологическое словосочетание**. +### Правило 1. Лексический подход (The Lexical Approach) +*Мозг думает не отдельными изолированными словами, а речевыми блоками (chunks).* +- Не учите голое `reluctant` — учите связку `be reluctant to do something` (неохотно делать что-то). +- Не учите голое `look` — учите `look forward to hearing from you`. +- Не учите голое `conclusion` — учите `jump to conclusions` (делать поспешные выводы). +Сервис проектируется так, чтобы фиксировать как отдельные слова, так и целые **устойчивые обороты**. ### Правило 2. Контекстный якорь (Contextual Anchoring) -*Память работает через ассоциации.* -Когда вы сохраняете слово вместе с реальным предложением из статьи или RFC: -> *"The router drops the packet due to TTL expiration."* -Ваш мозг связывает слово `drop` с конкретным сетевым процессом (TTL, router, packet). При повторении вы мгновенно вспоминаете живую ситуацию, а не абстрактный перевод. +*Человеческая память держится за сюжет и ассоциации.* +Когда вы сохраняете слово вместе с реальным предложением: +> *"He was reluctant to admit his mistake during the meeting."* +Мозг связывает слово `reluctant` с конкретным жизненным образом (митинг, ошибка, признание). При повторении вы мгновенно вспоминаете живую ситуацию, а не сухой перевод из словаря. ### Правило 3. Аудиальный и фонетический якорь (Phonetic Anchor) *Нельзя знать слово «только глазами».* -Инженеры часто произносят термины неправильно: -- *route* — `/ruːt/` или `/raʊt/` -- *cache* — `/kæʃ/` (а не «кеш-е») -- *queue* — `/kjuː/` -- *latency* — `/ˈleɪ.tən.si/` -- *chassis* — `/ˈʃæsi/` (а не «шассис») -- *tuple* — `/ˈtʌpəl/` (а не «тьюпл») -Сервис сразу предоставляет **нативную аудио-озвучку** и **международную транскрипцию IPA**. Это формирует уверенность для общения с зарубежными коллегами и прохождения технических собеседований. +Если не слышать, как слово звучит, мозг читает его «внутренним голосом» с ошибками. В английском языке орфография исторически не совпадает с произношением (*subtle* -> `/ˈsʌtəl/`, *thorough* -> `/ˈθʌr.ə/`, *receipt* -> `/rɪˈsiːt/`). +Сервис сразу предоставляет: +- **Нативную аудио-озвучку** (диктор US / UK); +- **Международную фонетическую транскрипцию IPA**; +- Понимание на слух исключает ступор при просмотре видео и живом общении. ### Правило 4. Интервальные повторения (SRS / SM-2) -*Кривая забывания Германа Эббингауза неумолима: за первые 24 часа стирается до 70% новой информации.* -Алгоритм интервальных повторений (SuperMemo SM-2, лежащий в основе Anki) показывает карточку **ровно в тот момент, когда мозг готов её забыть**: -- День 1 (первое знакомство) -- День 2 (+1 день) -- День 5 (+3 дня) -- День 12 (+7 дней) -- День 28 (+16 дней) -- День 65 (+37 дней) -**Результат**: 5–7 минут повторений в день гарантируют 95%+ долговременного удержания без переутомления и «зубрёжки». +*Кривая забывания Германа Эббингауза: за первые 24 часа мозг стирает до 70% новой информации, если не произошло повторения.* +Алгоритм интервальных повторений (SuperMemo SM-2, лежащий в основе Anki) напоминает карточку **ровно в тот момент, когда мозг готов её забыть**: +- День 1 (первое знакомство); +- День 2 (+1 день); +- День 5 (+3 дня); +- День 12 (+7 дней); +- День 28 (+16 дней); +- День 65 (+37 дней)... +**Результат**: 5–7 минут повторений в день гарантируют переход 95%+ слов в долговременную активную память. -### Правило 5. Активное припоминание (Active Recall) вместо иллюзии знания -Просто перечитывать список слов — это иллюзия («Да, я вроде это знаю»). Настоящее запоминание происходит только тогда, когда мозгу приходится **напрячься и вспомнить**: -- **Прямая карточка**: видишь английский термин + слушаешь аудио $\rightarrow$ вспоминаешь значение и контекст. -- **Обратная карточка**: видишь русский технический смысл $\rightarrow$ формулируешь правильный английский термин. -- **Cloze Deletion (Пропуски)**: *"The router [_____] the packet due to TTL expiration"* $\rightarrow$ подставляешь пропущенное слово. +### Правило 5. Активное припоминание (Active Recall) +Пассивное перечитывание списка слов создаёт иллюзию знания («О, да, я это видел»). Настоящее обучение происходит только тогда, когда память совершает усилие по извлечению: +- **Прямая карточка**: видишь английское слово + слышишь аудио $\rightarrow$ вспоминаешь значение и контекст; +- **Обратная карточка**: видишь русский смысл $\rightarrow$ формулируешь правильное английское выражение; +- **Пропуски (Cloze Deletion)**: *"He was [_____] to admit his mistake."* $\rightarrow$ подставляешь нужное слово. --- -## 3. Рекомендации студенту по ежедневной практике +## 3. Рекомендации по ежедневным занятиям -1. **Не сохраняйте всё подряд**: - Сохраняйте только те слова и обороты, которые реально мешают пониманию мысли автора или встречаются вам повторно. Оптимальный темп — от 5 до 15 новых качественных карточек в день. -2. **Всегда вставляйте предложение-источник**: - В поле ввода достаточно скопировать предложение целиком или слово + предложение. -3. **Утренний / вечерний спринт (3-5 минут)**: - Открывайте сервис с телефона или рабочего компьютера раз в день для прохождения очереди карточек, готовых к повторению по алгоритму SRS. +1. **Оптимальная дозировка**: от 5 до 12 новых качественных карточек в день. Лучше 7 слов каждый день, чем 100 слов раз в месяц. +2. **Всегда фиксируйте контекст**: увидели незнакомое слово в тексте — скопируйте всё предложение целиком. +3. **Разделяйте тегами**: `#general` (общий), `#phrasal-verb` (фразовые глаголы), `#idiom` (идиомы), `#work` (работа), `#tech` (технический язык). +4. **Утренний / вечерний спринт (3-5 минут)**: закрывайте карточки дня по алгоритму повторений без пропусков. diff --git a/PLAN.md b/PLAN.md index beea0a6..2d3892a 100644 --- a/PLAN.md +++ b/PLAN.md @@ -1,18 +1,28 @@ # План развития проекта Notes (notes.qpid.pro) -> **Принцип проектирования**: *«Работает как автомат Калашникова»* — сверхнадёжно, мгновенно, без раздутых зависимостей и необходимости постоянного ручного обслуживания. +> **Принцип проектирования**: *«Работает как автомат Калашникова»* — сверхнадёжно, мгновенно, защищено для публичного интернета, без раздутых зависимостей и постоянного ручного обслуживания. --- -## 1. Архитектура и стек решений +## 1. Архитектура и защита системы + +Сервис разворачивается на публичном сервере с белым IP (`31.77.203.213`). Вся система проектируется с учётом сетевой безопасности и изоляции личных данных. ``` ┌─────────────────────────────────────────────────────────────┐ │ notes.qpid.pro │ -│ (Nginx Reverse Proxy + Let's Encrypt) │ +│ Nginx (HTTPS / Let's Encrypt / Security Headers) │ └──────────────────────────────┬──────────────────────────────┘ │ proxy_pass :8002 ┌──────────────────────────────▼──────────────────────────────┐ +│ Слой безопасности (Auth) │ +│ • Аутентификация: сессионные токены (HTTP-only cookies) │ +│ • Хэширование паролей: PBKDF2-HMAC-SHA256 (соль + 100k) │ +│ • Защита от перебора (Rate Limiter: макс 5 попыток/мин) │ +│ • Закрытый доступ: все эндпоинты требуют авторизации │ +└──────────────────────────────┬──────────────────────────────┘ + │ +┌──────────────────────────────▼──────────────────────────────┐ │ Backend: Python 3.12 │ │ FastAPI / Uvicorn + SQLite (WAL mode) + Dictionary APIs │ └──────────────────────────────┬──────────────────────────────┘ @@ -21,104 +31,106 @@ ▼ ▼ ┌─────────────────────────────┐ ┌─────────────────────────────┐ │ Внешние открытые API │ │ Локальная БД SQLite │ -│ • Free Dictionary API │ │ • vocabulary_cards │ -│ (IPA, audio, definitions) │ │ • search_history │ -│ • MyMemory / Context Trans. │ │ • srs_reviews (SM-2) │ -│ (перевод на русский) │ │ • tags & categories │ +│ • Free Dictionary API │ │ • users (аккаунт, пароль) │ +│ (IPA, audio, definitions) │ │ • vocabulary_cards │ +│ • MyMemory / Translation │ │ • sessions (активные входы) │ +│ (русский перевод фразы) │ │ • tags & categories │ └─────────────────────────────┘ └─────────────────────────────┘ ``` ### Выбор технологий: -- **Backend**: Python 3.12 + FastAPI (асинхронный, лёгкий, типизированный, мгновенный запуск). -- **База данных**: SQLite в режиме `WAL` (Write-Ahead Logging). Полная транзакционность, нулевые затраты на администрирование, бэкап копированием одного файла. -- **Frontend**: Vanilla ES6+ / Modern CSS / HTML5. Без тяжелых бандлеров и node_modules. Адаптивный мобильный интерфейс (PWA), оффлайн-кэш на LocalStorage/CacheStorage, поддержка хоткеев. +- **Безопасность**: Защищённые сессии (Signed HTTP-only cookie `SameSite=Lax`, `Secure`). Защита от CSRF, XSS и брутфорс-атак через встроенный rate limiter. +- **Backend**: Python 3.12 + FastAPI (асинхронный, легковесный, моментальный старт). +- **База данных**: SQLite в режиме `WAL` (Write-Ahead Logging). Идеальная транзакционная надежность, автономность, бэкап в один файл. +- **Frontend**: Чистый Vanilla ES6+ / Modern CSS / HTML5. Мгновенная загрузка (< 50 мс), оффлайн-кэш, адаптивность (смартфон + десктоп), поддержка хоткеев. - **Внешние API (Zero-cost & Open)**: - 1. *Free Dictionary API* (`api.dictionaryapi.dev`): официальная фонетическая транскрипция IPA, аудио-файлы нативного произношения (US/UK), английские определения и примеры. - 2. *MyMemory Translated API*: качественный перевод фраз и предложений на русский язык. + 1. *Free Dictionary API* (`api.dictionaryapi.dev`): фонетическая транскрипция IPA, аудио-произношение нативных дикторов (US/UK), части речи, толкования и примеры. + 2. *MyMemory Translation API*: литературный перевод фраз, идиом и предложений на русский язык. --- ## 2. Этапы реализации (Roadmap) -### Этап 1: Ядро системы (MVP) — Быстрый поиск, перевод и фиксация -*Цель: закрыть боль переключения контекста при чтении документации.* +### Этап 1 (Текущая итерация): Безопасное ядро (MVP) — Общий английский, перевод и фиксация +*Цель: создать защищённый, сверхбыстрый и надёжный персональный словарь для повседневного и профессионального английского языка.* -- [ ] **1.1. Базовый интерфейс ввода**: - - Строка поиска в фокусе при открытии страницы. +- [ ] **1.1. Модуль защиты и авторизации**: + - Страница авторизации (минималистичный дизайн, вход по логину и паролю). + - Защита всех API эндпоинтов: неавторизованные запросы блокируются (`401 Unauthorized`). + - Надежное хранение паролей в SQLite (`PBKDF2-HMAC-SHA256` с уникальной солью). + - Rate Limiter на эндпоинт `/api/login` (не более 5 неудачных попыток в минуту с IP). + - Сессии через зашифрованные `HttpOnly` cookie. + - Кнопка «Выйти из аккаунта» в шапке сервиса. +- [ ] **1.2. Быстрый поиск и каскадный перевод (General & Idiomatic English)**: + - Строка поиска в фокусе сразу при открытии страницы. + - Поддержка любых форм языка: + - Отдельные слова (существительные, глаголы, прилагательные); + - Фразовые глаголы (*run into*, *figure out*, *call off*); + - Идиомы и разговорные фразы (*once in a blue moon*, *take for granted*); + - Предложения целиком (из книг, сериалов, документации). + - Автоматическое получение: + - Фонетической транскрипции (IPA); + - Нативного аудио-произношения (US/UK); + - Частей речи и толкования на английском; + - Русского перевода. + - Кэширование словарных запросов в локальной базе для мгновенных повторных ответов. +- [ ] **1.3. Контекстное сохранение слова в 1 клик**: - Горячие клавиши: - - `Enter` — мгновенный перевод. - - `Ctrl + Enter` (или `Cmd + Enter`) — сохранить карточку. - - `Esc` — очистить поле ввода. - - `Ctrl + P` (или пробел на карточке) — воспроизвести аудио-произношение. -- [ ] **1.2. Каскадный переводчик (Backend API)**: - - Автоопределение ввода: отдельное слово или предложение/фраза. - - Запрос словарных данных (транскрипция, аудио mp3, толкование, русский перевод). - - Кэширование запросов в локальной SQLite для мгновенного повторного показа. -- [ ] **1.3. Контекстное сохранение**: - - Поле для ввода контекстного предложения (откуда взято слово). - - Быстрый выбор тега (по умолчанию `#networking`, `#general`, `#protocol`). - - Возможность подправить перевод перед сохранением. -- [ ] **1.4. Журнал истории и база слов**: - - Хронологическая лента сохраненных слов с датой и временем. - - Поиск и фильтрация по сохранённым словам. - - Мгновенное удаление / редактирование. + - `Enter` — мгновенный перевод; + - `Ctrl + Enter` (или `Cmd + Enter`) — мгновенное сохранение в словарь; + - `Esc` — очистить ввод; + - `Ctrl + P` или клик на динамик — прослушать произношение. + - Возможность подправить перевод перед сохранением под свой контекст. + - Поле для ввода контекстного предложения (где встретилось слово/выражение). + - Выбор/ввод тегов (`#general`, `#phrasal-verb`, `#idiom`, `#daily`, `#networking`). +- [ ] **1.4. Журнал личного словаря (History & Words List)**: + - Хронологическая лента всех сохраненных слов с датой и временем. + - Живой поиск по английским словам, русскому переводу и контексту. + - Фильтр по тегам в один клик. + - Воспроизведение аудио прямо из списка. + - Удаление / редактирование карточек. +- [ ] **1.5. Инфраструктурное развертывание**: + - Конфигурация Nginx для `notes.qpid.pro` с proxy на бэкенд (`127.0.0.1:8002`). + - Systemd-сервис для автозапуска и перезапуска при сбоях. --- -### Этап 2: Организация, теги и экспорт -*Цель: структурирование профессионального глоссария инженера.* +### Этап 2: Организация, теги, экспорт и PWA +*Цель: гибкое управление растущим словарным запасом и удобство на мобильных.* -- [ ] **2.1. Система тегов и коллекций**: - - Тегирование по направлениям: `#routing`, `#switching`, `#security`, `#bgp`, `#linux-kernel`, `#troubleshooting`. - - Фильтрация в один клик. +- [ ] **2.1. Расширенная организация**: + - Коллекции и папки (например, «Разговорный», «Работа», «Книги/Сериалы», «Сети/IT»). + - Быстрое массовое тегирование. - [ ] **2.2. Экспорт данных**: - - Экспорт в CSV / Markdown. - - Экспорт готовой колоды для Anki (`.csv` / `.apkg`) с аудио и контекстом. - - Резервное копирование базы данных в 1 клик. + - Экспорт базы в CSV / JSON / Markdown. + - Экспорт в колоду Anki (`.apkg` / `.csv`) с аудио и контекстными предложениями. + - Резервное копирование SQLite в один клик. - [ ] **2.3. PWA (Progressive Web App)**: - - Возможность установки на смартфон / десктоп как самостоятельное приложение. - - Работа со списком слов в режиме оффлайн. + - Установка на экран смартфона (iOS / Android) как нативное приложение. + - Оффлайн-доступ к сохранённым словам. --- ### Этап 3: Встроенный тренажер интервальных повторений (SRS / SM-2) -*Цель: гарантированное запоминание без необходимости устанавливать сторонние программы.* +*Цель: перевод слов из пассивного словаря в активную долговременную память.* -- [ ] **3.1. Движок алгоритма SuperMemo-2 (SM-2)**: - - Расчет фактора легкости (Ease Factor, $EF$). - - Очередь повторений на сегодня: карточки со статусом `Due`. - - 4 кнопки оценки: - - `Again` (< 10 минут) - - `Hard` (+12 часов) - - `Good` (+1 день $\rightarrow$ +3 дня $\rightarrow$ +7 дней...) - - `Easy` (+4 дня $\rightarrow$ геометрическая прогрессия) -- [ ] **3.2. Режим карточек (Flashcards)**: - - Лицевая сторона: английский термин + аудио. - - Оборотная сторона: русский перевод + контекстное предложение + определение. -- [ ] **3.3. Режим Cloze Deletion (Вставка пропущенного слова)**: - - Мозг тренируется вспоминать термин прямо в техническом предложении: - > *"The switch [ ... ] the packet if the VLAN tag is invalid."* -- [ ] **3.4. Аудио-диктант (Active Spelling)**: - - Сервис проигрывает произношение термина, пользователь печатает его на слух. +- [ ] **3.1. Движок SuperMemo-2 (SM-2)**: + - Расчет интервалов забывания Эббингауза: `Again`, `Hard`, `Good`, `Easy`. + - Очередь на сегодня: карточки, готовые к повторению. +- [ ] **3.2. Режим Flashcards**: + - Карточка En $\rightarrow$ Ru и Ru $\rightarrow$ En с озвучкой. +- [ ] **3.3. Режим Cloze Deletion (Пропуски)**: + - Заполнение пропущенного слова прямо в живом предложении. +- [ ] **3.4. Аудио-тренажёр (Dictation)**: + - Слушаем слово $\rightarrow$ печатаем правильный спеллинг. --- -### Этап 4: Профессиональный инструментарий сетевого инженера -*Цель: превратить сервис в персонального ментора по сетевому английскому.* +### Этап 4: Интеллектуальный помощник и аналитика +*Цель: отслеживание динамики и поддержка мотивации.* -- [ ] **4.1. Встроенный сетевой глоссарий и акронимы**: - - База популярных сетевых акронимов и аббревиатур (MTU, MSS, BFD, ECMP, CIDR, STP, SYN/ACK) с расшифровкой и техническим смыслом. -- [ ] **4.2. Статистика и аналитика прогресса**: - - Счётчик дней непрерывного обучения (Daily Streak). - - График объёма активного словарного запаса. - - Коэффициент удержания памяти (% успешно вспомненных слов). -- [ ] **4.3. Быстрый захват из браузера**: - - Букмарклет (Bookmarklet) для выделения слова на любой веб-странице документации и мгновенной отправки в `notes.qpid.pro`. - ---- - -## 3. Критерии качества («Автомат Калашникова») -1. **Скорость**: Открытие страницы $< 100$ мс, поиск $< 300$ мс. -2. **Отказоустойчивость**: Если внешний API словаря недоступен, сервис предлагает ручной ввод без блокировки интерфейса. -3. **Безопасность данных**: Данные хранятся в надежной локальной SQLite, регулярный автоматический snapshot базы. -4. **Удобство**: Управление полностью доступно с клавиатуры (без необходимости тянуться к мыши). +- [ ] **4.1. Статистика и Daily Streak**: + - Учёт непрерывных дней занятий. + - График роста активного словарного запаса по уровням (A1-C1). +- [ ] **4.2. Быстрый захват из браузера**: + - Букмарклет для выделения текста на любой странице и отправки в словарь. diff --git a/README.md b/README.md index c24a399..7593927 100644 --- a/README.md +++ b/README.md @@ -1,57 +1,44 @@ # Notes (notes.qpid.pro) -> **Персональный тренажёр и словарь технического английского языка для сетевого инженера.** -> Создан для быстрого снятия языкового барьера при чтении RFC, документации Cisco/Juniper, Linux networking и технических статей. +> **Защищённый персональный тренажёр и словарь английского языка.** +> Создан для быстрого и надёжного расширения словарного запаса (общий английский, фразовые глаголы, идиомы, профессиональные термины) без отвлечения от чтения и просмотра контента. --- -## 🎯 Миссия проекта -При чтении технической документации постоянные переключения на переводчик выбивают из мысли, а ручная запись слов в блокнот превращается в «кладбище информации». +## 🎯 Концепция и методика +Чтение статей, книг или просмотр видео на английском часто тормозится незнакомыми словами и выражениями. Обычный переводчик даёт мгновенный ответ, но слово сразу забывается. Ручные списки превращаются в «кладбище информации». Проект решает эту проблему по принципу **«автомата Калашникова»**: -1. **Мгновенный поиск и перевод** без отвлечения от чтения. -2. **Контекстный якорь**: сохранение слова вместе с живым предложением из документации. -3. **Фонетическое закрепление**: нативное произношение (US/UK) и транскрипция IPA, чтобы говорить на митингах уверенно. -4. **Интервальные повторения (SRS / SM-2)**: умная система карточек (как в Anki), напоминая слова ровно тогда, когда мозг готов их забыть. +1. **Безопасность**: сервис работает на белом IP, защищён авторизацией (сессии, хэширование паролей, защита от брутфорса). +2. **Мгновенный поиск и перевод**: фокус на строке ввода, каскадный перевод (словарная статья + толкование + русский перевод). +3. **Контекстный якорь**: сохранение слова вместе с живым предложением (где встретилось выражение). +4. **Фонетическое закрепление**: нативное аудио-произношение (US/UK) и транскрипция IPA. +5. **Интервальные повторения (SRS / SM-2)**: встроенные карточки для перевода слов в долговременную память. --- ## 📂 Документация проекта -- 📋 [**План функционала и архитектура (PLAN.md)**](file:///home/kopri/notes.qpid.pro/PLAN.md) — детальный роадмап от базового MVP до умных тренажёров памяти. -- 🎓 [**Методология и педагогика (PEDAGOGY.md)**](file:///home/kopri/notes.qpid.pro/PEDAGOGY.md) — руководство по эффективному изучению сетевого английского: почему изолированные слова не работают, сила лексических связок (chunks), алгоритм SM-2. +- 📋 [**План функционала и архитектура (PLAN.md)**](file:///home/kopri/notes.qpid.pro/PLAN.md) — детальный план итераций: от защищённого MVP до умных интервальных тренажёров. +- 🎓 [**Методология и педагогика (PEDAGOGY.md)**](file:///home/kopri/notes.qpid.pro/PEDAGOGY.md) — методические правила эффективного освоения языка: лексические связки (chunks), контекст, фонетика, кривая забывания Эббингауза. --- ## 🛠 Технический стек - **Backend**: Python 3.12 (FastAPI / Uvicorn) -- **Database**: SQLite (WAL mode, надёжность и быстрые снимки) -- **Frontend**: Vanilla HTML5 / Modern CSS / JavaScript (PWA, мгновенная загрузка, поддержка горячих клавиш) +- **Database**: SQLite (WAL mode — надёжность, автономность, бэкап в один файл) +- **Безопасность**: Защищённые сессии (HttpOnly cookies), PBKDF2-HMAC-SHA256, Rate Limiting +- **Frontend**: Vanilla HTML5 / Modern CSS / ES6+ JavaScript (PWA, горячие клавиши, мгновенный отклик) - **Внешние API**: Free Dictionary API (IPA + audio), MyMemory Translation API - **Веб-сервер**: Nginx Reverse Proxy + SSL Let's Encrypt (`notes.qpid.pro`) - **Репозиторий проекта**: [Gitea (ai.qpid.pro/gitea/Antigravity/notes-qpid-pro)](https://ai.qpid.pro/gitea/Antigravity/notes-qpid-pro) --- -## 🚀 Быстрый старт (Разработка) - -```bash -# Клонирование / переход в каталог проекта: -cd /home/kopri/notes.qpid.pro - -# Создание виртуального окружения Python: -python3 -m venv venv -source venv/bin/activate - -# Запуск будет доступен после развертывания Фазы 1 -``` - ---- - -## 🌐 Информация о сервере и инфраструктуре +## 🌐 Информация об окружении - **URL сервиса**: [https://notes.qpid.pro](https://notes.qpid.pro) -- **IP-адрес сервера**: `31.77.203.213` -- **Каталог на сервере**: `/home/kopri/notes.qpid.pro` -- **Git Remote**: `http://127.0.0.1:3000/Antigravity/notes-qpid-pro.git` (зеркалируется в Gitea) +- **IP сервера**: `31.77.203.213` +- **Каталог проекта**: [`/home/kopri/notes.qpid.pro`](file:///home/kopri/notes.qpid.pro) +- **Git Remote**: `http://127.0.0.1:3000/Antigravity/notes-qpid-pro.git`