Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 23 additions & 3 deletions CONTEXT.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Roadmap Studio
# Syllo

Roadmap Studio turns source material into roadmaps where a learner can plan, study, and track progress.
Syllo turns source material into roadmaps where a learner can plan, study, read, and track progress.

## Language

Expand All @@ -12,12 +12,32 @@ _Avoid_: Workspace, course, project
One skill inside a Roadmap, holding the tasks, notes, and resources that teach it.
_Avoid_: Section, chapter, lesson

**Level**:
One rung of a Roadmap's ladder: Basics, Intermediate, or Advanced. A Level is complete when all its Core Items are done. Roadmaps made before levels existed read as a single Level whose tasks are all core.
_Avoid_: Stage, tier, difficulty

**Current Level**:
The first Level in a Roadmap that is not complete.
_Avoid_: Active level

**Core Item**:
One of at most five tasks per Level that cover the essentials, usually a video. Finishing every Core Item in a Level unlocks level-up.
_Avoid_: Required task, main video

**Go-Deeper Item**:
An optional task in a Level that is not core. It never counts toward level-up.
_Avoid_: Bonus, extra

**Reading Track**:
The books in a Roadmap, kept apart from the Levels so reading never blocks level-up.
_Avoid_: Book list, library

**Focused Roadmap**:
A Roadmap the learner has chosen to work on now. At most three Roadmaps are focused at once; only focused Roadmaps feed Today.
_Avoid_: Active roadmap, pinned roadmap

**Next Step**:
The first unfinished task in a Roadmap, in module order.
The first unfinished Core Item in a Roadmap's Current Level. Go-Deeper Items and the Reading Track never count.
_Avoid_: Current task, up next

**Today**:
Expand Down
24 changes: 12 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@ Scout finds free resources, reads the available source text, and asks you to kee

## Run locally

Use Node 22.12 or newer and pnpm. Run commands from the repo root unless noted:
Use Node 22.12 or newer and Bun 1.4.4. Run commands from the repo root unless noted:

```powershell
pnpm install --frozen-lockfile
pnpm dev
bun install --frozen-lockfile
bun run dev
```

Open `http://localhost:3000`. Convex is optional. With `VITE_CONVEX_URL` blank, progress uses browser storage and EPUB files use IndexedDB. No account is needed.
Expand All @@ -30,22 +30,22 @@ Convex sync is prepared for one owner, with password login restricted by `SYLLO_
## Development

```powershell
pnpm typecheck
pnpm test
pnpm lint
pnpm build
pnpm start
bun run typecheck
bun run test
bun run lint
bun run build
bun run start
```

`pnpm typecheck` checks both the app and `apps/web/convex/`.
`bun run typecheck` checks both the app and `apps/web/convex/`.

The production server serves `dist/client` and the TanStack SSR handler on loopback port 3000. `pnpm start` does not read an env file automatically; pass environment variables or run `node --env-file=.env.local server.mjs` in `apps/web`. Deployment URLs are build-time settings.
The production server serves `dist/client` and the TanStack SSR handler on loopback port 3000. `bun run start` does not read an env file automatically; pass environment variables or run `node --env-file=.env.local server.mjs` in `apps/web`. Deployment URLs are build-time settings.

`apps/web/mcp/server.mjs` supplies a local stdio MCP server for coding agents to add and search resource candidates. Connection snippets are available in Settings.

## Project layout

The repo is a pnpm workspace. Each app lives under `apps/`, and code shared between apps goes under `packages/`.
The repo is a Bun workspace. Each app lives under `apps/`, and code shared between apps goes under `packages/`.

```text
apps/web/ The Syllo app (TanStack Start), its env files and local .data/
Expand All @@ -59,4 +59,4 @@ apps/web/convex/ Private account, document sync, and file funct
apps/web/mcp/ Local coding-agent resource tools
```

This app is personal-first. Forks can use their own deployment, books, preferences, and keys. Public publishing and multi-user collaboration are outside v1. Earlier gallery/share routes remain in the codebase; personal sync does not publish learning records through them.
This app is personal-first. Forks can use their own deployment, books, preferences, and keys. Public publishing, sharing and multi-user collaboration are outside v1, so the app has no gallery, share links, plans or credits.
3 changes: 0 additions & 3 deletions apps/web/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,6 @@
"@fontsource-variable/geist-mono": "5.3.0",
"@modelcontextprotocol/sdk": "1.32.1",
"@radix-ui/react-alert-dialog": "1.1.15",
"@radix-ui/react-select": "2.2.6",
"@radix-ui/react-separator": "1.1.8",
"@radix-ui/react-slot": "1.2.4",
"@radix-ui/react-switch": "1.2.6",
"@tanstack/react-router": "1.170.45",
Expand All @@ -37,7 +35,6 @@
"convex": "1.47.0",
"cross-spawn": "7.0.6",
"epubjs": "0.3.93",
"framer-motion": "12.34.5",
"lucide-react": "0.576.0",
"motion": "12.35.1",
"openai": "6.27.0",
Expand Down
17 changes: 17 additions & 0 deletions apps/web/prompts/scout/check.v1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
version: 1
purpose: Write one recall question per section of a video, from its transcript
---

You write recall questions for a learner who is watching a video. After each section, the video pauses and the learner answers one question from memory with their notes hidden. Then they see the transcript lines that answer it.

You receive the video title and a list of sections. Each section has an `index`, a `label`, its `start` and `end` in seconds, and its transcript with `[mm:ss]` markers.

Rules:

1. Write at most one question per section. Skip a section that is an intro, an outro, a sponsor read, or has no idea worth recalling.
2. Ask a cued question about the main idea of that section: "Why does X happen?", "What is the difference between A and B?", "What goes wrong if you skip X?", "How does X work?". Do not ask "What did this section cover?" and do not ask for trivia such as names, dates or exact numbers unless they are the point.
3. The question must be answerable from that section alone, in one or two sentences.
4. `answer` is a model answer of at most two short sentences, in plain words, taken from what the section says. Do not add facts the transcript does not state.
5. `evidenceSeconds` is the timestamp of the transcript line where the answer starts. It must fall inside that section's `start` and `end`.
6. Write in the transcript's language. Keep the question under 25 words.
60 changes: 0 additions & 60 deletions apps/web/src/components/credits/CreditBadge.tsx

This file was deleted.

33 changes: 0 additions & 33 deletions apps/web/src/components/dashboard/AtRiskAlerts.tsx

This file was deleted.

Loading
Loading