Customization
Last updated on 2026-05-31
The LMS Starter Kit is designed to be customized for your learning platform. All components use design tokens and Tailwind CSS utilities, making brand adaptation straightforward.
Changing Colors
Update CSS custom properties in app/globals.css:
:root {
--primary: oklch(0.55 0.2 250);
--primary-foreground: oklch(0.98 0 0);
--accent: oklch(0.6 0.15 150);
--accent-foreground: oklch(0.98 0 0);
}
All components automatically inherit the new colors — buttons, badges, links, charts, progress bars, and focus rings.
Changing Typography
Configure fonts in app/layout.tsx:
import { Inter, DM_Sans, JetBrains_Mono } from "next/font/google";
const inter = Inter({ subsets: ["latin"], variable: "--font-sans" });
const dmSans = DM_Sans({ subsets: ["latin"], variable: "--font-heading" });
Swap these for any Google Font or local font files. The CSS variables --font-sans, --font-heading, and --font-mono control body text, headings, and code respectively.
Replacing Seed Data
All mock data lives in data/seed.ts. Replace it with your data source:
Static data (SSG/ISR)
import { getCourses } from "@/lib/api"
export default async function CoursesPage() {
const courses = await getCourses()
return <CourseGrid courses={courses} />
}
CMS integration
Replace seed data imports with your CMS client:
import { sanityClient } from "@/lib/sanity"
const courses = await sanityClient.fetch(`*[_type == "course"]`)
Database
import { db } from "@/lib/db"
const courses = await db.course.findMany({ include: { instructor: true } })
Extending Components
Use the cn() utility to add custom classes:
import { Button } from "@/components/ui/button"
<Button className="rounded-full shadow-lg" size="lg">
Enroll Now
</Button>
Adding Component Variants
Components use class-variance-authority:
const buttonVariants = cva("...", {
variants: {
variant: {
default: "...",
brand: "bg-brand-500 text-white hover:bg-brand-600",
},
},
})
Customizing the Sidebar
Edit components/layout/app-sidebar.tsx to:
- Add or remove navigation links
- Change the logo
- Add new sections for custom features
- Modify the user menu
Customizing the Lesson Player
The lesson player at app/(student)/lessons/[id]/page.tsx can be customized to:
- Integrate a real video player (Mux, Vimeo, YouTube embed)
- Add note-taking alongside the video
- Track watch progress and send to your API
- Add playback speed controls
Adding New Course Fields
- Update the
Courseinterface intypes/index.ts - Add the field to courses in
data/seed.ts - Display it in
CourseCardor the course detail page
Adding New Admin Pages
Follow the existing pattern:
- Create a new page in
app/(admin)/admin/your-page/page.tsx - Add a navigation link in
components/layout/app-sidebar.tsx - Create any needed composites in
components/shared/
Removing Unused Features
Delete directories you don't need:
- Don't need discussions? Delete
app/(student)/discussions/ - Don't need achievements? Delete
app/(student)/achievements/ - Don't need live sessions? Delete
app/(student)/live-sessions/ - Don't need study groups? Delete
app/(student)/study-groups/ - Run
pnpm buildto verify no broken imports
Using shadcn/ui CLI
Add new components alongside the kit:
npx shadcn@latest add <component-name>
Components install to components/ui/ and integrate seamlessly with the existing design tokens.