You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- **use skuilder.json for multi-course config**
- **move responibility for skuilder.json parsing to db**
- **add def for SkuilderManifest**
PR introduces `skuilder.json` general config for declaring course
contents and dependencies. Test usage in the docs site inlining skuilder
demo course.
The `skuilder.json` file is a declarative manifest used to define a Skuilder project or a composable content package (a "quilt"). It is inspired by `package.json` from the Node.js ecosystem, allowing content to be managed as packages with their own metadata and dependencies.
5
+
6
+
## Current Usage (MVP)
7
+
8
+
In the current implementation, `skuilder.json` enables the documentation site to load multiple courses from different locations using a runtime resolution strategy.
9
+
10
+
There are two primary ways this file is used:
11
+
12
+
### 1. Root Manifest (Aggregator)
13
+
14
+
An application (like this docs site) has a root `skuilder.json` file that declares its content dependencies. The `dependencies` field maps a package name to the URL of its own `skuilder.json`.
15
+
16
+
**Example: `/public/skuilder.json`**
17
+
18
+
```json
19
+
{
20
+
"name": "@skuilder/docs-site",
21
+
"version": "0.1.0",
22
+
"description": "The root manifest for the vue-skuilder documentation site.",
A self-contained course (a "leaf" package) has its own `skuilder.json` that defines its metadata and points to its content manifest.
33
+
34
+
**Example: A `skuilder.json` within a course directory**
35
+
36
+
```json
37
+
{
38
+
"name": "@skuilder/hero-course",
39
+
"version": "1.0.0",
40
+
"description": "The interactive course used in the VitePress hero section.",
41
+
"content": {
42
+
"type": "static",
43
+
"manifest": "./manifest.json"
44
+
}
45
+
}
46
+
```
47
+
48
+
At runtime, the data layer starts by fetching the root manifest, then recursively fetches the manifest for each dependency to discover the location of the actual course content.
49
+
50
+
## Roadmap
51
+
52
+
This runtime resolution is the first step. The long-term vision is to create a more robust system analogous to modern package managers.
53
+
54
+
-**Build-Time Dependency Resolution:** A CLI command (e.g., `skuilder install`) will be introduced. This tool will read the root `skuilder.json` and resolve the entire dependency graph ahead of time.
55
+
56
+
-**Lock File Generation:** The resolution step will produce a `skuilder.lock.json` file. This file will contain a flat, deterministic list of all required course manifests and their absolute URLs. The runtime data layer will consume this simple lock file directly, resulting in faster and more reliable startup.
57
+
58
+
-**Registry Support:** Eventually, the system will support version-based dependencies (e.g., `"@skuilder/math-basics": "^1.2.0"`) which will be resolved against a central or private Skuilder package registry.
0 commit comments