

Also from Kynth Studios


Also from Kynth Studios


Also from Kynth Studios
1234# Development Workflow & Commands56## ESSENTIAL COMMANDS78```bash9npm run dev # Start development server (port 8080)10npm run build # Production build11npm run lint # Run ESLint - MUST pass before shipping12npm run preview # Preview production build locally13npm install # Install dependencies14```1516## CRITICAL WORKFLOW RULES1718### BEFORE SHIPPING:19- Run `npm run lint` and fix all issues20- Test responsive design on mobile/desktop21- Verify accessibility contrast ratios22- Ensure no console errors in browser2324### NEVER SHIP:25- Code with ESLint errors26- Untested responsive layouts27- Poor accessibility (contrast violations)28- Console errors or warnings2930## Framework Stack31- **React 18.3.1** with TypeScript for UI32- **Vite 5.4.1** as build tool with SWC for fast compilation33- **shadcn/ui** component library built on Radix UI primitives34- **Tailwind CSS 3.4.11** for styling with custom design system35- **React Router DOM v6** for client-side routing36- **TanStack Query** for server state management37- **Supabase 2.80.0** for backend, authentication, and database38- **React Hook Form + Zod** for form handling and validation3940## Development Commands4142### Core Development43- `npm run dev` - Start development server on port 808044- `npm run build` - Create production build45- `npm run build:dev` - Create development build46- `npm run lint` - Run ESLint linter47- `npm run preview` - Preview production build locally4849### Package Management50- `npm install` - Install dependencies (or use `bun install` for faster installs)5152## Key Architecture Patterns5354### Import Aliases (configured in vite.config.ts)55- `@/` maps to `./src/`56- `@/components` for components57- `@/lib` for utilities58- `@/hooks` for custom hooks59- `@/integrations/supabase` for Supabase client and types6061### Routing Structure62Routes are defined in `src/App.tsx`. Add new routes above the catch-all `*` route:63```tsx64<Routes>65 <Route path="/" element={<Index />} />66 {/* ADD NEW ROUTES HERE */}67 <Route path="*" element={<NotFound />} />68</Routes>69```7071## Supabase Integration7273### Setup74The boilerplate comes with Supabase pre-configured:75761. **Install Supabase** (already in package.json):77```bash78 npm i @supabase/supabase-js79```80812. **Environment Configuration**:82 Copy `.env.example` to `.env` and add your Supabase credentials:83```bash84 VITE_SUPABASE_URL=https://your-project.supabase.co85 VITE_SUPABASE_PUBLISHABLE_KEY=your-anon-key86```87883. **Client Location**: `src/integrations/supabase/client.ts`894. **Type Definitions**: `src/integrations/supabase/types.ts`9091### Usage Patterns9293**Data Fetching with TanStack Query:**94```typescript95import { useQuery } from "@tanstack/react-query";96import { supabase } from "@/integrations/supabase/client";9798export const usePosts = () => {99 return useQuery({100 queryKey: ['posts'],101 queryFn: async () => {102 const { data, error } = await supabase103 .from('posts')104 .select('*')105 .eq('published', true);106107 if (error) throw error;108 return data;109 }110 });111};112```113114**Mutations:**115```typescript116import { useMutation, useQueryClient } from "@tanstack/react-query";117import { supabase } from "@/integrations/supabase/client";118119export const useCreatePost = () => {120 const queryClient = useQueryClient();121122 return useMutation({123 mutationFn: async (newPost) => {124 const { data, error } = await supabase125 .from('posts')126 .insert(newPost)127 .select()128 .single();129130 if (error) throw error;131 return data;132 },133 onSuccess: () => {134 queryClient.invalidateQueries({ queryKey: ['posts'] });135 }136 });137};138```139140**Authentication:**141```typescript142// Sign up143const { data, error } = await supabase.auth.signUp({144 email: 'user@example.com',145 password: 'securepassword'146});147148// Sign in149const { data, error } = await supabase.auth.signInWithPassword({150 email: 'user@example.com',151 password: 'securepassword'152});153154// Get current user155const { data: { user } } = await supabase.auth.getUser();156157// Sign out158await supabase.auth.signOut();159```160161**Type Safety:**162```typescript163import type { Tables, TablesInsert, TablesUpdate } from "@/integrations/supabase/types";164165// Use generated types166type Post = Tables<'posts'>;167type NewPost = TablesInsert<'posts'>;168type UpdatePost = TablesUpdate<'posts'>;169```170171### Best Practices172- **Always use TanStack Query** for data fetching and mutations173- **Handle errors gracefully** with try-catch blocks or error boundaries174- **Use TypeScript types** from `@/integrations/supabase/types`175- **Enable Row Level Security (RLS)** on all Supabase tables176- **Never expose sensitive credentials** - only use public keys in environment variables177178## Environment Variables Security Warning179**CRITICAL**: This is a **client-side application**. All environment variables with the `VITE_` prefix will be **bundled and exposed** in the final build.180181**Never include sensitive data in environment variables:**182- API secrets, private keys, database passwords, service account credentials183184**Only use environment variables for:**185- Public API URLs, public configuration values, feature flags, public keys (like Supabase anon keys)186187## Configuration Files188189- `vite.config.ts` - Vite configuration with path aliases and port 8080190- `components.json` - shadcn/ui configuration with default style and slate base color191- `tailwind.config.ts` - Tailwind configuration with dark mode support192- `tsconfig.json` - TypeScript configuration with strict mode193194## Testing & Quality195- ESLint configured with React and TypeScript rules196- No test framework currently configured - determine testing approach from codebase if tests are needed197198## Common Patterns199- Use TypeScript interfaces for type safety200- Implement responsive design mobile-first201- Follow React Hook Form patterns with Zod validation for forms202- Use TanStack Query for all Supabase data fetching and mutations203- Import Supabase client from `@/integrations/supabase/client`204- Use generated types from `@/integrations/supabase/types`205- Import UI components from `@/components/ui/`206- Use the toast system via `use-toast` hook for notifications207208## Landing Page Design Guidelines209Before generating the landing page, check the following:210211What is the primary CTA (call-to-action)?212(e.g. submit an idea, request a demo, sign up)213214Should the hero section include a form or another interactive element?215(e.g. submission form, email input, demo request)216217What is the core value proposition or message?218(e.g. competitor analysis, product validation, AI-powered research)219220What visual tone should the landing page have?221(e.g. clean and professional, playful and bold, minimalistic)222223Any preferred colors or gradients?224(e.g. purple/blue gradient, dark theme, pastel tones)225226Should the design include subtle animations or stay static?227Do you want to follow an indie maker aesthetic or a more corporate look?228229## Quality Checklist230231Before completing any code implementation, ensure:232233### ✅ Code Architecture Quality234- [ ] **No monolithic components** - Each component under 300 lines with single responsibility235- [ ] **Logic extraction** - Reusable logic moved to custom hooks, not duplicated236- [ ] **Type safety** - Shared interfaces defined in `lib/types.ts` and reused237- [ ] **Service layer** - API calls abstracted to service functions, not inline238- [ ] **Proper imports** - Using path aliases (@/) and organized import groups239- [ ] **Validation schemas** - Zod schemas shared and reused across components240- [ ] **Component composition** - Complex UI built from smaller, focused components241242### ✅ Design Quality243- [ ] Uses sophisticated color palette (not default grays)244- [ ] Has proper visual hierarchy with varied typography scales245- [ ] Includes subtle animations and micro-interactions246- [ ] Features generous whitespace and purposeful spacing247- [ ] All interactive elements have clear hover/active states248- [ ] **Accessibility standards are met (proper contrast, focus states)**249- [ ] Mobile experience is thoughtfully designed250- [ ] Maintains consistent color story throughout251252### ❌ NEVER Ship Code That:253- Contains components over 300 lines mixing multiple concerns254- Has duplicated logic that could be extracted to hooks255- Uses inline API calls instead of service layer256- Lacks proper TypeScript interfaces257- Has accessibility contrast violations258- Contains copy-pasted code blocks259- Mixes business logic with presentation layer260261## Important Reminders262- Do what has been asked; nothing more, nothing less263- NEVER create files unless they're absolutely necessary for achieving your goal264- ALWAYS prefer editing an existing file to creating a new one265- NEVER proactively create documentation files (*.md) or README files. Only create documentation files if explicitly requested by the User
One repository carrying more than one format is the comparison this product exists for: does anyone actually write different content in each file, or is one a copy of the other?
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| chihebnabil/lovable-boilerplate.github/instructions/architecture.instructions.md · 65 | Copilot instructions | stylearchtypesdatabase+2 | 69/100 | 14 days ago | |
| chihebnabil/lovable-boilerplate.cursor/rules/core.mdc · 65 | Cursor rules | buildlint-formatarchui+1 | 92/100 | 14 days ago | |
| chihebnabil/lovable-boilerplate.cursor/rules/forms.mdc · 65 | Cursor rules | setupstyledo-not | 73/100 | 14 days ago | |
| chihebnabil/lovable-boilerplate.cursor/rules/hooks.mdc · 65 | Cursor rules | styleuido-not | 61/100 | 14 days ago | |
| chihebnabil/lovable-boilerplate.cursor/rules/quality.mdc · 65 | Cursor rules | buildlint-formatstyleui+3 | 88/100 | 14 days ago | |
| chihebnabil/lovable-boilerplate.cursor/rules/services.mdc · 65 | Cursor rules | archtypesdo-not | 73/100 | 14 days ago | |
| chihebnabil/lovable-boilerplate.cursor/rules/typescript.mdc · 65 | Cursor rules | setupstyletypessecurity+2 | 73/100 | 14 days ago | |
| chihebnabil/lovable-boilerplate.github/instructions/components.instructions.md · 65 | Copilot instructions | styleuido-not | 61/100 | 14 days ago | |
| chihebnabil/lovable-boilerplate.github/instructions/design.instructions.md · 65 | Copilot instructions | lint-formatstyleuido-not | 61/100 | 14 days ago | |
| chihebnabil/lovable-boilerplate.github/instructions/global.instructions.md · 65 | Copilot instructions | buildlint-formatstylearch+4 | 100/100 | 14 days ago | |
| chihebnabil/lovable-boilerplate.github/instructions/hooks.instructions.md · 65 | Copilot instructions | styleui | 54/100 | 14 days ago | |
| chihebnabil/lovable-boilerplate.github/instructions/lib.instructions.md · 65 | Copilot instructions | archtypesdo-not | 69/100 | 14 days ago | |
| chihebnabil/lovable-boilerplate.github/instructions/pages.instructions.md · 65 | Copilot instructions | archuido-not | 69/100 | 14 days ago | |
| chihebnabil/lovable-boilerplate.github/instructions/quality.instructions.md · 65 | Copilot instructions | lint-formatdeploymentdo-not | 63/100 | 14 days ago | |
| chihebnabil/lovable-boilerplate.github/instructions/reusable.instructions.md · 65 | Copilot instructions | uido-notagent-behaviour | 32/100 | 14 days ago | |
| chihebnabil/lovable-boilerplate.cursor/rules/components.mdc · 65 | Cursor rules | stylearchuido-not | 65/100 | 14 days ago | |
| chihebnabil/lovable-boilerplate.cursor/rules/design.mdc · 65 | Cursor rules | styleuido-not | 65/100 | 14 days ago | |
| chihebnabil/lovable-boilerplateCLAUDE.md · 65 | CLAUDE.md | setupbuildtestlint-format+5 | 89/100 | 14 days ago |
Same format, overlapping stack, ranked by quality.
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| louislam/uptime-kuma.github/copilot-instructions.md · 90k | Copilot instructions | setupbuildtestlint-format+9 | 100/100 | 14 days ago | |
| chihebnabil/lovable-boilerplate.github/instructions/global.instructions.md · 65 | Copilot instructions | buildlint-formatstylearch+4 | 100/100 | 14 days ago | |
| JCodesMore/ai-website-cloner-template.github/copilot-instructions.md · 32k | Copilot instructions | buildlint-formatstylearch+3 | 97/100 | 7 days ago | |
| bagisto/bagisto.github/copilot-instructions.md · 28k | Copilot instructions | setupbuildteststyle+5 | 97/100 | 14 days ago | |
| thangaram611/second-brain.github/copilot-instructions.md · 0 | Copilot instructions | setupteststylearch+4 | 96/100 | 14 days ago | |
| nerolis-lab/nerolis-lab.github/copilot-instructions.md · 32 | Copilot instructions | setupbuildtestlint-format+11 | 96/100 | 14 days ago | |
| darkmatter/nixmac.github/copilot-instructions.md · 25 | Copilot instructions | setupbuildtestlint-format+8 | 96/100 | 14 days ago | |
| doubts-suplab/eeik-bootstrap.github/instructions/cdk-terraform.instructions.md · 1 | Copilot instructions | teststylearchtypes+2 | 96/100 | today |
A badge carrying the measured quality of the strongest agent config file in this repository, out of 100. It reads from this index every time somebody loads your page, so it changes when the measurement changes and there is nothing to keep up to date. Free, no account, and the value is not something you or we can set by hand.
[](https://rulestack.kynth.studio/configs/chihebnabil-lovable-boilerplate-github-instructions-development-instructions)Would rather not hotlink us? Every badge is also served in shields.io’s endpoint schema, so shields renders the image and your readers never talk to our domain:
Published by Toolproof, the masthead over this index and eight others. The method behind the number is at toolproof.kynth.studio/methodology, and the whole thing is readable as JSON with no key at /api.