All CheapStack starter kits are written in TypeScript with strict mode enabled. Every file has typed parameters and return values. All components export typed interfaces for props. Database schemas include typed columns. API routes have typed request handlers. The tsconfig.json includes strict: true, noUncheckedIndexedAccess, and path aliases (@/ for src/).
// All components export typed interfaces
interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
variant?: "primary" | "secondary" | "ghost";
size?: "sm" | "md" | "lg";
}
export function Button({ variant = "primary", size = "md", ...props }: ButtonProps) {
return <button className={cn(styles[variant], sizes[size])} {...props} />;
}