A course is a tree: modules in order, lessons in order within them. Enrollment is the relationship between a learner and a course and holds completion; progress is per lesson so a dashboard can show where someone stopped. Quizzes belong to a lesson, attempts record the answers given, and a certificate is issued once per enrollment.
$ npx vela create my-app --schema coursesEvery collection, field and relation above becomes a PocketBase migration in the new project. Change any of it afterwards with vela generate migration --ai, which opens this same diagram as an editor.