Skip to content

Commit db19459

Browse files
committed
update readme
1 parent 4bd2b62 commit db19459

File tree

1 file changed

+80
-39
lines changed

1 file changed

+80
-39
lines changed

readme.md

Lines changed: 80 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -2,67 +2,108 @@
22
![`standalone-ui` E2E](https://github.com/patched-network/vue-skuilder/actions/workflows/standalone-e2e-tests.yml/badge.svg)
33
![CLI Regression](https://github.com/patched-network/vue-skuilder/actions/workflows/cli-regression-test.yml/badge.svg)
44

5-
General tooling for interactive tutoring systems, with experimentation toward
5+
Modular toolkit for the construction of interactive tutoring systems, with experimentation toward
66
- mass-collaborative authoring
77
- mixture-of-expert-systems guided learning
88
- self-healing courses via proactive surfacing of learning bottlenecks
9-
- content inheritance between courses
9+
- schema definition to share content between courses, e.g., a package manager for curricula
10+
- MCP hooks for LLMs to responsibly generate structured content according to structured demand; slop on rails
1011

11-
Think: the FOSS lovechild of anki, duolingo, wikipedia, and MathAcadamy, with a more generalized surface area for the types of content and skills that can be exercised.
12+
Think: the FOSS lovechild of Anki, Duolingo, Wikipedia, and MathAcademy, with a more generalized surface area for the types of content and skills that can be exercised.
1213

13-
Aiming toward effective libraries and a main learner-loop to enable:
14-
- a. independent authoring of individual courses
15-
- b. community developed courses
16-
- c. a platform to support both a. and b.
14+
## Quick Start
1715

18-
## Project Architecture
19-
20-
This monorepo contains three top-level system components:
21-
22-
- **Vue SPA Frontend** (`packages/platform-ui`): Vue 3 + Vuetify 3 progressive web app
23-
- **Express API** (`packages/express`): Node.js backend API
24-
- **CouchDB Database**: Storage layer with replication protocol support
25-
26-
Which are in turn built from the helper packages:
16+
### For Course Creators (building *with* `vue-skuilder`) (start here!)
2717

28-
- `common`: some core logic and interfaces that define communication between project components
29-
- `common-ui`: UI components useful in both a `platform` and standalone `course` context
30-
- `courses`: logic and interfaces for both generic and domain specific courses.
31-
- `db`: interfaces for the application's communication with the data later, and an implementation for CouchDB backend via PouchDB
18+
Install the Skuilder CLI to create your first course:
3219

33-
## Development Quick Start
34-
35-
### Prerequisites
20+
```bash
21+
npm install -g skuilder # npx ok too!
22+
skuilder init my-course --data-layer=static
23+
cd my-course
24+
npm run dev # serve your course locally
25+
npm run studio # edit your course content via web UI
26+
```
3627

37-
- Node.js 18+
38-
- Yarn 4 (or corepack)
39-
- Docker (for development database)
28+
### For Platform Developers / Contributors (building `vue-skuilder` itself)
4029

41-
### Commands
30+
Clone and develop the full platform:
4231

4332
```bash
4433
git clone https://github.com/patched-network/vue-skuilder.git
4534
cd vue-skuilder
46-
git submodule update --init --recursive # a test-time database dump
4735
yarn install
48-
yarn dev
36+
yarn setup # makes git submodule available - test database
37+
yarn dev # runs platform-ui, express API, and CouchDB
4938
```
5039

51-
`dev` here:
52-
- Builds packages
53-
- Starts a local CouchDB instance in Docker with test data (http://localhost:5984)
54-
- Launches the Express backend server (http://localhost:3000)
55-
- Launches the Vue frontend (http://localhost:5173)
40+
## Project Architecture
5641

57-
## Production Build
42+
This monorepo is structured to support both **platform development** and **course creation**.
5843

59-
```bash
60-
yarn build
44+
Broadly: an education system has `User` and `Content` as endpoints, with `UI` as the mediating software in between.
45+
46+
Here:
47+
48+
### User
49+
50+
The only user abstraction in the project is the `UserDBInterface`, which lives in the `@vue-skuilder/db` package. It's powered by PouchDB, which stores data locally in the case of static courses, or syncs with a CouchDB backend in dynamic / platform deployments.
51+
52+
### Content
53+
54+
Again, contained in the `db` package. Content is served over a core interface:
55+
56+
```
57+
interface StudyContentSource {
58+
getPendingReviews(): Promise<(StudySessionReviewItem & ScheduledCard)[]>;
59+
getNewCards(n?: number): Promise<StudySessionNewItem[]>;
60+
}
6161
```
6262

63-
This builds all packages and outputs the frontend as a static web app in the `packages/platform-ui/dist` folder and the backend in `packages/express/dist`.
63+
Various implementations satisfy this interface, but the important distinction is that content can be either **static** (JSON files) or **dynamic** (CouchDB database). The `db` package contains converters to transform courses between these form factors as well, enabling, e.g., checkpointing and portable deployment of a 'live' course.
64+
65+
### UI
66+
67+
There are several UI *application* packages:
68+
- `standalone-ui`: a skeleton static SPA for rendering a course. The thing that you'd deploy as user-facing.
69+
- `studio-ui`: a focused content editor for individual courses, usable against either static or dynamic courses.
70+
- `platform-ui`: ⚠️functional wip⚠️ a static SPA for managing many users and courses, allowing, e.g., multi-course study sessions, user course creation, classrooms (teacher-led cohorts). NB: the site itself is static, but it connects to a dynamic backend API and CouchDB database.
71+
- `tuilder`: ⚠️**non**-functional wip⚠️ a tui for consuming courses in the terminal
72+
73+
And some shared UI packages:
74+
- `common-ui`: a library of reusable Vue components and utilities
75+
- `courses`: a package containing domain-specific course logic and content types, also base-types for course content rendering components (e.g., a Chessboard component for a chess course)
76+
- `edit-ui`: course editing widgets used in both `studio-ui` and `platform-ui`
77+
78+
All web UI is built with Vue 3 and Vuetify 3, in TypeScript, mostly with Composition API and Pinia state management. All web UI shares most of its config via `./vite.config.base.json`
79+
80+
### Glue
81+
82+
The `express` backend API server is responsible, in dynamic-data contexts, for:
83+
- post-processing media content
84+
- enforcing correct metadata in course databases
85+
- handling various user requests
86+
- and probably other stuff as well!
87+
88+
The `common` package contains some core logic and interfaces that define communication between components.
89+
90+
### Utility
91+
92+
The `cli` package (published on npm as `skuilder`) gives commands to create, manage, or migrate courses. See [packages/cli/README.md](packages/cli/README.md) for more details.
93+
94+
## 🤝 Contributing
95+
96+
Please do:
97+
- kick tires
98+
- file issues (bugs)
99+
- file issues (questions)
100+
- file issues (feature requests, roadmap / vision discussions)
101+
- open smallish PRs that present as clear wins, even without prior discussion
102+
103+
Probably don't:
104+
- open large PRs without prior discussion
64105

65-
## License
106+
## 📄 License
66107

67108
This project is licensed under:
68109

0 commit comments

Comments
 (0)