Cubiq
engineering.mdImplementering

Implementering

Inne i Cubiq

Hver vridning av kuben bygger på et eget system: en matematisk modell, en 3D-motor og en løser som tar hensyn til leksjonens mål. Android-appen bruker Kotlin og Jetpack Compose.

Prosjektøyeblikksbilde

linjer kildekode og tekstressurser
740 244
appmoduler
39
fysiske Kotlin-linjer utenfor tester
136 019
språkvarianter
42
testdeklarasjonertest* / androidTest* · @Test
1 624

stack.kt

Moderne Android-stack

Prosjektøyeblikksbilde
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 og Material 3 bestemmer grensesnittets komponenter og temaer. Adaptive håndterer layout etter vindusstørrelse, mens Navigation 3 håndterer navigasjon og gjenoppretting av skjermer. Tilstanden kommer via Coroutines og Flow; Hilt kobler sammen appmodulene.

architecture.kt

Uavhengige lag i appen

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%

Grensesnitt, domenekontrakter og data ligger i separate moduler; Hilt kobler sammen implementasjonene. Compose mottar uforanderlig tilstand og eksplisitte hendelser. Room lagrer historikk og læringsframgang, DataStore innstillinger, og Navigation 3 gjenoppretter seksjonenes stabler.

  • Coroutines / Flow
  • Hilt
  • Room
  • DataStore

android-ux.md

UX etter Androids anbefalinger

Cubiq bruker tilnærminger som Google fremhever i Apps Experience Program: Compose, adaptivt oppsett og edge-to-edge.

Etter vindusstørrelse
På en bred skjerm vises teori og praksis side om side. På en kompakt skjerm tilpasses innhold og navigasjon til den tilgjengelige plassen; vindusstørrelsen bestemmer oppsettet.
Native navigasjon
Edge-to-edge tar hensyn til systemlinjer og tastaturet. Navigation 3 bevarer seksjonenes stabler og støtter Predictive Back med en forhåndsvisning av overgangen tilbake.
Lesbarhet og tilgjengelighet
Lyse og mørke temaer, tekstskalering og semantiske navigasjonsetiketter hjelper ved bruk med TalkBack og tastatur. Ved stor skrift er seksjonenes navn fortsatt tilgjengelige for skjermleseren.
Googles anbefalinger · Apps Experience Program
OpenGL ES 3.0

engine.glsl

Geometri som følger matematikken

moving cubies
26
facelets
54
meshes
8
triangles
2 964

GLSL-shadere beregner PBR-materialer, ruhet og omgivelseslys. Modell og animasjon er samordnet: et steg tilbake utfører det motsatte trekket, og kameraet tar hensyn til plassen mellom panelene.

  • OpenGL ES 3.0
  • GLSL
  • PBR
  • Instancing

Kubetilstand / formelavspilling

Typet notasjon omdannes til trekk og sammenhengende kubetilstander. Rendererens kø animerer lagvridninger og bevarer identiteten til deler og facelets. Formelen spilles som en sekvens av virkelige trekk med avspilling, pause og tempojustering.

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

Et steg fram animerer et nytt trekk; et steg tilbake bruker det motsatte trekket. Hopp til en posisjon gjenoppretter grunnscenen og målsekvensen. Avbrytelse stopper utsendingen av flere trekk; en påbegynt vridning fullføres. EGL-livssyklusen håndterer pause/release; uten GL er læringsløpet fortsatt tilgjengelig uten 3D.

solver.kt

Løsninger for leksjonens mål

  • BFS
  • Beam search
  • F2L

Den egenutviklede løseren bygger en løsning av den aktuelle leksjonens formler og hjelpetrekk. SolverRequest inneholder kubetilstand, måldeler, låste mål, tillatte formler, tilfeller og orientering. Planleggeren følger læringsmålenes rekkefølge og beskytter løste deler.

Fasespesifikk planlegging bruker begrenset BFS, strålesøk og gjenkjenning av F2L-tilfeller. Validering kontrollerer delenes sammensetning, vendinger, vridninger og permutasjonsparitet. Søkepolicyen begrenser dybde og strålebredde. Leksjonsbytte avbryter søket og hindrer et utdatert resultat.

Resultatet er PracticePlan: steg, formelreferanser, en visningstidslinje og en utføringstidslinje. Forklaringen bevarer læringsorienteringen; motoren mottar hele utføringssekvensen. Utfall: plan / solved / invalid input / no constrained path.

  1. Kubens tilstand
  2. Modellvalidering
  3. Læringsplan
  4. 3D-øvelse

content.md

Innholdet går gjennom byggeprosessen

Teorien ligger i 756 Markdown-dokumenter, og øvelsene er definert i 336 lokaliserte scenarioer. Gradle kontrollerer oversettelsesstrukturen og henvisninger til 316 originale illustrasjoner. Grafikken ble klargjort i Blender/Cycles; Android-motoren bruker separat prosedyrebasert geometri.

workflow.md

Dokumentasjon som kode / arbeid med agenter

AGENTS.md
48
README.md
16

Repositoryet er organisert for utvikling med agenter: AGENTS.md-hierarkiet angir ansvar, arkitekturbegrensninger og valideringskontroller; README.md beskriver modulkontrakter, KDoc API og invarianter.

Arkitektur-, design- og lokaliseringskontrakter versjonsstyres sammen med koden. PLAN.md registrerer omfang og overlevering; kontraktsendringer oppdaterer den ansvarlige dokumentasjonen. Kontroller og generering går gjennom Gradle; CI bygger begge butikkvariantene.

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%
Kvalitet og tellemetode

Tester dekker umulige kubetilstander, bevaring av løste lag, læringsplaner, avbrudd av utdaterte forespørsler, gjenoppretting av økter og dataimport. CI bygger begge butikkvariantene; utgivelseskontroller omfatter R8, APK/AAB, kontrollsummer og justering av native-biblioteker for sider på 16 KB.

Kotlin-omfanget teller fysiske linjer, inkludert kommentarer, tomme linjer, buildSrc og benchmarkkode, uten testmapper. Testantallet betyr 1 343 JVM-deklarasjoner og 281 Android-deklarasjoner, ikke kjøringer. Dokumentene inkluderer reservetekst; et scenario betyr ikke at hver leksjon har en øvelse.

baselineprofile · @Test
3

Den samlede teksten teller fysiske linjer i versjonsstyrte UTF-8-filer: kildekode, tester, XML/JSON-ressurser, Markdown-innhold, lokalisering, dokumentasjon, byggeverktøy og webkilder. Kommentarer, tomme linjer og språkkopier er med. Medier, genererte og byggeutdata, tredjepartskode, tjenestekonfigurasjon og midlertidig PLAN.md er utelatt. Dette måler prosjektets tekstinndata, ikke kjørbare LOC.

Utforsk Cubiq