Cubiq
engineering.mdImplementacja

Implementacja

Cubiq od środka

Za każdym obrotem kostki stoi własny system: model matematyczny, silnik 3D i solver uwzględniający cele lekcji. Aplikacja na Androida korzysta z Kotlin i Jetpack Compose.

Stan projektu

wierszy źródeł i zasobów tekstowych
740 244
modułów aplikacji
39
fizycznych wierszy Kotlin poza testami
136 019
warianty językowe
42
deklaracji testówtest* / androidTest* · @Test
1 624

stack.kt

Nowoczesny stos Android

Stan 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 i Material 3 określają komponenty i motywy interfejsu. Adaptive dostosowuje układ do rozmiaru okna, a Navigation 3 obsługuje nawigację i odtwarzanie ekranów. Stan dociera przez Coroutines i Flow; Hilt łączy moduły aplikacji.

architecture.kt

Niezależne warstwy aplikacji

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%

Interfejs, kontrakty domenowe i dane mają osobne moduły; Hilt łączy implementacje. Compose otrzymuje niezmienny stan i jawne zdarzenia. Room przechowuje historię i postępy nauki, DataStore ustawienia, a Navigation 3 odtwarza stosy sekcji.

  • Coroutines / Flow
  • Hilt
  • Room
  • DataStore

android-ux.md

UX według zaleceń Androida

Cubiq wdraża podejścia, które Google wskazuje w Apps Experience Program: Compose, adaptacyjny układ i edge-to-edge.

Według rozmiaru okna
Na szerokim ekranie teoria i praktyka znajdują się obok siebie. Na kompaktowym ekranie treść i nawigacja dopasowują się do dostępnej przestrzeni; rozmiar okna określa układ.
Natywna nawigacja
Edge-to-edge uwzględnia paski systemowe i klawiaturę. Navigation 3 zachowuje stosy sekcji i obsługuje Predictive Back z podglądem przejścia wstecz.
Czytelność i dostępność
Jasny i ciemny motyw, skalowanie tekstu i etykiety semantyczne w nawigacji ułatwiają korzystanie z aplikacji z TalkBack i klawiaturą. Przy dużej czcionce nazwy sekcji pozostają dostępne dla czytnika ekranu.
Zalecenia Google · Apps Experience Program
OpenGL ES 3.0

engine.glsl

Geometria zgodna z matematyką

moving cubies
26
facelets
54
meshes
8
triangles
2 964

Shadery GLSL obliczają materiały PBR, chropowatość i oświetlenie otoczenia. Model i animacja są zsynchronizowane: krok wstecz wykonuje odwrotny ruch, a kamera uwzględnia przestrzeń między panelami.

  • OpenGL ES 3.0
  • GLSL
  • PBR
  • Instancing

Stan kostki / odtwarzanie algorytmów

Typowana notacja zamienia się w ruchy i spójne stany kostki. Kolejka renderera animuje obroty warstw, zachowując tożsamość części i faceletów. Algorytm jest odtwarzany jako sekwencja rzeczywistych ruchów, z odtwarzaniem, pauzą i regulacją tempa.

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

Krok naprzód animuje nowy ruch; krok wstecz stosuje ruch odwrotny. Przejście do pozycji odtwarza scenę bazową i docelową sekwencję. Anulowanie wstrzymuje wydawanie następnych ruchów; rozpoczęty obrót kończy się. Cykl życia EGL obsługuje pause/release; bez GL ścieżka nauki pozostaje dostępna bez 3D.

solver.kt

Rozwiązanie zgodne z celami lekcji

  • BFS
  • Beam search
  • F2L

Własny solver tworzy rozwiązanie z algorytmów i pomocniczych ruchów bieżącej lekcji. SolverRequest obejmuje stan kostki, części docelowe, zablokowane cele, dozwolone algorytmy, przypadki i orientację. Planista zachowuje kolejność celów nauki i chroni już ułożone części.

Planowanie dla poszczególnych faz używa ograniczonego BFS, przeszukiwania wiązkowego i rozpoznawania przypadków F2L. Walidacja sprawdza skład części, odwrócenia, skręcenia i parzystość permutacji. Polityka wyszukiwania ogranicza głębokość i szerokość wiązki. Zmiana lekcji anuluje wyszukiwanie i wyklucza nieaktualny wynik.

Wynikiem jest PracticePlan: kroki, odwołania do algorytmów, oś czasu wyświetlania i oś wykonania. Objaśnienie zachowuje orientację dydaktyczną; silnik otrzymuje pełną sekwencję wykonania. Wyniki: plan / solved / invalid input / no constrained path.

  1. Stan kostki
  2. Walidacja modelu
  3. Plan nauki
  4. Ćwiczenie 3D

content.md

Treść przechodzi przez proces budowania

Teoria znajduje się w 756 dokumentach Markdown, a praktyka jest opisana w 336 zlokalizowanych scenariuszach. Gradle sprawdza strukturę tłumaczeń i odwołania do 316 autorskich ilustracji. Grafikę przygotowano w Blender/Cycles; silnik Androida używa osobnej geometrii proceduralnej.

workflow.md

Dokumentacja jako kod / praca z agentami

AGENTS.md
48
README.md
16

Repozytorium służy rozwojowi z agentami: hierarchia AGENTS.md określa odpowiedzialność, ograniczenia architektury i bramki walidacji; README.md opisują kontrakty modułów, KDoc API i niezmienniki.

Kontrakty architektury, projektu i lokalizacji są wersjonowane razem z kodem. PLAN.md zapisuje zakres i przekazanie pracy; zmiany kontraktów aktualizują ich dokumentację właścicielską. Kontrole i generowanie przechodzą przez Gradle; CI buduje oba warianty sklepowe.

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%
Jakość i metodologia liczenia

Testy obejmują niemożliwe stany kostki, zachowanie ułożonych warstw, plany nauki, anulowanie nieaktualnych żądań, odtwarzanie sesji i import danych. CI buduje oba warianty sklepowe; kontrole wydania obejmują R8, APK/AAB, sumy kontrolne i wyrównanie bibliotek natywnych dla stron 16 KB.

Rozmiar Kotlin to fizyczne wiersze, w tym komentarze, puste wiersze, buildSrc i kod benchmarków, bez katalogów testowych. Liczba testów oznacza 1 343 deklaracji JVM i 281 deklaracji Android, a nie wykonań. Dokumenty zawierają tekst zastępczy; obecność scenariusza nie oznacza ćwiczenia w każdej lekcji.

baselineprofile · @Test
3

Łączna ilość tekstu obejmuje fizyczne wiersze wersjonowanych plików UTF-8: źródeł, testów, zasobów XML/JSON, treści Markdown, lokalizacji, dokumentacji, narzędzi budowania i źródeł strony. Wlicza komentarze, puste wiersze i kopie językowe. Pomija multimedia, pliki generowane i wyniki budowania, kod dostawców, konfiguracje usług oraz tymczasowy PLAN.md. To rozmiar wejść tekstowych projektu, nie wykonywalne LOC.

Poznaj Cubiq