Class Objectives Tracker (goaltracker)¶
Contents:
Overview¶
This project turns a semesterâs worth of course syllabi into a single,
personal checklist. Each class breaks down into a syllabus-derived tree
of learning objectives (âgoalsâ), and a Django web application
(goaltracker) lets a student check them off as they master them,
track progress per course, and build one running project plan across
every class theyâre taking.
The data starts life in pbj.db, a small SQLite database that holds
five course syllabi (Computer Science I, Data Structures, Database
Management Systems, Fullstack I, and Operating Systems) broken into 175
hierarchical topics â things like âImperatives,â âDecisions,â and
âIterations/Loopsâ nested under a parent objective such as âUnderstanding
and having a strong ability to use the core features of a procedural
programming language.â A Django management command
(import_pbj) reads that file and imports it into the trackerâs
database, preserving the parent/child structure so a broad objective and
its specific sub-skills both show up as separate, checkable items.
How It Works¶
Data Model¶
The Django app (tracker) is built around a small set of models:
CourseA class, with its syllabus metadata (title, course code, credit hours, term).
GoalA single learning objective. Goals are global, not tied to one course â if two classes share an objective (e.g. both a database class and a fullstack class expect basic SQL), completing it once satisfies it everywhere itâs required. Goals may nest under a parent goal to preserve the syllabusâs own grouping.
CourseRequirementLinks a
Goalto aCourseand marks whether itâs required or optional for that class.GoalCompletionThe single source of truth for whether a student has finished a goal. Keyed on the student and the goal only â never per-course â so progress made before ever âusingâ a course still counts the moment that course requires the same goal.
Enrollment/CourseCompletion/ProjectPlanItem/PlanMilestoneSupport enrolled-course dashboards, an automatically-derived âyou finished every requirementâ badge per course, and a drag-and-reordered personal project plan built from goals the student has pulled in.
Application¶
The web application has three main views:
All Goals â every objective across every course, each tagged with the course(s) it counts toward, with a search box to jump straight to one by name or by course.
My Plan â a single, ongoing, drag-to-reorder list of goals the student is actively working through, framed as a running project timeline rather than a per-class assignment list.
My Courses â the studentâs enrolled courses, each with a progress bar and full checklist of its required (and optional) goals.
Checking a goal off in any of the three views updates it everywhere else instantly, in every open browser tab, via a WebSocket connection (Django Channels + Redis) â no page reload required. The whole stack (the Django app, PostgreSQL, and Redis) runs together via Docker Compose.
Use Cases¶
- Tracking mastery, not just grades
A letter grade says a class is âdone.â It doesnât say which of the 40+ specific skills a syllabus promised were actually absorbed. This tool lets a student see, at a glance, exactly which objectives from a class theyâve genuinely covered versus which ones are still open â useful for identifying gaps before a final, a technical interview, or a follow-on course that assumes the earlier material.
- Reusing shared skills across courses
Because a
Goalisnât owned by a single course, an objective like âIntegrate a SQL databaseâ that shows up in both a database class and a fullstack class only has to be completed once. A student who learns it early (in an internship, a personal project, or an earlier class) walks into the second course already partway done.- Building one ongoing portfolio/project plan
The âMy Planâ view isnât scoped to a single semester or class â itâs meant to hold the actual project(s) a student is building, with goals pulled in from whatever courses are relevant, reordered to match real build order. It turns scattered syllabus objectives into one coherent to-do list for a real piece of work.
- Self-directed review and planning ahead
Because goal completion isnât gated by enrollment, a student can browse and check off objectives from a class they havenât registered for yet â useful for getting a head start over a break or confirming prerequisite knowledge before registration.
Why It Helps¶
Turns a syllabus into something actionable. A PDF syllabus is a list of promises; this tool turns it into a checklist that changes as the student actually learns.
Makes gaps visible early. Per-course progress bars and an all-goals view surface exactly which objectives are still incomplete, rather than discovering the gap on an exam or in a job interview.
Rewards a small amount of daily upkeep with a persistent record of everything mastered so far, instead of relying on memory or scattered notes across multiple classes.
Encourages connecting coursework to a real project, since the plan view is framed around one ongoing body of work rather than disconnected homework lists.
Costs almost nothing to maintain. New syllabi can be dropped in by re-running the same import against an updated
pbj.db, and the whole stack runs locally with Docker Compose â no external service dependency.