Welcome to the Lab68 Development Platform! We're thrilled you want to contribute. This living document outlines our architecture, design principles, and how to successfully merge your code into this high-performance collaborative environment.
Before you dive in, here is a quick overview of our cutting-edge stack:
- Framework: Next.js 16 (App Router &
proxy.ts) - Language: TypeScript 5
- Package Manager: pnpm 8+
- Database & Auth: Supabase (PostgreSQL with RLS)
- Styling: Tailwind CSS V4 + Pre-built UI Primitives (
components/ui) - Aesthetic: High-Contrast Cyberpunk / Brutalist Dark Mode
Clone the repository and install the dependencies:
git clone https://github.com/lab68dev/lab68dev-platform.git
cd lab68dev-platform
pnpm installWe utilize Instant Passwordless Authentication. This means you must connect the app to a Supabase project.
- Go to your Supabase Dashboard -> Project Settings -> API.
- Form a
.env.localfile at the root:
NEXT_PUBLIC_SUPABASE_URL=your_project_url_here
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_anon_key_here- Boot the development server:
pnpm devNote: Our authentication automatically deterministically secures users based on their email. Do NOT introduce or submit PRs containing
bcryptor standard password-hashing logic.
To maintain our premium, developer-centric aesthetic, we employ a strict dual-font system natively enforced in app/layout.tsx:
- IBM Plex Sans (
font-sans): MUST be used for all body text, paragraphs, descriptions, and prose. - JetBrains Mono (
font-mono): MUST be used for headings, numerics, code blocks, navigation elements, and dashboard statistics.
When building lists, tables, or sections that fetch data, you MUST account for empty data arrays.
Do not use plain text No results found. Always import and utilize the <EmptyState /> component from components/ui/empty-state.tsx.
import { EmptyState } from "@/components/ui/empty-state"
import { Sparkles } from "lucide-react"
<EmptyState
icon={Sparkles}
title="No data found"
description="Your new data will appear right here."
/>Next.js 16 deprecated middleware.ts. All middleware logic is now co-located and routed through proxy.ts. If you need to intercept routes or manipulate headers, modify proxy.ts.
- Branch Naming: Prefix branches cleanly:
feat/cool-widget,fix/navbar-contrast, orchore/deps-update. - Commit Convention: We enforce Conventional Commits. E.g.
feat(dashboard): add weather widget. - Lint & Test: Ensure
pnpm lintandpnpm buildexhibit zero warnings. - Draft PR: Open a PR against
main. It is highly encouraged to attach screenshots of UI changes.
Thank you for building Lab68dev with us! 🚀