learnit v1.1.0
Learn It
Idea: use version control to learn a topic.
Installing
npm install -g learnit
Course Structure
The structure of a course must currently follow this basic Layout:
Course
|-- Module 1
|-- Chapter 01
|-- Step 01
|-- Step 02
|-- Chapter 02
|-- Summary
|-- Module 2In reality, Course represents the main branch of a git repo, a module represents a
branch with the pattern module-{module}, a chapter represents a branch with the
pattern {module}-chapter-{chapter}, and a step represents a commit on a chapter branch.
There are particular commit messages that mark the starting and stopping commits of a
chapter.
Taking a Course
You can download a course with learnit download <git-url>, or by cloning it yourself.

You can take a course by cloning a repository created or meant to be read with Learn It.
Once you've cloned the repo, simply navigate to its top-level directory and run learnit start.
You may be encouraged to use up to 3 terminals, running learnit output snippets and
learnit output commands in the other 2 terminals so that you can view the course script,
code deltas and references, and commands the instructor has setup to run such as local servers,
installs, or tests running.
TODO: What is to Come
For writers:
learnit init- completed, might need to have it initialize some more things though.learnit new module- completed.learnit new chapter- completed.learnit new step- completed.learnit new command- completed. Added background and single run commands.learnit update step- completed.learnit revert step- completed.learnit delete module- completed. Need to delete config values.learnit delete chapter- completed. Need to delete config values.learnit finish chapter- completed.learnit summarize course- completed, reader needs update.learnit summarize module- completed, reader needs update.learnit summarize chapter- completed, reader needs update.learnit goto main- completed. May add confirmation of discarding changes.learnit goto module- completed. ""learnit goto chapter- completed. ""learnit list modules- completed.learnit list chapters- completed.learnit config- completed..learnitignore- not started, eventually want multiple directory support, support module or chapter annotations.SCRIPT.md- started, prompt when creating module, chapter, and step, associate with module (not called script, uses branch name), close to completed.learnit save- completed.learnit upload- mostly complete, needs to search for unpushed branches and set upstream references.learnit rebase- not started, rebase all branches intelligently (for changes tomainthat need to be everywhere)learnit squash-scripts- not started, collapses all changes to scripts to single commit so it does not change dynamically.
For consumers:
learnit start- mostly complete.learnit output- mostly done, watches location and starts/stops commands as necessary, reporting their outputlearnit reset- not started, erases all progress, resets tomainlearnit bookmark- not started, allows user to set up a quick return pointlearnit annotate- not started, allows user to save changes they madelearnit settings- started, allows user to configure setup, such as soft stepping so that deltas are visible to outside programs, collapse horizontal spacing, collapse vertical spacing, etc.learnit download- rough draft complete, allows user to download courses and updates, synchronizes branch structure.- mark course/module/chapter as complete - started, have mechanism for keeping track of progress
For both:
- contextual
help- started, only render commands that are relevant to current situation