Skip to content
Danny Huang

Knovus

The AI study platform I co-founded: course files in, a roadmap of bite-sized lessons out — web and iOS.

Year
2025–26
Reading
08 min
Figures
27
00Brief

Knovus — first launched as WeLearn.ai — is an AI study platform for university students. Upload your slides, PDFs and notes, and it maps the course into a roadmap of concepts, teaches each one from your own materials and checks it with interactive questions. I co-founded it as CPO with Hanson Li and Blair Chen, built much of the web app with them, and built the native iOS client on my own in SwiftUI.

Spec sheet05 entries
Role
Co-Founder & CPO — product design and full-stack engineering; sole designer-engineer of the iOS app
Team
  • Yiming “Danny” Huang — Co-Founder & CPO
  • Hanson Li — Co-Founder & CEO
  • Blair Chen — Co-Founder & CTO
Disciplines
  • Product design
  • Native iOS
  • Full-stack web
  • Motion design
  • AI products
Tools
Next.js / React / TypeScript / Tailwind CSS / Swift 6 / SwiftUI / Rive / Lottie / Firebase / KaTeX / Mermaid / CoreMotion / Chrome Extension

Most AI study tools are session-based. You ask a question, get an answer, and start from scratch next time. Knovus is progressive: it breaks your course into a structured roadmap, knows what you have mastered and what you are missing, and picks up where you left off — so your learning builds on itself instead of resetting every session.

This is the story of the web platform we built together, and of the iOS app I built on my own.

Fig. 01knovus.ai — the landing page, which I built.
01Origin

From WeLearn.ai to Knovus

It started in August 2025 as WeLearn.ai: a platform that helps students upload their course files and learn with AI assistance. I created the repository and wrote the first frontend. That first version paired a Content Capture Chrome extension with generated quizzes, a quiz schedule and timed practice exams.

In November 2025 we renamed the product Knovus — know + novus, Latin for “new”: new knowledge. A new logo followed at the end of the year and the mascot arrived in January. Through 2026 we rebuilt everything around a roadmap and Learn Mode: v2.0 shipped in March, and the Learn Mode 2 rebuild in August.

Fig. 02–04WeLearn.ai, 2025: the Content Capture extension, the quiz schedule and the timed exam simulator.
02How it works

Upload once, learn in order

Students upload lecture slides, PDFs or messy notes — or skip the uploading altogether: the Knovus Chrome extension recognises a Canvas or Brightspace course and sends the syllabus and modules over in one click. New topics appear on the roadmap while the files are still being read.

Every concept is then taught from your own slides first, and checked second. Diagrams from the lecture show up on the lesson card, citations open the source, and you can highlight a line you don’t follow and ask Knovus right there.

Fig. 05The Course Material Uploader on Brightspace: 23 files found, 22 materials uploaded, course created.

Fig. 06A lesson card sourced from the lecture PDF, with its knowledge check beside it.

Fig. 07Seven biomes, one per section colour: Forest, Twilight Lavender, Jungle, Ocean Coast, Blossom Grove, Desert Canyon and Volcanic.
03Roadmap

A path with seven worlds

Topics unlock in order, a review gate sits between sections, and Sprout walks the path with you. To give every section its own look, I wrote the spec for a biome layer and built it: each section becomes a scene, with a gradient sky, low-poly props in the gutters and the track restyled as that world’s river, dry trail or lava flow.

The biomes take their colours from the same section themes as the nodes, so the two can’t drift apart. Nodes are placed in percentages but props in pixels, so a ResizeObserver measures the real card width and recomputes the node centres before any scenery is placed — and each scene only mounts as it nears the viewport.

I also built the streaks, Learn Mode’s sounds and the class invite links that unlock a Class League: friends, a weekly leaderboard and one shared space for everyone taking the same course, at the same school, with the same professor.

Fig. 08A seven-day streak, with the invite that unlocks your Class League.

Every expert was once a Novice.”

The Knovus motto
04Character

Meet Sprout

The mascot is a cream sprout with two green leaves. It runs on the lesson loader, works at a desk while your materials are processed, sleeps when you’re idle and celebrates when you get things right — and its thirty-two official expressions double as profile avatars.

On the roadmap Sprout is live: a Rive state machine with mood loops, gaze and nineteen one-shot reactions, from a correct-answer hop to a gold medal for a mastered knowledge point. I integrated an earlier, designer-made Rive mascot; in the September rebuild the team re-authored Sprout entirely as code with the Rive CLI, behind automated QA that fails the build if a limb ever comes away from the body.

Bigger wins take over the screen. A perfect session, a streak and a finished topic — about a week of study — each get a full-screen scene with its own synthesised score, every hit landing on the frame of the beat it scores.

Fig. 09Live reactions from the Rive file: wave, correct, celebrate, love, wow.

Fig. 10Twelve of Sprout’s poses, captured from the Rive file.

Fig. 11The 32 official avatar expressions, chosen as a profile photo at sign-up.

Fig. 12The “working” loop that plays while materials are processed.

Fig. 13Sprout, live — the shipped Rive file running in your browser. Its eyes follow your cursor; tap it, or try a reaction.
Fig. 14The streak milestone, with its score: a spark, a fireball, then the flame that warms the whole world. Sound on.
Key numbers04
01

1,304

commits to the web app, Aug 2025 – Sep 2026 — a team effort, 477 of them mine

02

217

commits to the iOS app, Jun – Sep 2026 — every one of them mine

03

~42k

lines of Swift in the iOS app

04

23

question types rendered natively on iOS

05iOS

Knovus, in your pocket

In June 2026 I started a native iOS client and built it on my own over the summer, design and engineering. It is a SwiftUI app — Swift 6, iOS 26, MVVM with @Observable view models — that calls the same FastAPI backend as the web app and has no backend of its own.

The rule was strict parity: the web frontend is the source of truth for visual design, copy, flows and API contracts, so every iOS screen starts from its web equivalent. Midway through, the whole app moved off iOS 26’s Liquid Glass onto a single Duolingo-style language of opaque, raised surfaces that press down.

Feedback has zero latency. Every deterministic question is graded on the device, so the verdict paints the moment you tap Check while the answer still goes to the server for mastery — repainting only if the server disagrees.

06Roadmap

A roadmap you can walk

Themed section banners, 3D level nodes laid out on a sine curve, progress rings that animate when you return from a session, popovers on tap, and a test-to-jump gate that lets you skip ahead by passing the previous section’s review.

One animated Rive sprout stands beside the single node the backend marks as active. It replaced an older scatter of static mascot images that bore no relation to where you actually were.

The biome scenery exists on iOS too, with the path drawn as a river. It lives in the codebase behind a flag that is currently switched off — an exploration, not the shipping roadmap.

Fig. 15The shipping roadmap: completed nodes in gold, the active node ringed in green, the Rive sprout beside it.

Fig. 16Exploration, flag off: the forest biome, with the Rive sprout idling beside the active node.

Fig. 17Exploration, flag off: a lavender-hills section, its locked path drawn as a stream.

01 / 07
Fig. 18–24Every question type, natively — reading card, multiple choice, hotspot, graph manipulation, sequencing, classify and fill-the-gap. The sample economics lesson was written for these captures.
0706 specs

Engineering the iOS app

  • 01

    One registry for every question type

    A StageRegistry maps 23 wire question types to SwiftUI stages that share one @Observable contract — payload and readiness out; resolved, revealed and frozen state in — with self-managed stages for generative types and a skippable fallback, so an unknown type never dead-ends a session.

  • 02

    Figures computed on the client

    Hotspot and graph questions arrive as semantic data only — axis labels, slope and shift directions for three templates. The app computes the plot geometry, intersections, drag snapping and the green success sweep, ported line for line from the web figure kit.

  • 03

    Instant, optimistic grading

    A local grader and acceptance matcher mirror the backend for deterministic types, so Check paints immediately while the real submission runs behind it. Lesson completion advances synchronously with network retries in the background, which also removed a double-tap race.

  • 04

    Rich content, one web view

    Reading cards render markdown, KaTeX, Mermaid, tables, citations and lecture figures in a WKWebView template with a shared process pool, loading Mermaid and Chart.js only when needed; simple inline math and code stay native.

  • 05

    A holographic card in pure SwiftUI

    CoreMotion roll and pitch drive a smoothed 3D tilt, blend-mode sheen and glare follow the highlight point, a 2.5-turn spin swaps faces at the edge-on crossover, and Canvas draws the sparks, light sweep and counter-rotating guilloché rays.

  • 06

    System integration, the hard way

    A hand-built Share Extension that stages files from any app through an App Group, a native WebSocket client with heartbeats and topic subscriptions for live roadmap updates, and resumable uploads for course materials.

08Prototype

The reward moment

Finishing a session plays an animated Lottie trophy, and streak milestones get a celebration with its own sound. As the next beat, I prototyped a collectible study card.

It floats face-down and tilts with the phone’s gyroscope. Tap it and it spins two and a half turns through a spark burst and a light sweep, then reveals when you studied, a time-of-day line in Sprout’s voice — “Evening settled in. So did you.” — and the course. Five holographic presets, randomised on every appearance.

The card was parked before release: a prototype, not a shipping feature.

Fig. 25The reveal: a 2.5-turn spin, sparks and a light sweep.

Fig. 26Face up: when you studied, a line in Sprout’s voice and the course.

Fig. 27The “dreamy” preset — one of five.