A small offline syllabus tracker. Paste in your subjects, tick off topics as you study them, and see what's left. No account, no backend, no internet.
Runs two ways from the same source: a mobile web app (PWA) and an Android APK.
- Paste a syllabus straight from a PDF — it works out modules, topics and hours
- Tick topics off by hand; nothing is ever marked complete automatically
- Progress percentages for each module, each subject, and overall
- Search across every subject and topic
- Add and delete subjects in the app
- Progress is saved on the device and survives restarts
- Works fully offline
- Dark themed
Download StudyTracker.apk from this repo and open it on your phone.
Android will warn you about installing from an unknown source — that's expected for any app not from the Play Store. Full walkthrough, including transfer methods and what each warning means: INSTALL-ON-PHONE.md.
cd study-tracker
python3 -m http.server 8000Open http://localhost:8000. On a phone on the same Wi-Fi, browse to your machine's IP and use Add to Home screen to install it. Details in study-tracker/README.md.
It's static files only, so any host works — GitHub Pages, Netlify, Vercel.
The app starts empty. Tap +, name the subject, and paste your modules and topics. Text copied out of a syllabus PDF works directly:
Module:1 Introduction
6 hours
Introduction- Evolution of AI, State of Art -Different Types of Artificial
Intelligence-Intelligent Agents
becomes Module 1 "Introduction", 6 hours, with five topics. The parser rejoins
lines the PDF wrapped mid-sentence, reads the hours line as metadata, and splits
topics on , - – while keeping hyphenated terms like Alpha-Beta and
tic-tac-toe whole.
The preview lists every topic it found — check it before tapping Add. No parser gets pasted PDF text right every time. There's a One topic per line toggle for lists you type yourself.
Six VIT CSE syllabi (DBMS, Compiler Design, Embedded Systems, Cloud Architecture, Discrete Maths, Probability & Statistics — 48 modules, 359 topics) ship as an optional sample pack, loadable in one tap from the empty home screen.
study-tracker/ The app. Plain HTML/CSS/JS, no build step, no dependencies.
index.html
app.js Rendering, ticking, progress, search, syllabus parsing
syllabus.js The optional sample subjects
styles.css
sw.js Service worker (web only — disabled inside the APK)
android-build/ Capacitor wrapper that packages the app as an APK
build-apk.sh One command to rebuild
StudyTracker.apk Prebuilt, signed, ready to install
Needs JDK 17 and the Android SDK (platform 34). With those on your machine:
cd android-build
npm install
./build-apk.shbuild-apk.sh expects the JDK at ~/opt/jdk-17* and the SDK at ~/Android/Sdk;
edit the two export lines at the top if yours live elsewhere.
Without a keystore.properties (it is not in this repo, deliberately) the release
build is unsigned. To sign your own:
keytool -genkeypair -v -keystore android-build/android/my.keystore \
-alias my-key -keyalg RSA -keysize 2048 -validity 10000then create android-build/android/keystore.properties:
storeFile=my.keystore
storePassword=yourpassword
keyAlias=my-key
keyPassword=yourpasswordKeep that keystore safe and out of git — Android only installs an update over an existing app when both are signed with the same key.
Vanilla JavaScript, no framework and no dependencies at runtime. State lives in
localStorage under three keys (studytracker.v1.subjects, .done, .open).
The Android build is a Capacitor WebView wrapper with
every asset bundled, so it needs no network at any point.