This guide will help you get the Cohort Tracker running. No Rust experience required to start.
- What Does This Thing Do?
- Before You Start
- First Time Setup
- Daily Usage
- Understanding the Dashboard
- Common Tasks
- Troubleshooting
- What's Next?
Cohort Tracker pulls student progress data from OpenClass.ai and stores it locally in a database. Then it gives you:
- A dashboard to visualize student progress
- Analytics to identify struggling students
- An API to build your own tools
Think of it as your own copy of the class data that you can query however you want.
You need:
-
Rust - The programming language this is built with
- Install from rustup.rs
- Takes about 5 minutes
- Works on Mac, Linux, and Windows
-
OpenClass credentials - Email and password for your instructor/mentor account
- You need access to at least one class
-
A terminal - Command line interface
- Mac: Terminal app
- Windows: PowerShell or Command Prompt
- Linux: You know what to do
git clone https://github.com/yourusername/cohort-tracker.git
cd cohort-trackercargo build --releaseThis compiles the Rust code into an executable. First time takes a few minutes while it downloads dependencies.
Cargo (Rust's package manager) downloads libraries and compiles everything. The --release flag makes it optimized and fast.
cargo run -- init --email your@email.com --password yourpasswordThis does three things:
- Saves your credentials to
~/.cohort-tracker.toml - Connects to OpenClass and fetches your classes
- Asks which classes you want to track
You'll see something like:
Found 3 classes:
- data-analysis-pathway-module-1-aug-2
- data-analysis-pathway-module-2-aug-2
- web-dev-fundamentals-sep-1
Enter friendly IDs to activate (comma-separated, or 'all'):
>
Type the class IDs you want (separated by commas) or just type all.
cargo run -- syncThis fetches student progress from OpenClass and stores it in ~/.cohort-tracker.db (SQLite database). It shows progress as it goes.
First sync takes a minute or two. Subsequent syncs are faster (they only fetch new data).
make serveOr manually:
cargo run -- server &
open http://localhost:3000What's happening?
- Starts a web server on port 3000
- Opens the dashboard in your browser
- Dashboard reads from your local database
cargo run -- statusShows what classes you're tracking and when they were last synced.
cargo run -- syncFetches any new student progress since last sync. Run this daily or before checking the dashboard.
cargo run -- sync --class data-analysis-pathway-module-1-aug-2cargo run -- sync --fullFetches everything, not just new data. Use this if something seems off.
# List all classes
cargo run -- list
# Activate a class
cargo run -- activate data-analysis-pathway-module-3-jan-1
# Deactivate a class
cargo run -- deactivate old-class-nameOnce you open http://localhost:3000, you'll see:
Overview Tab
- Total students, assignments, completion rates
- Quick health check of your cohort
Students Tab
- List of all students
- Completion percentages
- Risk levels (who's falling behind)
- Click a student to see their detailed progress
Blockers Tab
- Assignments with low completion rates
- These are where students get stuck
- Helps you know what to review in class
Activity Tab
- Who's been active recently
- Who hasn't submitted anything in a while
- Filter by night/cohort
For a complete walkthrough with screenshots: See the Dashboard Guide
- Who hasn't submitted anything in a while
- Filter by night/cohort
- Open dashboard → Students tab
- Look at "Students at Risk" table
- Click a student's name for details
- See exactly which assignments they're missing
- Open dashboard → Blockers tab
- Top assignments are where students get stuck
- These are good candidates for review sessions
The database is just SQLite. You can query it directly:
sqlite3 ~/.cohort-tracker.db "SELECT * FROM students"Or use any SQLite tool. The schema is documented in database.md.
The API is running at http://localhost:3000. Try:
curl http://localhost:3000/classesSee api.rs for all endpoints.
- Check your email/password
- Make sure you have instructor/mentor access
- Try logging into OpenClass.ai in a browser first
- Your account might not have access to any classes yet
- Contact your program coordinator
- Another instance is running
- Kill it:
pkill cohort-tracker - Or just restart your terminal
- First sync is always slow (fetching everything)
- Subsequent syncs are faster (incremental)
- Use
--fullflag sparingly
- Run
cargo run -- syncto fetch new data - Refresh your browser
- Check when it was last synced:
cargo run -- status
Now that you have it running:
- Explore the code - Start with architecture.md
- Learn Rust - Check out rust-basics.md
- Add features - See development.md
- Understand the data - Read database.md
Don't try to understand everything at once. Pick one piece:
- Want to add a CLI command? Look at
cli.rs - Want to add a database query? Look at
db/queries.rs - Want to understand the API? Look at
lms/openclass/
Run the code with changes. The best way to learn is to modify something small and see what happens. The compiler will tell you if you break something.
Ask questions. If something's confusing, that's a documentation bug. Let us know!
We've included a Makefile to make common commands easier. Instead of typing long cargo run commands, you can use short make commands:
# See all available commands
make help
# Common tasks
make sync # Instead of: cargo run -- sync
make status # Instead of: cargo run -- status
make serve # Instead of: cargo run -- server
# With parameters
make sync-class CLASS=data-analysis-pathway-module-2-aug-2
make activate CLASS=my-class-idWhy both? The Makefile is convenient, but showing the full cargo run commands helps you understand what's actually happening. Use whichever you prefer!
Learning tip: Run make help to see all available commands with their actual cargo commands shown.
# Setup
cargo build --release
cargo run -- init --email you@example.com --password pass
# Or: make init EMAIL=you@example.com PASSWORD=pass
# Daily use
cargo run -- sync # Fetch new data
cargo run -- status # Check what's tracked
make serve # Start dashboard
# Management
cargo run -- list # Show all classes
cargo run -- activate ID # Track a class
cargo run -- deactivate ID # Stop tracking a class
# Development
cargo test # Run tests
cargo build # Build (debug mode)
cargo run -- server # Start API server- Dashboard features → Dashboard Guide - Complete walkthrough with screenshots
- Other guides → Check the docs/ folder for detailed documentation
- Code questions → Look at the code - it has comments where things get tricky
- The Rust compiler is helpful with error messages