Educational app for maturita exam preparation
  • Swift 48.7%
  • Kotlin 42.6%
  • Python 5.2%
  • Shell 2.6%
  • HTML 0.4%
  • Other 0.5%
Find a file
pepaskopec-blip b822c57875 Add four years of German listening, reading and writing beside the textbook.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-07 19:30:00 +02:00
.github/workflows Stop mirroring builds and main to the deleted Forgejo repository. 2026-09-25 15:57:23 +02:00
android Add four years of German listening, reading and writing beside the textbook. 2026-10-07 19:30:00 +02:00
assets Drop the A+ badge from the app icon. 2026-09-27 13:53:41 +02:00
data Add four years of German listening, reading and writing beside the textbook. 2026-10-07 19:30:00 +02:00
Graduately.xcworkspace Point Xcode projects, schemes, and includes at Graduately. 2026-09-27 13:20:48 +02:00
installers Rename published packages and installers from maturita-* to graduately-*. 2026-09-23 21:30:03 +02:00
ios Add four years of German listening, reading and writing beside the textbook. 2026-10-07 19:30:00 +02:00
macos Stop macOS crashes while opening and stepping through exercises. 2026-10-06 20:51:06 +02:00
scripts Add four years of German listening, reading and writing beside the textbook. 2026-10-07 19:30:00 +02:00
src Add four years of German listening, reading and writing beside the textbook. 2026-10-07 19:30:00 +02:00
.gitattributes Windows build 2/2? 2026-09-10 09:57:12 +02:00
.gitignore Rename published packages and installers from maturita-* to graduately-*. 2026-09-23 21:30:03 +02:00
build-windows.bat Rename published packages and installers from maturita-* to graduately-*. 2026-09-23 21:30:03 +02:00
CMakeLists.txt Rename published packages and installers from maturita-* to graduately-*. 2026-09-23 21:30:03 +02:00
LICENSE Initial commit 2026-09-03 10:53:24 +02:00
Makefile Rename published packages and installers from maturita-* to graduately-*. 2026-09-23 21:30:03 +02:00
README.md Add four years of German listening, reading and writing beside the textbook. 2026-10-07 19:30:00 +02:00
run-windows.bat Rename published packages and installers from maturita-* to graduately-*. 2026-09-23 21:30:03 +02:00

Graduately

Vzdělávací aplikace k přípravě na maturitu (repo Graduately). / An educational app for the Czech maturita exam (repo Graduately).

Česky · English


Česky

Rozhraní je v češtině a angličtině. Otevřené předměty jsou v seznamu níže; ostatní jsou zatím zamčené. Aplikace se po instalaci aktualizuje sama.

Úvod Předměty Německá cesta
Úvod Předměty Německá cesta

Instalace

Žádné releasy ani čísla verzí nejsou. CI po každém pushi na main uloží balíčky do větve builds. Instalátor samotnou aplikaci neobsahuje — při spuštění si dohledá aktuální commit větve builds a stáhne ten soubor, ne kešovanou kopii podle názvu větve.

Stáhni zip, rozbal ho a otevři instalátor. Nic víc (žádný Terminál):

Platforma Soubor Jak spustit
macOS (Apple Silicon) graduately-installer-macos.zip Rozbalit, pravý klik na Nainstalovat Graduately → Otevřít
Windows (x64) graduately-installer-windows.zip Rozbalit a dvojklik; u SmartScreenu Další informace → Přesto spustit
Linux (x86_64) graduately-installer-linux.zip Rozbalit a dvojklik na instalátor
Android (8+) graduately-installer-android.zip Rozbalit, otevřít Stahnout Graduately.html a nainstalovat APK (neznámé zdroje)
iOS (26+) graduately-installer-ios.zip Rozbalit, otevřít Jak nainstalovat Graduately.html. Nejjednodušší: Xcode na Macu, nebo IPA přes AltStore

Kam se to nainstaluje: /Applications nebo ~/Applications (macOS), %LOCALAPPDATA%\Programs\Graduately (Windows), ~/Applications (Linux).

Buildy zatím nejsou notarizované (chybí Apple Developer ID), proto je při prvním spuštění potřeba výše uvedený krok navíc. Aplikace se pak udržuje sama: po startu porovná svůj commit se souborem VERSION ve větvi builds a aktualizaci nabídne v pruhu nahoře. Ruční kontrola je v Nastavení → Aktualizace.

Bez instalátoru

Na větvi builds jsou i hotové balíčky. Odkazy podle názvu větve umí CDN kešovat, proto je spolehlivější instalátor výše, nebo stažení přímo z té stránky větve:

Postup a nastavení se ukládají vedle .app / složky / AppImage do progress/. Na Androidu, iOS a macOS do úložiště aplikace (stejné statistiky, témata a jazyk).

Intel Mac, jiná architektura nebo úpravy kódu → sestavení ze zdroje.

Co v aplikaci je

  • Deutsch — učebnice (Neue Freunde, Aus aller Welt, Bei uns zu Hause) a 4 ročníky, 24 lekcí od A1 k B1: poslech, čtení, psaní, doplňování a kvízy
  • Správa počítačových sítí — 1. ročník, 27 lekcí (VLSM + teorie a kvízy); ročníky 2–4 jsou zamčené
  • Technické vybavení — 1. ročník, 29 lekcí (architektura, data, skříň a deska, karty, disky, vstupní zařízení); ročníky 2–4 jsou zamčené
  • Český jazyk a literatura — literatura (4 ročníky, 32 lekcí podle osnov středních škol), mluvnice (20 cvičení) a maturitní četba (82 knih: zápisky, kvíz, sestavení děje)
  • Matematika — opakování základní školy a 4 ročníky, 40 lekcí; příklady se píšou a kontrolují, u geometrie jde i rýsovat na mřížku
  • Fyzika — 4 ročníky, 32 lekcí podle osnov středních škol (mechanika, teplo a vlny, elektřina a magnetismus, optika až astrofyzika)
  • Základy přírodopisných věd — chemie a biologie, v každé 8 lekcí (od atomu a buňky po biochemii a ekologii) s výkladem a kvízem
  • Občanská nauka — 1. ročník, 17 lekcí (člověk v lidském společenství); 2. ročník, 16 lekcí (člověk jako občan); 3. ročník, 16 lekcí (člověk a právo); 4. ročník, 16 lekcí (hospodářství, svět a filozofie)
  • Angličtina — 4 ročníky, 32 lekcí podle osnov gymnázia (A2 až maturita): poslech, čtení, psaní, doplňování, kvízy a ročníkové testy
  • statistiky, hledání (lupa nebo Cmd/Ctrl+K), 10 témat, tmavý/světlý režim, čeština/angličtina
  • ukončení: Cmd/Super+Q nebo Alt+F4

Použití

  1. Pokračuj otevře mapu předmětů.
  2. Otevřený předmět (vlajka, Wi‑Fi, čip, česká vlajka, váhy, funkce, atom, baňka) vede na učební cestu.
  3. Uzly cvičení / lekcí otevřou obsah; zamčené nic nedělají.
  4. Hledat (lupa), Statistiky (graf) a Nastavení (ozubené kolo) jsou vpravo nahoře.

Sestavení ze zdroje

macOS je nativní SwiftUI aplikace (Xcode 26, macOS 26+). Linux a Windows zůstávají GTK 4.

# macOS
# Xcode 26 z App Storu; žádné GTK

# Debian / Ubuntu
sudo apt install build-essential pkg-config libgtk-4-dev

# Fedora
sudo dnf install gcc make pkgconf-pkg-config gtk4-devel

# Arch
sudo pacman -S base-devel pkgconf gtk4
git clone https://github.com/pepaskopec-blip/Graduately.git
cd Graduately

Na Macu:

open Graduately.xcworkspace        # scheme Graduately z macos/Graduately.xcodeproj
# nebo: make bundle                # zip v dist/graduately-macos-arm64.zip

Na Linuxu a Windows:

make
make run          # nebo ./graduately
make bundle       # AppImage / Windows složka s DLL
make smoke        # instalátory, content packs, dostupnost builds

Volitelně CMake (GTK): cmake -S . -B build && cmake --build build.

Na macOS make bundle automaticky vloží aktuální Git commit, aby fungovala kontrola aktualizací. Při balení ze zdrojů bez .git zadejte COMMIT=<zdrojový-commit> make bundle.

Aby stažená aplikace na macOS šla otevřít bez potvrzení v Nastavení, CI potřebuje Apple Developer Program a GitHub Secrets:

  • MACOS_CERTIFICATE — Developer ID Application .p12 v base64
  • MACOS_CERTIFICATE_PASSWORD
  • APPLE_API_KEY, APPLE_API_KEY_ID, APPLE_API_ISSUER — notarizace (nebo APPLE_ID + APPLE_APP_SPECIFIC_PASSWORD + APPLE_TEAM_ID)

Bez toho zůstane jen ad-hoc podpis a Gatekeeper stažený build zablokuje.

Windows (MSYS2 UCRT64, bez Visual Studia)

winget install --id MSYS2.MSYS2 -e --source winget
C:\msys64\ucrt64.exe pacman -S --noconfirm mingw-w64-ucrt-x86_64-gcc mingw-w64-ucrt-x86_64-gtk4 mingw-w64-ucrt-x86_64-pkg-config make

V terminálu MSYS2 UCRT64:

cd /c/Users/<jméno>/Graduately  # C:\Users\<jméno>\Graduately v MSYS2
make
./graduately.exe
make bundle                     # dist/graduately.exe jde spustit i z Průzkumníka

Struktura

src/                 C zdroje (GTK přehrávač pro Linux a Windows)
android/             Jetpack Compose přehrávač (stejný obsah)
ios/                 SwiftUI přehrávač (stejný obsah)
macos/               nativní SwiftUI aplikace pro Mac (stejný obsah)
data/                style.css, changelog.txt, share/, cetba/*.json
assets/              zdrojová ikona a screenshoty
installers/          instalátory, které stáhnou aktuální build
scripts/             balení AppImage, .app, IPA, extract a smoke test
.github/workflows/   CI: push na main → větev builds
progress/            vzniká za běhu (cvičení, nastavení)

Android ze zdroje (JDK 17 + Android SDK):

python3 scripts/extract-android-content.py
cd android
./gradlew :app:assembleRelease
# APK: android/app/build/outputs/apk/release/app-release.apk

nebo z kořene make android.

APK se podepisuje klíčem android/keystore/sideload.jks (není tajný – jde o sideload, ne o Google Play), aby aktualizace z aplikace šla nainstalovat přes předchozí build. Vlastní klíč lze dodat přes MATURITA_KEYSTORE a MATURITA_KEYSTORE_PASSWORD. Buildy android-5 a starší mají jiný podpis – jednou odinstalujte a nainstalujte znovu.

iOS ze zdroje (Xcode 26, iOS 26+ / Liquid Glass):

open Graduately.xcworkspace        # v kořeni repozitáře
# Simulátor: vyber iPhone a Run, nic dalšího není potřeba (obsah se
# vytáhne z C zdrojů při buildu). Na iPhone: v Signing vyber svůj Team.
# nebo: make ios   # unsigned IPA v dist-ios/graduately-ios.ipa

Workspace odkazuje na ios/Graduately.xcodeproj a macos/Graduately.xcodeproj. Projekty nepřesouvejte – build čte ../src a ../scripts.

Licence: GPL-3.0.


English

The UI is Czech and English. Open subjects are listed below; the rest are still locked. After install the app updates itself.

Welcome Subjects German path
Welcome Subjects German path

Install

There are no releases and no version numbers. CI writes packages to the builds branch whenever main changes. The installer carries no app of its own — it fetches the current builds commit when you run it, not a CDN-cached copy of the branch-named file.

Download the zip, unzip it, and open the installer. No Terminal:

Platform File How to run
macOS (Apple Silicon) graduately-installer-macos.zip Unzip, right-click Nainstalovat Graduately → Open
Windows (x64) graduately-installer-windows.zip Unzip and double-click; if SmartScreen appears, More info → Run anyway
Linux (x86_64) graduately-installer-linux.zip Unzip and double-click the installer
Android (8+) graduately-installer-android.zip Unzip, open Stahnout Graduately.html, then install the APK (unknown sources)
iOS (26+) graduately-installer-ios.zip Unzip, open Jak nainstalovat Graduately.html. Easiest: Xcode on a Mac, or the IPA via AltStore

Install locations: /Applications or ~/Applications (macOS), %LOCALAPPDATA%\Programs\Graduately (Windows), ~/Applications (Linux).

The builds are not notarized yet (no Apple Developer ID), so the first launch still needs the extra step above. After that the app stays current: it compares its commit to VERSION on builds and offers an update in a banner. Manual check: Settings → Updates.

Packages without the installer

The same files live on builds. Branch-named raw URLs can be cached by the CDN, so prefer the installer above, or download from that branch page:

Progress and settings live in progress/ next to the .app / folder / AppImage. On Android, iOS and macOS they stay in app storage (same stats, themes, language).

Intel Mac, another architecture, or hacking on the code → build from source.

What’s inside

  • Deutsch — the textbook (Neue Freunde, Aus aller Welt, Bei uns zu Hause) plus 4 years, 24 lessons from A1 to B1: listening, reading, writing, gap-fill and quizzes
  • Computer networks — year 1, 27 lessons (VLSM + theory/quizzes); years 2–4 are locked
  • Computer hardware — year 1, 29 lessons (architecture, data, case and board, cards, drives, input devices); years 2–4 are locked
  • Czech language — literature (4 years, 32 lessons from the secondary-school syllabus), grammar (20 exercises) and required reading (82 books: notes, quiz, plot ordering)
  • Mathematics — elementary-school review and 4 years, 40 lessons; examples are typed and checked, and some geometry is drawn on a grid
  • Physics — 4 years, 32 lessons from the secondary-school syllabus (mechanics, heat and waves, electricity and magnetism, optics through astrophysics)
  • Natural sciences — chemistry and biology, eight lessons each (from the atom and the cell to biochemistry and ecology), with an overview and a quiz
  • Civics — year 1, 17 lessons (the individual and society); year 2, 16 lessons (the citizen in a democratic state); year 3, 16 lessons (the individual and the law); year 4, 16 lessons (the economy, the world and philosophy)
  • English — 4 years, 32 lessons from the gymnasium syllabus (A2 through the maturita): listening, reading, writing, gap-fill, quizzes and year tests
  • statistics, search (magnifier or Cmd/Ctrl+K), 10 palettes, dark/light mode, Czech/English
  • quit with Cmd/Super+Q or Alt+F4

Usage

  1. Continue opens the subject map.
  2. An open subject (flag, Wi‑Fi, chip, Czech flag, scales, function, atom, flask) opens its path.
  3. Exercise / lesson nodes open content; locked nodes do nothing.
  4. Search (magnifier), Statistics (chart) and Settings (gear) sit in the top-right.

Build from source

macOS is a native SwiftUI app (Xcode 26, macOS 26+). Linux and Windows stay on GTK 4.

# macOS
# Xcode 26 from the App Store; no GTK

# Debian / Ubuntu
sudo apt install build-essential pkg-config libgtk-4-dev

# Fedora
sudo dnf install gcc make pkgconf-pkg-config gtk4-devel

# Arch
sudo pacman -S base-devel pkgconf gtk4
git clone https://github.com/pepaskopec-blip/Graduately.git
cd Graduately

On a Mac:

open Graduately.xcworkspace        # scheme Graduately from macos/Graduately.xcodeproj
# or: make bundle                  # zip at dist/graduately-macos-arm64.zip

On Linux and Windows:

make
make run          # or ./graduately
make bundle       # AppImage / Windows DLL folder
make smoke        # installers, content packs, builds availability

Optional CMake (GTK): cmake -S . -B build && cmake --build build.

On macOS, make bundle embeds the current Git commit so the installed app can check for updates. When packaging a source export without .git, use COMMIT=<source-commit> make bundle.

Skipping Gatekeeper on a downloaded macOS build needs an Apple Developer Program membership and these GitHub Secrets:

  • MACOS_CERTIFICATE — Developer ID Application .p12, base64-encoded
  • MACOS_CERTIFICATE_PASSWORD
  • APPLE_API_KEY, APPLE_API_KEY_ID, APPLE_API_ISSUER for notarization (or APPLE_ID + APPLE_APP_SPECIFIC_PASSWORD + APPLE_TEAM_ID)

Without them the bundle stays ad-hoc signed and Gatekeeper still blocks it.

Windows (MSYS2 UCRT64, no Visual Studio)

winget install --id MSYS2.MSYS2 -e --source winget
C:\msys64\ucrt64.exe pacman -S --noconfirm mingw-w64-ucrt-x86_64-gcc mingw-w64-ucrt-x86_64-gtk4 mingw-w64-ucrt-x86_64-pkg-config make

In an MSYS2 UCRT64 terminal:

cd /c/Users/<name>/Graduately   # C:\Users\<name>\Graduately in MSYS2
make
./graduately.exe
make bundle                     # dist/graduately.exe can be double-clicked

Layout

src/                 C sources (GTK player for Linux and Windows)
android/             Jetpack Compose player (same content)
ios/                 SwiftUI player (same content)
macos/               native SwiftUI Mac app (same content)
data/                style.css, changelog.txt, share/, cetba/*.json
assets/              source icon and screenshots
installers/          fetch-the-latest installers
scripts/             AppImage / .app / IPA bundlers, extract, smoke test
.github/workflows/   CI: push to main → builds branch
progress/            created at runtime (exercises, settings)

Android from source (JDK 17 + Android SDK):

python3 scripts/extract-android-content.py
cd android
./gradlew :app:assembleRelease
# APK: android/app/build/outputs/apk/release/app-release.apk

or make android from the repo root.

The APK is signed with android/keystore/sideload.jks (not a secret – this is a sideloaded app, not a Play release) so in-app updates install over the previous build. Supply your own key through MATURITA_KEYSTORE and MATURITA_KEYSTORE_PASSWORD. Builds android-5 and older carry a different signature – uninstall once and install again.

iOS from source (Xcode 26, iOS 26+ / Liquid Glass):

open Graduately.xcworkspace        # at the repo root
# Simulator: pick an iPhone and Run, nothing else needed (content is
# extracted from the C sources during the build). Device: pick your Team.
# or: make ios   # unsigned IPA at dist-ios/graduately-ios.ipa

The workspace points at ios/Graduately.xcodeproj and macos/Graduately.xcodeproj. Do not move the projects – the build reads ../src and ../scripts.

License: GPL-3.0.