Homeschool Tracker — daily activity and prize contest for five configured children. Bilingual EN/ES, persistent SQLite, 45-minute/movie prizes with share, postpone, hold, and redeem. U.S. Department of Education IES / NSF EHR eligible.

Homeschool Tracker

A daily activity tracker for homeschooled kids β€” with prizes (45 minutes, a movie) that can be shared with other kids, postponed, redeemed, or held onto. Multi-language. Permanent SQLite database, forward-compatible schema.

Launch the App

What It Does

πŸ“… Per-Kid Daily Tracking

Add each child. Log activity by category β€” study, reading, exercise, creative, chores, free play. Total minutes per day auto-calculated.

πŸ† Prize System

Award 45 minutes of screen time or a movie of any length. Each prize has a status β€” held, redeemed, postponed, or shared.

🀝 Share Minutes

Split 45-minute prizes evenly among the winner and one or more other kids. The leftover minute (if any) stays with the original winner.

⏸️ Postpone

Move any prize to another date. Postponed prizes remain in the queue and appear when you view that future date.

🎬 Hold or Redeem

Hold onto a prize β€” it stays in your kid's balance. Redeem it to mark it used.

🌐 Multi-Language

English and Spanish today; new languages added by dropping a JSON file into locales/. No code changes.

πŸ“œ Historical View

Every day with activity is preserved. Click any previous date to see what was done, what prizes were awarded, and which were redeemed, postponed, or shared.

πŸ’Ύ Permanent, Future-Proof Database

SQLite with WAL journaling, foreign-key enforcement, schema-version table. Exportable as JSON for portability.

The Database

Five tables. Foreign-key relationships. Indexes on the hot paths. WAL journaling. Forward-compatible.

TablePurposeKey Columns
kidsEach child in the householdid, name, birthdate, locale, created_at
activitiesActivity minutes per kid per dayid, kid_id, date, minutes, category, note
prizesEach awarded prize and its statusid, kid_id, date, prize_type, minutes_value, status, shared_with, postponed_to, redeemed_on
settingsUser-configurable key/valuekey, value
schema_versionForward-migration trackingversion, applied_at

Schema migrations live in data/migrations/. Each migration increments schema_version and runs idempotently. New tables and columns are added by appending a new migration file β€” old data is never rewritten.

PRIZE FLOW

Earn, decide, and carry value forward

Activity recorded
      |
Daily progress reviewed
      |
45-minute or movie prize awarded
      |
Hold | Redeem | Postpone | Share eligible minutes

Movie prizes follow the same held, redeemed, and postponed lifecycle but are not divided. Shared minute prizes preserve the original total and keep an auditable household record.

API Endpoints

RESTful JSON API. All endpoints require a valid kid_id context (selected via the UI).

Kids

MethodEndpointDescription
GET/api/kidsList all kids
POST/api/kidsAdd a kid ({name, birthdate?, locale?})

Activities

MethodEndpointDescription
GET/api/activities?kid_id=&date=Activities for a kid on a date
GET/api/activities/dates?kid_id=List all dates with activity for a kid
POST/api/activitiesAdd activity ({kid_id, date, minutes, category, note?})
DELETE/api/activities/:idRemove an activity

Prizes

MethodEndpointDescription
GET/api/prizes?kid_id=List all prizes for a kid
POST/api/prizesAward a prize ({kid_id, date, prize_type})
POST/api/prizes/:id/redeemMark prize as redeemed
POST/api/prizes/:id/postponePostpone ({postponed_to})
POST/api/prizes/:id/shareShare 45-min prize ({shared_with: [kid_ids]})
POST/api/prizes/:id/holdReturn to 'held' status

Localization

MethodEndpointDescription
GET/api/localesList available locale codes
GET/api/locales/:codeGet locale JSON

Settings & Export

MethodEndpointDescription
GET/api/settings/:keyGet setting value
PUT/api/settings/:keySet setting value
GET/api/exportFull database dump as JSON

PUBLIC ACCESS

Ready for the configured household

The hosted application opens with the five existing children and persistent household data. No local installation is required.

Open Homeschool Tracker

LANGUAGES

English and Spanish, designed to extend

Locale resources are separated from application logic so additional languages can be added without redesigning the tracker.