Wróć do projektów
Mobile Development · Android
2025 Akademia Tarnowska

UAlingo

Aplikacja mobilna Android do nauki języka ukraińskiego — interaktywne quizy, gry słowne, memy edukacyjne i system autoryzacji Firebase. Duolingo-like experience w natywnym Javie.

Java
Język
Android SDK
Platforma
Firebase
Backend
18 ekranów
Activities

Nauka języka
przez zabawę

UAlingo to natywna aplikacja Android do nauki języka ukraińskiego, zbudowana w Javie z wykorzystaniem Firebase. Projekt był realizowany na Akademii Tarnowskiej jako kompleksowa aplikacja mobilna.

Inspirowana Duolingo — łączy quizy z timerem, gry słowne, memy z autentycznym językiem ukraińskim i system postępu, który motywuje do codziennej nauki.

📚
10 tematów, 120 pytań
Od pozdrowień po hotele — każdy temat ma 12 pytań quizowych z 4 opcjami
⏱️
Quiz z timerem 60s
CountDownTimer na każde pytanie, animacje kolorów — zielony/czerwony
🔤
Word Search
Interaktywna siatka 7×6 z literami cyrylicy — szukaj ukraińskich słów
😂
Memy edukacyjne
Nauka przez autentyczne ukraińskie memy i klipy — naturalny kontekst językowy
🌍
Dwujęzyczność
Dynamiczne przełączanie między wersją ukraińską i angielską aplikacji
🔐
Firebase Auth
Logowanie email/hasło oraz Google OAuth 2.0, reset hasła, persystencja sesji

Stack technologiczny

Java 11
100% kodu aplikacji — Activity-based architecture, MVC-like pattern.
🤖
Android SDK 35
Target API 35 (Android 15), minSdk 23 (Android 6.0) — szeroka kompatybilność.
🔥
Firebase Auth
Email/hasło + Google OAuth 2.0. Persystencja sesji i reset hasła.
📊
Firebase Analytics
Analityka zdarzeń w aplikacji — śledzenie aktywności użytkowników.
🎨
Material Design
Material 1.12.0 — komponenty UI, ConstraintLayout, SwipeRefreshLayout.
🔧
Gradle 8.0+
System budowania, ProGuard obfuskacja dla release build, vcpkg zależności.

Jak to działa

01
Logowanie Firebase

Obsługa email/hasło oraz Google OAuth 2.0 przez Firebase Authentication. Po zalogowaniu sesja jest persystowana — użytkownik nie musi logować się przy każdym uruchomieniu.

mAuth.signInWithEmailAndPassword(
  email, password)
  .addOnCompleteListener(task -> {
    if (task.isSuccessful())
      startActivity(mainIntent);
  });
02
Quiz — timer 60 sekund

CountDownTimer odlicza 60 sekund na każde pytanie. Po upływie czasu odpowiedzi są blokowane. Animacja kolorów ValueAnimator wizualizuje poprawną/błędną odpowiedź.

new CountDownTimer(60000, 1000) {
  public void onTick(long ms) {
    timerText.setText(
      "" + ms / 1000);
  }
  public void onFinish() {
    disableAnswers();
  }
}.start();
03
Animacja odpowiedzi

ValueAnimator płynnie zmienia kolor tekstu odpowiedzi z białego na zielony (poprawna) lub czerwony (błędna) w czasie 500ms.

ValueAnimator anim =
  ValueAnimator.ofObject(
    new ArgbEvaluator(),
    fromColor, toColor);
anim.setDuration(500);
anim.start();
04
Przełączanie języków

Oddzielne Activities dla wersji ukraińskiej i angielskiej. Przycisk flagi w menu głównym startuje nową Activity z odpowiednim językiem.

flagBtn.setOnClickListener(v -> {
  Intent i = new Intent(this,
    EngActivity.class);
  startActivity(i);
  finish();
});
05
Word Search — siatka 7×6

Interaktywna plansza z literami cyrylicy. Użytkownik zaznacza litery po kolei — po znalezieniu słowa licznik się zwiększa i słowo zostaje podświetlone.

// Znaleziono słów: 0
// GridView 7 kolumn × 6 wierszy
// Litery: cyrylica ukraińska
// Walidacja poziom/pion/ukos
06
18 Activities — nawigacja

Dolny pasek nawigacyjny z 3 ikonami (Dom, Gry, Profil) dostępny na każdym ekranie. Intent-based routing między wszystkimi 18 Activities.

// Bottom nav → 3 ikony
// Dom    → UkrActivity
// Gry    → WordSearchActivity
// Profil → SettingsActivity

18 Activities

🔐LoginEmailActivityLogowanie i rejestracja
🏠UkrActivityMenu główne — ukraiński
🇬🇧EngActivityMenu główne — angielski
📖TopicActivityUkrSzczegóły tematu — UKR
📖TopicActivityEngSzczegóły tematu — ENG
QuizActivityQuizy — ukraiński
QuizActivityEngQuizy — angielski
🏆QuizResultActivityWyniki quizu
🔤WordSearchActivitySzukaj słów — UKR
🔤WordSearchEngSzukaj słów — ENG
😂MemeActivityMemy — ukraiński
😂MemeActivityEngMemy — angielski
✏️FillInTheBlanksActivityUzupełnianie luk
🎯SelfPracticeActivitySamodzielne ćwiczenia
⚙️SettingsActivityUstawienia aplikacji
🔑ResetPasswordActivityResetowanie hasła
📊ResultActivityWyświetlanie wyników
🚪MainActivityEkran przejściowy

Jak uruchomić

Wymagania
Android Studio Flamingo+ JDK 11+ Gradle 8.0+ Android 6.0+ (API 23)
1
Klonuj repozytorium
git clone https://github.com/IlonaHrabovenko/Android.git
cd Android
2
Skonfiguruj Firebase
# Pobierz google-services.json z konsoli Firebase
# Umieść plik w katalogu: app/
# Dodaj w strings.xml:
<string name="default_web_client_id">YOUR_ID</string>
3
Zbuduj projekt
./gradlew assembleDebug
4
Zainstaluj na urządzeniu
./gradlew installDebug
# lub otwórz projekt w Android Studio i kliknij Run ▶

Autorzy projektu

AT
Andrii Torianyk
github.com/Andrii418
TF
Tamara Fyl
github.com/tamarafyl
IH
Ilona Hrabovenko
github.com/IlonaHrabovenko
Wszystkie projekty