Приложение (fullstack PWA) для изучения и повторения английских слов на основе техники интервального повторения. Помогает переместить слова из кратковременной памяти в долговременную. Личный пет проект для себя и друзей.
MVP версия в проде доступна по адресу playword.ru
Платформы, такие как Duolingo, Lingualeo и Puzzle English, предлагают всестороннее обучение языку, но не дают возможности индивидуально настраивать изучение слов. В playword основное внимание уделяется изучению слов с возможностью гибкой настройки тренировок, что позволяет пользователям создавать удобный график обучения.
- Создавайте свои или изучайте публичные коллекции слов;
- Гибкая настройка тренажера: слова, интервалы, ошибки;
- Умный быстрый ввод: не нужно переключать раскладку;
- Включение таймера для тренировки;
- Озвучивание слов и голосовой ввод;
- Возможность установить как приложение.
В ToDo много пунктов и скоро здесь появится список. Тем не менее фокус разработки направлен на улучшение базового функционала в первую очередь.
Есть предложения по функционалу или хотите контрибьютить? напишите мне
Этот проект организован как монорепозиторий с использованием Lerna.
- React - библиотека для создания пользовательских интерфейсов.
- TypeScript - язык программирования, добавляющий статическую типизацию к JavaScript.
- Redux Toolkit - библиотека управления состоянием.
- Ant Design - компонентная библиотека для React с готовыми стилями и компонентами.
- PostCSS - модульный препроцессор.
- Vite - быстрый инструмент сборки и разработки для современных приложений JavaScript.
- Node.js - среда выполнения JavaScript на стороне сервера.
- NestJS - фреймворк для создания масштабируемых и эффективных серверных приложений на Node.js.
- TypeScript - язык программирования, добавляющий статическую типизацию к JavaScript.
- PostgreSQL - реляционная база данных.
- Prisma - инструмент для работы с базами данных и ORM для Node.js и TypeScript.
- Passport - библиотека для аутентификации в Node.js приложениях.
- JWT - стандарт JSON-токенов для безопасной передачи информации между двумя сторонами.
- Jest - фреймворк для тестирования JavaScript кода.
- Supertest - библиотека для тестирования HTTP запросов в Node.js приложениях.
Линтинг, тестинг и деплоинг автоматизирован. Настроен github actions workflow на своем сервере с self-hosted раннером. Для контейнеризации используется docker и docker-compose.
- ESLint - инструмент статического анализа кода для поиска и исправления проблем в JavaScript/TypeScript коде.
- Prettier - инструмент для автоматического форматирования кода.
- Перейти на
playword.ru
- В адресной строке браузера (если мы на desktop) появляется иконка установки приложения.
- Нажимаем, ждем 3-5 секунд, иконка с приложением появится на рабочем столе.
- Перейти на
playword.ru
в любом современном браузере (список ниже). - Зайти в настройки/опции текущей страницы (у apple это иконка поделиться) и найти пункт "установить приложение" или "добавить на рабочий стол".
- Нажимаем, ждем 3-5 секунд, иконка с приложением появится на рабочем столе смартфона.
Поддерживаемые браузеры: Google Chrome (с версии 45 и выше) Mozilla Firefox (с версии 58 и выше) Microsoft Edge (с версии 17 и выше) Apple Safari (с версии 11.3 и выше) Opera (с версии 42 и выше)
Для запуска своей версии приложения у себя на ПК:
- Убедитесь что у вас установлен
node
иdocker
- Выполните команду
yarn bootstrap
- это обязательный шаг. - Выполните команду
yarn dev
- Выполните команду
yarn dev --scope=client
чтобы запустить только клиент - Выполните команду
yarn dev --scope=server
чтобы запустить только server
В этом проекте используется monorepo
на основе lerna
Чтобы добавить зависимость для клиента
yarn lerna add {your_dep} --scope client
Для сервера
yarn lerna add {your_dep} --scope server
И для клиента и для сервера
yarn lerna add {your_dep}
Если вы хотите добавить dev зависимость, проделайте то же самое, но с флагом dev
yarn lerna add {your_dep} --dev --scope server
Backend покрыт (core API) e2e тестами (supertest).
(TODO) Для клиента используется react-testing-library
yarn test
yarn lint
yarn format
yarn build