Cílem Movapp.cz je usnadnit dorozumění mezi Čechy a Ukrajinci. Mова [mova] znamená ukrajinsky jazyk. Movapp je aplikace pro trénink jazyků. Projekt vzniká v komunitě expertních dobrovolníků Česko.Digital. Kontakt: pryvit@movapp.cz.
Zdrojový kód je pod MIT licencí. Texty, obrázky a audiosoubory jsou pod licencí CC BY-NC 4.0.
Chcete-li nám pomáhat na dalším rozvoji projektu, vyplňte formulář na cesko.digital/join a přidejte se do Slacku. Najdete nás v kanálu ua-movapp (komunikujeme česky, slovensky, anglicky a trochu také ukrajinsky).
Мета Movapp.cz – полегшити спілкування між чехами та українцями. Movapp — це програма для мовного навчання. Проект створений у спільноті експертів-волонтерів Česko.Digital. Контакти: pryvit@movapp.cz.
Вихідний код знаходиться під ліцензією MIT. Тексти, зображення та аудіофайли ліцензовані відповідно до CC BY-NC 4.0.
Якщо ви хочете стати членом команди волонтерів і допомогти нам розвивати проєкт, заповніть форму на cesko.digital/join та приєднайтеся до нашого Slack. Ви можете знайти нас на каналі ua-movapp (спілкуємося чеською, словацькою, англійською а також трохи українською).
The goal of Movapp.cz is to make communication between Czechs and Ukrainians easier. Mова [mohva] means language in Ukrainian. Movapp is an application for language training. The project is developed by Česko.Digital - the community of volunteering experts. Contact: pryvit@movapp.cz.
Source code is available under the MIT license. Text, pictures and audiofiles are available under the CC BY-NC 4.0 license.
If you want to help us, fill in the form at cesko.digital/join and join Slack. You can find us in the ua-movapp channel (we speak Czech, Slovak, English, and a little bit Ukrainian).
The web is written in Next.js and hosted on Vercel. To run it locally:
git clone https://github.com/cesko-digital/movapp.git
cd movapp
npm install
npm run dev
Run tests:
npm test
If you have questions, write to us on Slack or create an issue
- TypeScript everywhere (as much as posisble) Avoid the use of
any
,as
typecasting,ts-ignore
. - Tailwind everywhere (as much as possible). We are trying to keep the styling approach consistent so stick to Tailwind unless you have a specific reason to use something else.
- Use
eslint
andprettier
in your IDE. - Keep it simple. A lot of our contributors are junior/mid-level developers so we favor code-readability and easy onboarding to optimal performance and code cleverness. Dumb is readable, readable is smart.
- Don't reinvent the wheel. For more complex, standard components (modal, dropdown, etc) we use 3rd party headless libraries like HeadlessUI or RadixUI.
- Intro to Next.js
- Intro to TypeScript
- Intro to Tailwind
- Localization: We use
next-i18next
to switch localization between the main site language (i.e., Czech) and Ukrainian.const { t } = useTranslation(); ... <p>{t('homepage.box_child_title')}</p>
- Language variants: We use the
NEXT_PUBLIC_COUNTRY_VARIANT
environment variable to decide whether to build the Czech, Slovak or Polish variant of the site. Seelocales.ts
for more details. When making changes, check that your code works in all language variants. The merge request pipeline automatically deploys the preview of each language variant. - Data management:
- We use Airtable for managing the site content (phrases, categories).
- The data is pulled into the movapp-data repository, enriched with sounds generated using Azure text-to-speech API and hosted on a CDN at data.movapp.eu
- This website, as well as mobile apps pull the data from the CDN.
- Transliteration tables between Czech and Ukrainian were kindly provided by: vsistek/ua-translit-cz/ under an MIT license.