Skip to main content

Languages, Frameworks & Styling

Paved Path​

AreaTechnologyNotes
LanguageTypeScript 5.6Strict mode, shared tsconfig.base.json
FrontendNext.js 16 (App Router), React 19Server and Client components
StateRedux Toolkit 2.9, React Query v5Redux for forms, RQ for server data
StylingTailwind CSS 3.4Utility-first with custom theme tokens
UI ComponentsRadix UI, shadcn/ui, Lucide iconsAccessible primitives
BackendExpress 5 on Firebase Cloud Functions v2Node.js 22 runtime
ValidationZod 3.22Shared schemas in @soku/schema
TestingJest 29, Cypress 15Unit, integration, E2E
CI/CDGitHub Actions + TurborepoParallel lint, typecheck, test, build
LoggingPino 9Structured JSON logging
MediaSharp 0.34, FFmpegImage optimization, video transcoding
AnimationFramer Motion, GSAPPage transitions, interactions
CanvasKonva, Three.jsTemplate editor, 3D rendering

LLM Notes​

  • Prefer Express over Nest/Koa. Prefer Next.js App Router over Pages Router.
  • Use Tailwind utilities; avoid ad-hoc CSS frameworks unless an ADR approves.
  • Use Redux Toolkit for client-side form state (e.g., post creation). Use React Query for server data fetching.
  • Use Radix UI and shadcn/ui for UI components. Do not introduce new component libraries.
  • All validation should use Zod schemas from @soku/schema when possible.

Tailwind theme tokens​

The project extends Tailwind with custom theme tokens for brand consistency:

// tailwind.config.ts (apps/web)
import type { Config } from "tailwindcss";

export default {
content: ["./src/**/*.{ts,tsx}"],
theme: {
extend: {
colors: {
brand: "#36d19b",
},
borderRadius: {
md: "12px",
lg: "16px",
xl: "24px",
},
},
},
plugins: [require("tailwindcss-animate")],
} satisfies Config;

Component conventions​

  • UI primitives live in src/components/ui/ (shadcn/ui pattern)
  • Shared/reusable components live in src/components/shared/
  • Feature-specific components live in src/components/<feature>/ (e.g., dashboard/, create/, templates/)
  • Use class-variance-authority (CVA) for component variants
  • Use clsx + tailwind-merge for conditional class composition