Documentation Index
Fetch the complete documentation index at: https://mintlify.com/0xchriswilder/journey/llms.txt
Use this file to discover all available pages before exploring further.
Overview
Lesson types define individual learning units with sections, objectives, quizzes, and code examples.
Types
Lesson
Represents a single lesson within a week.
Unique identifier for the lesson (e.g., “welcome-to-fhevm”, “environment-setup”)
Human-readable lesson titleExample: “Your First FHEVM Contract”
Brief summary of what the lesson coversExample: “Build an EncryptedCounter contract from scratch with encrypted state variables”
Expected time to complete the lesson in minutes
Lucide icon name for UI displayExample: “Code”, “Shield”, “Settings”, “Globe”
Array of content sections within the lesson
Optional quiz to test understanding
Teaching tips and common pitfalls for instructorsExample:[
"This is the first hands-on coding lesson. Have students type along.",
"Common mistake: forgetting FHE.allowThis() after modifying encrypted state."
]
Optional starter and solution code for hands-on exercises
Specific learning objectives for this lessonExample:[
"Create a Solidity contract that imports and uses FHE types",
"Implement functions that accept encrypted inputs"
]
Section
A content block within a lesson (text, code, video, interactive, etc.).
Unique identifier for the section
type
'text' | 'code' | 'interactive' | 'video' | 'diagram' | 'quiz'
required
The type of content this section contains
Array of paragraphs or content blocksExample:[
"Fully Homomorphic Encryption (FHE) allows computation on encrypted data.",
"Think of it as performing math on a locked safe without opening it."
]
Code example (present when type is ‘code’)
Helpful tips or best practicesExample:[
"FHE.select() is the encrypted equivalent of the ternary operator",
"You cannot use if/else with encrypted conditions"
]
Key takeaways from this section
YouTube video ID (present when type is ‘video’)
Mermaid diagram code (present when type is ‘diagram’)
Reference to an interactive component (present when type is ‘interactive’)Example: “connect-wallet”, “fhe-basics-contracts”
CodeSnippet
Represents a code example with syntax highlighting.
Programming language for syntax highlightingExample: “solidity”, “typescript”, “bash”, “javascript”
Suggested filename for the codeExample: “EncryptedCounter.sol”, “deploy.ts”
Brief description of what the code does
Type Definitions
export interface Lesson {
id: string;
title: string;
description: string;
estimatedMinutes: number;
icon: string; // lucide icon name
sections: Section[];
quiz?: Quiz;
instructorNotes: string[];
codeTemplate?: CodeTemplate;
objectives: string[];
}
export interface Section {
id: string;
title: string;
type: 'text' | 'code' | 'interactive' | 'video' | 'diagram' | 'quiz';
content: string[];
code?: CodeSnippet;
tips?: string[];
keyPoints?: string[];
videoId?: string;
diagramCode?: string;
componentId?: string;
}
export interface CodeSnippet {
language: string;
code: string;
filename?: string;
description?: string;
}
export interface CodeTemplate {
starterCode: CodeSnippet;
solutionCode: CodeSnippet;
description: string;
}
Usage Example
import { curriculum } from '@/data/curriculum';
// Access first lesson of first week
const firstLesson = curriculum.weeks[0].lessons[0];
console.log(firstLesson.title); // "Welcome to FHEVM"
console.log(firstLesson.estimatedMinutes); // 30
console.log(firstLesson.icon); // "Home"
// Iterate through sections
firstLesson.sections.forEach((section) => {
console.log(`Section: ${section.title}`);
console.log(`Type: ${section.type}`);
if (section.code) {
console.log(`Language: ${section.code.language}`);
console.log(`File: ${section.code.filename}`);
}
if (section.type === 'video' && section.videoId) {
console.log(`YouTube: https://youtube.com/watch?v=${section.videoId}`);
}
});
// Access code template if available
if (firstLesson.codeTemplate) {
console.log('Starter:', firstLesson.codeTemplate.starterCode.code);
console.log('Solution:', firstLesson.codeTemplate.solutionCode.code);
}