Android Study Companion · Apache Cordova

LEGACY

A hybrid study companion forged for competitive examination preparation — chemistry, physics, and performance analytics in one application.

Platform: Android SDK 29–34  ·  Package: com.asphalts001.legacy

Explore the Application
Scroll

Get the App

Download Latest
Version

The latest build is always available directly from GitHub Releases. No account required.

Download v1.0.99 APK

Google Play Protect may flag this file during installation as the app is not yet listed on the Play Store. This is expected behaviour for sideloaded APKs. Tap "Install anyway" on the warning prompt to proceed safely.

01 · Overview

Built for Efficiency

Legacy is a hybrid Android application built with Apache Cordova, designed as a comprehensive study companion for students preparing for competitive examinations including NEET.

The application delivers a richly styled WebView interface combining static reference material, two independent quiz engines, real-time performance tracking, and optional cloud synchronisation — all within a single, self-contained APK.

Study sessions are logged, scored, and persisted locally. Progress is surfaced through a live dashboard with accuracy metrics, recent activity feeds, and exportable JSON logs. For multi-device continuity, a manual Supabase cloud sync transfers session data on demand.

24
Mcq sets covering complete subject of biology
Quick sheets
Complete covergae of physics n chemistry in extreme efficiency
1min/Q
Dynamicaly timed MCQ sessions

Everything in One Place

Chemistry Compendium

A searchable, tabbed reference covering Inorganic, Physical, and Organic chemistry with inline search filtering and named-reaction highlights.

JSON Quiz Factory

Configurable MCQ runner loading from 24 external JSON question sets. Full NEET scoring, 60-minute sessions, and per-set attempt history.

Adversarial Physics

45 hard-coded trap questions across seven difficulty categories, with a live timer and type-wise performance breakdown after each session.

Dashboard & Analytics

Real-time accuracy metrics, session tracking, recent activity feed, and one-tap JSON export of your complete study log.

Cloud Sync

Manual push/pull synchronisation of activity logs via a Supabase edge function. Keep your progress consistent across devices.

Background Audio

Persistent music playback using the Cordova Media plugin. Per-session preference storage keeps your study atmosphere consistent.

03 · Technical

Architecture &
Build Details

Framework Apache Cordova 12
Platform Android SDK 29 – 34
Identifier com.asphalts001.legacy
Entry Point index.html (WebView)
Build GitHub Actions CI
Runtime Node 18 · JDK 17 · Gradle 8.7
State localStorage via StateManager.js
Cloud Supabase Edge Functions
Auth Google OAuth 2.0
Audio Plugin cordova-plugin-media ^6.1.0
flowchart TD UI["Quiz Complete
(phiross_factory.html)"] TR["tracker.js
NEET scoring — session object — tracker:update"] SM["StateManager.js
localStorage — app_state key"] DB[("localStorage")] SY["sync.js
auto-sync loop — PUT /sync-api"] SB[("Supabase
Edge Function")] DA["Dashboard
index.html
listens — tracker:update"] UI --> TR TR --> SM TR --> DA SM --> DB SY --> SB DB -.->|"on demand / hourly"| SY style UI fill:#1a1a24,stroke:#8a6f2e,color:#d4c4a0 style TR fill:#1a1a24,stroke:#c9a84c,color:#d4c4a0 style SM fill:#1a1a24,stroke:#8a6f2e,color:#d4c4a0 style DB fill:#0a0a0f,stroke:#8a6f2e,color:#7a6d56 style SY fill:#1a1a24,stroke:#8a6f2e,color:#d4c4a0 style SB fill:#0a0a0f,stroke:#8a6f2e,color:#7a6d56 style DA fill:#1a1a24,stroke:#8a6f2e,color:#d4c4a0

tracker.js

Middleware layer. Receives raw quiz totals, applies strict NEET (+4 / −1) scoring, and fires a tracker:update DOM event so the dashboard re-renders without a page reload.

StateManager.js

Synchronous wrapper around localStorage. Enforces a versioned JSON schema (version · sessions · stats) and persists the full state under a single app_state key.

sync.js

Runs asynchronously. Serialises state and pushes to a Supabase Edge Function via PUT. An hourly background loop keeps the cloud copy current while a user session is active. Also intercepts the legacy://login deep-link on OAuth return to establish the Supabase session.

CI / CD

GitHub Actions on Ubuntu. Node 18 · JDK 17 · Gradle 8.7 · Android SDK 34. Cordova platform and plugins installed at build time. APK signed via apksigner using a base64 keystore from Secrets, then attached to a tagged GitHub Release automatically.

Auth & Deep Linking

Google OAuth via Supabase, opened through InAppBrowser to bypass WebView restrictions. On success, Google redirects to legacy://login — declared in config.xml — where sync.js extracts tokens and opens the session.

Roadmap

This WebView layer is the foundation. The migration path to native Kotlin / Jetpack Compose is direct — StateManager.js → Room Database, DOM events → ViewModels + StateFlows.

Auth & Cloud Sync — Full Data Path

This diagram traces the complete auth and sync lifecycle. Login triggers Google OAuth through InAppBrowser, which hands a JWT back to sync.js. Study data accumulates in localStorage (studyapp_log) and is pushed to a Supabase Edge Function either manually or on an hourly background timer. The edge function writes to the user_sync_data PostgreSQL table using the service role, while Row-Level Security (auth.uid() = user_id) ensures no cross-user data leakage.

flowchart TD subgraph Device[Your Device] AUTH_UI["Auth UI
Login / Signup Form"] BG_TIMER["Background Timer
Auto-sync every hour"] SYNC["sync.js
Client Sync Logic"] LS[("localStorage
studyapp_log")] end subgraph Supa[Supabase] SB_AUTH["Supabase Auth
Email/Password + JWT"] EDGE["Edge Function
sync-api"] PG[("PostgreSQL
user_sync_data")] RLS["RLS Policies
auth.uid = user_id"] end AUTH_UI --> SB_AUTH SB_AUTH -->|"JWT Session"| SYNC BG_TIMER --> SYNC SYNC --> LS SYNC -->|"Push / Pull"| EDGE EDGE -->|"Service Role"| PG PG --> RLS style AUTH_UI fill:#1a1a24,stroke:#8a6f2e,color:#d4c4a0 style BG_TIMER fill:#1a1a24,stroke:#8a6f2e,color:#d4c4a0 style SYNC fill:#1a1a24,stroke:#c9a84c,color:#d4c4a0 style LS fill:#0a0a0f,stroke:#8a6f2e,color:#7a6d56 style SB_AUTH fill:#1a1a24,stroke:#8a6f2e,color:#d4c4a0 style EDGE fill:#1a1a24,stroke:#8a6f2e,color:#d4c4a0 style PG fill:#0a0a0f,stroke:#8a6f2e,color:#7a6d56 style RLS fill:#0a0a0f,stroke:#c9a84c,color:#d4c4a0

What's New in
Legacy

v1.0.98 April 2026 Latest
Egyptian — Physics Reference Module

A brand-new immersive reference module inspired by ancient Egyptian manuscripts has been added to Legacy. Styled as a royal parchment scroll with ornamental borders, hieroglyphic motifs, and gold-leaf typography, the Egyptian module presents physics commandments — Newton's laws, electromagnetism, optics, thermodynamics, and wave mechanics — in a richly designed, filterable interface. Each law is laid out as a royal decree with clearly separated name, formula, and plain-language explanation. The module is fully searchable by keyword across title, formula, and description fields, and adapts gracefully to mobile viewports.

New Module Physics Reference Egyptian Theme Searchable Responsive
v1.0.90 March 2026 Release
Cloud Sync & Dashboard Improvements

Introduced manual Supabase cloud sync for session logs across devices. Dashboard accuracy metrics now update in real time, and the activity feed surfaces your five most recent sessions with per-set attempt history. JSON export of the complete study log added to settings.

Cloud Sync Dashboard Analytics
v1.0.80 February 2026 Release
Adversarial Physics Engine & Background Audio

Added 45 hard-coded adversarial physics trap questions across seven difficulty categories with a live countdown timer and type-wise performance breakdown. Persistent background audio via the Cordova Media plugin introduced, with per-session preference storage.

Physics Quiz Engine Audio

05 · Privacy Policy

How We Handle
Your Data

Last updated: April 21, 2026

1. Overview

Legacy is a hybrid Android study application built with Apache Cordova. This policy explains what data we collect, how we use it, and your rights regarding that data. We are committed to handling your information with full transparency.

2. Information We Collect

When you sign in with Google, we receive the following from your Google account:

We do not collect passwords, payment information, location data, or any other personal data beyond what is listed above.

3. How We Use Your Information

The information received from Google is used solely to:

We do not sell, rent, trade, or share your personal information with any third parties for marketing or any other purpose.

4. Study Data & Local Storage

Study session data — including quiz scores, accuracy percentages, and timestamps — is stored locally on your device using browser localStorage. This data never leaves your device unless you explicitly choose to use the Cloud Sync feature.

If you use Cloud Sync, your session log is sent to a private Supabase endpoint accessible only via your unique user ID. No personally identifiable information is included in this sync.

5. Data Retention

We do not permanently store your Google account information on our servers. Session authentication data is temporary and is cleared when you log out. Local study data persists on your device until you reset or uninstall the application.

6. Third-Party Services

Legacy uses the following third-party services:

7. Children's Privacy

Legacy is intended for students preparing for competitive examinations. We do not knowingly collect personal information from children under the age of 13. If you believe a child has provided us with personal information, please contact us so we can delete it.

8. Your Rights

You can revoke this app's access to your Google account at any time by visiting Google Account Permissions. You may also clear all local study data from within the application settings.

9. Changes to This Policy

We may update this privacy policy from time to time. Any changes will be reflected on this page with an updated date at the top. Continued use of the application after changes constitutes acceptance of the revised policy.

10. Contact

If you have any questions or concerns about this privacy policy, please open an issue on the project's GitHub repository at github.com/asphalts001.