Cubiq
engineering.mdImplementácia

Implementácia

Cubiq zvnútra

Za každým otočením kocky stojí vlastný systém: matematický model, 3D engine a riešič zohľadňujúci ciele lekcie. Aplikácia pre Android používa Kotlin a Jetpack Compose.

Snímka projektu

riadkov zdrojov a textových prostriedkov
740 244
modulov aplikácie
39
fyzických riadkov Kotlin mimo testov
136 019
jazykové varianty
42
deklarácií testovtest* / androidTest* · @Test
1 624

stack.kt

Moderný Android stack

Snímka projektu
Kotlin2.4.21
Compose BOM2026.09.00
Material 31.5.0-beta01
Adaptive1.3.0
Navigation 31.2.0
AGP9.4.1
KSP2.3.12
Gradle9.7.0
  • Kotlin
  • Jetpack Compose
  • Material 3
  • Adaptive
  • Navigation 3

Jetpack Compose a Material 3 určujú komponenty a témy rozhrania. Adaptive rieši rozloženie podľa veľkosti okna a Navigation 3 navigáciu a obnovu obrazoviek. Stav prichádza cez Coroutines a Flow; Hilt prepája moduly aplikácie.

architecture.kt

Nezávislé vrstvy aplikácie

app01Hilt / DI
feature07Compose / ViewModel
  • onboarding
  • learning
  • lesson
  • practice
  • progress
  • settings
  • events
domain07contracts / use cases
  • learning
  • lesson
  • practice
  • portability
  • progress
  • settings
  • events
data09repositories / storage
  • content
  • storage
  • learning
  • lesson
  • practice
  • portability
  • progress
  • settings
  • events
core14UI kit / cube / solver
  • common
  • model
  • designsystem
  • uikit
  • navigation
  • analytics
  • crashlytics
  • ads
  • billing
  • push
  • hardware
  • cube
  • scrambleimage
  • solver
baselineprofile01startup / frame timing

feature → domain ← data

modulesΣ 39
  • app1
  • baselineprofile1
  • core14
  • data9
  • domain7
  • feature7
Kotlin · physical LOCΣ 136 019
feature
82 86360.9%
core
21 16715.6%
data
14 34110.5%
app
9 5147.0%
domain
6 7595.0%
buildSrc
9610.7%
baselineprofile
4140.3%

Rozhranie, doménové kontrakty a údaje sú v oddelených moduloch; Hilt prepája implementácie. Compose prijíma nemenný stav a explicitné udalosti. Room ukladá históriu a pokrok v učení, DataStore nastavenia a Navigation 3 obnovuje zásobníky sekcií.

  • Coroutines / Flow
  • Hilt
  • Room
  • DataStore

android-ux.md

UX podľa odporúčaní Androidu

Cubiq používa prístupy, ktoré Google zdôrazňuje v Apps Experience Program: Compose, adaptívne rozloženie a edge-to-edge.

Podľa veľkosti okna
Na širokej obrazovke sú teória a prax vedľa seba. Na kompaktnej obrazovke sa obsah a navigácia prispôsobujú dostupnému priestoru; rozloženie určuje veľkosť okna.
Natívna navigácia
Edge-to-edge zohľadňuje systémové lišty a klávesnicu. Navigation 3 zachováva zásobníky sekcií a podporuje Predictive Back s náhľadom prechodu späť.
Čitateľnosť a prístupnosť
Svetlá a tmavá téma, škálovanie textu a sémantické popisy v navigácii pomáhajú používať aplikáciu s TalkBack a klávesnicou. Pri veľkom písme zostávajú názvy sekcií dostupné čítačke obrazovky.
Odporúčania Google · Apps Experience Program
OpenGL ES 3.0

engine.glsl

Geometria, ktorá vychádza z matematiky

moving cubies
26
facelets
54
meshes
8
triangles
2 964

GLSL shadery počítajú materiály PBR, drsnosť a osvetlenie prostredím. Model a animácia sú zosúladené: krok späť vykoná inverzný ťah a kamera zohľadňuje voľné miesto medzi panelmi.

  • OpenGL ES 3.0
  • GLSL
  • PBR
  • Instancing

Stav kocky / prehrávanie algoritmov

Typovaná notácia sa prevádza na ťahy a konzistentné stavy kocky. Front rendereru animuje otáčanie vrstiev a zachováva identity dielikov a faceletov. Algoritmus sa prehráva ako postupnosť skutočných ťahov s prehrávaním, pauzou a nastavením tempa.

  1. Notation
  2. Cube state
  3. Move queue
  4. OpenGL ES 3.0

Krok vpred animuje nový ťah; krok späť použije inverzný ťah. Presun na pozíciu obnoví základnú scénu a cieľovú postupnosť. Zrušenie zastaví vydávanie ďalších ťahov; už začaté otočenie sa dokončí. Životný cyklus EGL spracúva pause/release; bez GL zostáva výučba dostupná bez 3D.

solver.kt

Riešenie podľa cieľov lekcie

  • BFS
  • Beam search
  • F2L

Vlastný riešič skladá riešenie z algoritmov a pomocných ťahov aktuálnej lekcie. SolverRequest obsahuje stav kocky, cieľové dieliky, uzamknuté ciele, povolené algoritmy, prípady a orientáciu. Plánovač dodržiava poradie výučbových cieľov a chráni už zložené dieliky.

Plánovanie podľa fázy používa obmedzené BFS, lúčové prehľadávanie a rozpoznávanie prípadov F2L. Validácia kontroluje zloženie dielikov, preklopenia, pootočenia a paritu permutácií. Politika hľadania obmedzuje hĺbku a šírku lúča. Zmena lekcie zruší hľadanie a zabráni zastaranému výsledku.

Výsledkom je PracticePlan: kroky, odkazy na algoritmy, časová os zobrazenia a časová os vykonávania. Vysvetlenie zachováva výučbovú orientáciu; engine dostáva úplnú postupnosť vykonávania. Výsledky: plan / solved / invalid input / no constrained path.

  1. Stav kocky
  2. Overenie modelu
  3. Výučbový plán
  4. 3D cvičenie

content.md

Obsah prechádza zostavením

Teória je uložená v 756 dokumentoch Markdown a prax je opísaná v 336 lokalizovaných scenároch. Gradle overuje štruktúru prekladov a odkazy na 316 autorských ilustrácií. Grafika bola pripravená v Blender/Cycles; engine pre Android používa samostatnú procedurálnu geometriu.

workflow.md

Dokumentácia ako kód / práca s agentmi

AGENTS.md
48
README.md
16

Repozitár je usporiadaný pre vývoj s agentmi: hierarchia AGENTS.md určuje zodpovednosti, architektonické obmedzenia a validačné brány; README.md opisujú kontrakty modulov, KDoc API a invarianty.

Kontrakty architektúry, dizajnu a lokalizácie sa verzujú spolu s kódom. PLAN.md zaznamenáva rozsah a odovzdanie práce; zmeny kontraktov aktualizujú ich príslušnú dokumentáciu. Kontroly a generovanie prebiehajú cez Gradle; CI zostavuje obe varianty pre obchody.

physical text linesΣ 740 244
Resources / localization
399 56854.0%
Kotlin · non-test
136 01918.4%
Lesson Markdown
132 64217.9%
Kotlin · JVM tests
46 6456.3%
Kotlin · Android tests
13 6361.8%
Build tooling / web
8 9851.2%
Documentation
2 7490.4%
Kvalita a metodika počítania

Testy pokrývajú nemožné stavy kocky, zachovanie zložených vrstiev, výučbové plány, rušenie zastaraných požiadaviek, obnovu relácií a import údajov. CI zostavuje obe varianty pre obchody; kontroly vydania zahŕňajú R8, APK/AAB, kontrolné súčty a zarovnanie natívnych knižníc pre stránky 16 KB.

Objem Kotlin sa počíta vo fyzických riadkoch vrátane komentárov, prázdnych riadkov, buildSrc a benchmarkového kódu, bez testovacích adresárov. Počet testov znamená 1 343 deklarácií JVM a 281 deklarácií Android, nie spustení. Dokumenty zahŕňajú náhradný text; prítomnosť scenára neznamená cvičenie v každej lekcii.

baselineprofile · @Test
3

Celkový text počíta fyzické riadky verzovaných súborov UTF-8: zdrojov, testov, prostriedkov XML/JSON, obsahu Markdown, lokalizácie, dokumentácie, nástrojov zostavenia a webových zdrojov. Zahŕňa komentáre, prázdne riadky a jazykové kópie. Vynecháva médiá, generované a zostavené výstupy, kód dodávateľov, konfiguráciu služieb a dočasný PLAN.md. Ide o objem textových vstupov projektu, nie spustiteľné LOC.

Spoznaj Cubiq