Skip to content
⚡ Colophon

Built with VivekUI

This entire website is built with VivekUI, a free React component library with zero runtime dependencies.

There is no Tailwind here, no shadcn, no MUI and no CSS-in-JS. One package install, one stylesheet import in app/layout.tsx, and a handful of CSS custom properties to set the Emerald accent — that is the whole setup. Every chart on the site ships in the same package as every button.

npm i @the_viveksingh/vivek-ui

Template repository: intellectwithvivek/SkillForge · MIT licensed · the credit in the footer is removable, though a star is appreciated.

Rings, bars, lines and sparks — one package

The charts are not a separate dependency and not a wrapper around Recharts. They are inline SVG in the same install, at a second import path, and each one renders a hidden data table so the numbers reach a screen reader.

ProgressRing

Completion on every enrolled card — and every bullet glyph on the site

PieChart

“What’s inside” content mix on each course page

LineChart

Learning minutes over the last eight weeks

Sparkline

Thirty-day streak beside the counter

Why the bullets are rings
Every bullet glyph on this site is a ProgressRing at 16 pixels — the same component that reports 72% on a dashboard card, shrunk to punctuation. Reusing one primitive for both is what makes the identity hold together.

Every section, and the component behind it

Each name links straight to its documentation page, props table included.

SkillForge sections mapped to the VivekUI components that render them
AreaComponentWhat it does here
Site headerNavbarSticky bar, mobile sheet, brand and actions
Site headerComboboxCourse search that navigates on select
Site headerThemeToggleLight / dark / system, cycling
Site headerBadgeThe “Built with VivekUI” chip
EverywhereThemeProviderTheme state, storage and the anti-flash script
EverywhereSectionEvery page band, with its own header slot
EverywhereContainerWidth cap and responsive gutter
EverywhereStack / FlexToken-gapped layout, no utility classes
EverywhereGridAuto-fitting card grids at every width
EverywhereHeadingLevel and size set separately, so the outline stays correct
EverywhereTextBody copy, tones and line clamping
HomepageStatsLearners, courses, completion rate
HomepageAnimatedCounterCounts up on view; renders the final value on the server
HomepageStepperThe four-step “how it works” flow
HomepageTimelineInstructor credentials
HomepageTestimonialsLearner quotes as figure/blockquote
HomepagePricingFree / Pro / Team, with a yearly Switch
HomepageSwitchMonthly ↔ yearly billing
HomepageFAQNative <details>; feeds the FAQPage schema
HomepageNewsletterEmail capture with a real busy state
HomepageProseThe instructor biography
CatalogueSelectCategory and level filters
CatalogueSliderMaximum price
CatalogueRatingMinimum rating — a real radio group
CatalogueFieldLabel, hint and ARIA wiring for each filter
CataloguePaginationSix courses a page
CatalogueEmptyStateWhen no course matches the filters
Course cardCardHeader / body / footer slots
Course cardAvatarInstructor face, with initials fallback
Course pageBreadcrumbTrail, mirrored in BreadcrumbList JSON-LD
Course pageAspectRatioPreview frame that cannot shift layout
Course pageIconButtonPlay control — aria-label required at the type level
Course pageModalDemo player: focus trap, scroll lock, inert background
Course pageFeatureGrid“What you’ll learn”
Course pageAccordionCurriculum sections, multiple open at once
Course pageProgressPer-star review distribution
Course pageRelativeTimeReview dates, via Intl — no date library
Course pageDividerLabelled rules in the enrol panel
Course pageToastEnrol confirmation, announced in a live region
DashboardSidebarCollapsible navigation rail
DashboardAlertThe “this is a template” note
DashboardEmptyStateNo certificates yet
Built withTableThis table
Built withCopyButtonThe install command
Built withCodeInline and block code
FooterFooterLink columns inside one named nav

What that bought us

  • No build configuration. No Tailwind, no PostCSS plugin, no component CLI, no generated source in the repository.
  • Server components by default. 49 of the 91 components carry no 'use client', so most of this site is static HTML.
  • Accessibility that was already there. Focus traps, live regions and keyboard models ship with the components rather than being added afterwards.
  • Themeable from one block of CSS. The Emerald accent on this site is nine custom properties in globals.css.
  • Overrides that do not fight. Every library selector is wrapped in :where(), so a single flat class of ours wins — there is no !important anywhere in this project.
0runtime deps

91 components · 6 charts · 47.6 kB for the entire library, brotlied, with React excluded. Verify it yourself: npm ls --omit=dev @the_viveksingh/vivek-ui

View on npm

Back to the homepage, or browse the course catalogue. Built by Vivek Kumar Singh.