Cubiq
engineering.mdИмплементација

Имплементација

Cubiq изнутра

Иза сваког окрета коцке стоји сопствени систем: математички модел, 3D механизам и решавач који узима у обзир циљеве лекције. Android апликација користи Kotlin и Jetpack Compose.

Пресек пројекта

редова изворног кода и текстуалних ресурса
740 244
модула апликације
39
физичких Kotlin редова ван тестова
136 019
језичке варијанте
42
декларација тестоваtest* / androidTest* · @Test
1 624

stack.kt

Савремени Android стек

Пресек пројекта
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 и Material 3 одређују компоненте и теме интерфејса. Adaptive одговара за распоред према величини прозора, а Navigation 3 за навигацију и обнову екрана. Стање стиже преко Coroutines и Flow; Hilt повезује модуле апликације.

architecture.kt

Независни слојеви апликације

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%

Интерфејс, доменски уговори и подаци су у засебним модулима; Hilt повезује имплементације. Compose добија непроменљиво стање и експлицитне догађаје. Room чува историју и напредак учења, DataStore подешавања, а Navigation 3 обнавља стекове одељака.

  • Coroutines / Flow
  • Hilt
  • Room
  • DataStore

android-ux.md

UX према препорукама за Android

Cubiq примењује приступе које Google истиче у Apps Experience Program: Compose, прилагодљив распоред и edge-to-edge.

Према величини прозора
На широком екрану теорија и пракса стоје једна поред друге. На компактном екрану садржај и навигација се прилагођавају расположивом простору; распоред одређује величина прозора.
Нативна навигација
Edge-to-edge узима у обзир системске траке и тастатуру. Navigation 3 чува стекове одељака и подржава Predictive Back са прегледом повратног прелаза.
Читљивост и приступачност
Светла и тамна тема, скалирање текста и семантичке ознаке у навигацији помажу при коришћењу апликације уз TalkBack и тастатуру. Када је фонт велики, називи одељака остају доступни читачу екрана.
Препоруке Google · Apps Experience Program
OpenGL ES 3.0

engine.glsl

Геометрија која прати математику

moving cubies
26
facelets
54
meshes
8
triangles
2 964

GLSL шејдери израчунавају PBR материјале, храпавост и осветљење окружењем. Модел и анимација су усклађени: корак назад примењује обрнути потез, а камера узима у обзир простор између панела.

  • OpenGL ES 3.0
  • GLSL
  • PBR
  • Instancing

Стање коцке / репродукција формула

Типизирана нотација претвара се у потезе и усклађена стања коцке. Ред renderer механизма анимира окрете слојева, чувајући идентитет делова и facelet елемената. Формула се репродукује као низ стварних потеза, са покретањем, паузом и подешавањем темпа.

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

Корак напред анимира нов потез; корак назад примењује обрнути потез. Прелазак на позицију обнавља основну сцену и циљни низ. Отказивање зауставља издавање следећих потеза; започети окрет се завршава. Животни циклус EGL обрађује pause/release; без GL пут учења остаје доступан без 3D.

solver.kt

Решење према циљевима лекције

  • BFS
  • Beam search
  • F2L

Сопствени решавач гради решење од формула и помоћних потеза текуће лекције. SolverRequest садржи стање коцке, циљне делове, закључане циљеве, дозвољене формуле, случајеве и оријентацију. Планер поштује редослед наставних циљева и штити већ сложене делове.

Планирање по фазама користи ограничени BFS, претрагу снопом и препознавање F2L случајева. Валидација проверава састав делова, превртања, увијања и паритет пермутација. Правила претраге ограничавају дубину и ширину снопа. Промена лекције отказује претрагу и спречава застарели резултат.

Резултат је PracticePlan: кораци, референце на формуле, временска линија приказа и временска линија извршавања. Објашњење чува наставну оријентацију; механизам добија пун низ за извршавање. Исходи: plan / solved / invalid input / no constrained path.

  1. Стање коцке
  2. Провера модела
  3. План учења
  4. 3D вежба

content.md

Садржај пролази кроз изградњу

Теорија је у 756 Markdown докумената, а пракса је описана у 336 локализованих сценарија. Gradle проверава структуру превода и референце на 316 ауторских илустрација. Графика је припремљена у Blender/Cycles; Android механизам користи засебну процедуралну геометрију.

workflow.md

Документација као код / рад са агентима

AGENTS.md
48
README.md
16

Репозиторијум је организован за развој са агентима: хијерархија AGENTS.md одређује одговорности, архитектонска ограничења и валидационе провере; README.md описују уговоре модула, KDoc API и инваријанте.

Уговори архитектуре, дизајна и локализације верзионишу се уз код. PLAN.md бележи обим и предају рада; промене уговора ажурирају надлежну документацију. Провере и генерисање иду кроз Gradle; CI гради обе варијанте за продавнице.

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%
Квалитет и методологија бројања

Тестови обухватају немогућа стања коцке, очување сложених слојева, планове учења, отказивање застарелих захтева, обнову сесија и увоз података. CI гради обе варијанте за продавнице; провере издања укључују R8, APK/AAB, контролне суме и поравнање native библиотека за странице од 16 KB.

Обим Kotlin кода броји физичке редове, укључујући коментаре, празне редове, buildSrc и benchmark код, без тестних директоријума. Број тестова означава 1 343 JVM декларација и 281 Android декларација, а не извршавања. Документи укључују резервни текст; постојање сценарија не значи вежбу у свакој лекцији.

baselineprofile · @Test
3

Укупан текст броји физичке редове у праћеним UTF-8 датотекама: изворном коду, тестовима, XML/JSON ресурсима, Markdown садржају, локализацији, документацији, build алатима и web изворима. Укључује коментаре, празне редове и језичке копије. Искључује медије, генерисане и build излазе, код добављача, конфигурације сервиса и привремени PLAN.md. То је обим текстуалних улаза пројекта, а не извршиви LOC.

Упознај Cubiq