Documentation
Documentation
Introduction

Getting Started

Getting started
Getting StartedInstallationQuick StartProject Structure

Configuration

Configuration
ConfigurationEnvironment ConfigurationEdge ConfigDatabaseAuth SecretStripeFirebaseStorageGoogle Maps And Cloud Service AccountOAuth ProvidersEmail DeliverySentryFeature Flags

Architecture

Architecture
Architecture OverviewTech StackoRPC MiddlewareDesign Principles

Patterns

Patterns
Code Patterns & ConventionsFeature ModulesError HandlingType Safety

Database

Database
DatabaseSetupSchema DefinitionDatabase OperationsMigrationsCaching
Data Tables

API

oRPCProceduresRoutersoRPC Proxy Setup
APIsOpenAPIREST Endpoints

Auth & Access

AuthenticationConfigurationOAuth ProvidersRolesSession Management
AuthorizationUser RolesPermissions

Routing & i18n

RoutingDeclarative RoutingNavigation
InternationalizationTranslationsLocale Routing

Components & UI

ComponentsButtonsFormsNavigationDialogs
StylesTailwind CSSThemingTypography

Storage

Storage
StorageConfigurationUsageBuckets
Stripe Billing

Extra

Caching

Templates

Templates
Template GuidesCreate New FeatureCreate New PageCreate Database TableCreate oRPC RouterAdd Translations

Development

Development
DevelopmentCommandsAI AgentsBest Practices
Pulling Updates

Components

UI components and patterns

This project uses Shadcn UI built on top of Tailwind CSS for a consistent, accessible component library.

Component Organization

Shared components are located in src/components/:

DirectoryPurpose
src/components/uiBase Shadcn components (Button, Input)
src/components/navigationLayout components, headers, breadcrumbs
src/components/extExtended/custom components

Quick Links

Buttons

Button and ButtonLink components with variants

Forms

React Hook Form + Zod validation patterns

Dialogs

usePrompt() pattern for modals and confirmations

Navigation

Header, sidebar, and navigation components

Icons

Always use the <Icon /> component instead of importing directly from Lucide.

import { Icon } from "@/lib/icons";

<Icon iconKey="user" className="text-primary" />
<Icon iconKey="spinner" />  {/* Automatically animates */}

Benefits

  • Extended sources - Access Lucide, social, payment, and custom SVG icons
  • Consistent styling - Auto-applies strokeWidth={2} and size-4 shrink-0
  • Auto-animation - Spinner icon automatically spins

Icon Modules

ModuleDescription
lucide.tsCore application icons from Lucide
social.tsxSocial media SVG icons
payment.tsxPayment provider icons
custom.tsxCustom SVG icons (borders, etc.)

Never Import Directly

Avoid importing from lucide-react directly. Always use the Icon component for consistency.

Placeholder Images

For development and prototyping:

// External placeholder (dynamic sizes)
<Image src="https://placehold.co/400x400" alt="" />

// Local placeholder
<Image src="/assets/placeholder.jpg" alt="" />
SourceUse Case
https://placehold.co/WxHDynamic sizing
/assets/placeholder.jpgLocal fallback, faster

Next Steps

Explore specific component documentation to learn about variants, props, and usage patterns

On this page

Component Organization
Quick Links
Icons
Benefits
Icon Modules
Placeholder Images
Next Steps