ZapDev supports five modern web frameworks, each with pre-installed dependencies, optimized configurations, and framework-specific AI prompts. The AI automatically selects the best framework for your needs, or you can specify your preference.
Next.js
Default FrameworkFull-stack React with SSR/SSG
Angular
Enterprise AppsTypeScript-first with Material Design
The AI uses intelligent heuristics to choose the optimal framework:
// src/prompts/framework-selector.tsexport const FRAMEWORK_SELECTOR_PROMPT = `You are a framework selection expert.Selection Guidelines:- If user explicitly mentions a framework, choose that- If ambiguous, default to **nextjs** (most versatile)- Enterprise/complex = Angular- Performance emphasis = Svelte- Material Design = Angular or Vue- Vercel/Linear aesthetic = Next.js`;
// All Shadcn components pre-installedimport { Button } from "@/components/ui/button"import { Card } from "@/components/ui/card"import { Dialog } from "@/components/ui/dialog"// ... and 47 more
AI Prompt Highlights:
// src/prompts/nextjs.tsCritical Rules:1. Add "use client" to TOP of app/page.tsx and any files using React hooks2. ALL Shadcn components are pre-installed - just import and use3. Import utility: import { cn } from "@/lib/utils"4. Before using a Shadcn component, use readFiles to inspect its API5. Build all surfaces with Shadcn primitives6. Compose UIs: Tailwind on top of Shadcn, no bare HTML elements
// Import Material modulesimport { MatButtonModule } from '@angular/material/button';import { MatCardModule } from '@angular/material/card';import { MatIconModule } from '@angular/material/icon';
AI Prompt Highlights:
// src/prompts/angular.tsAngular Specific Rules:- Use standalone components (standalone: true)- Import CommonModule for *ngIf, *ngFor directives- Import ReactiveFormsModule or FormsModule for forms- Use Angular Material components from '@angular/material/*'- Use signals for reactive state management where appropriate- Use RxJS operators for async operations
Component Structure:
import { Component } from '@angular/core';import { CommonModule } from '@angular/common';import { MatButtonModule } from '@angular/material/button';@Component({ selector: 'app-dashboard', standalone: true, imports: [CommonModule, MatButtonModule], template: ` <div class="p-4"> <mat-button color="primary">Click Me</mat-button> </div> `, styles: `/* Tailwind classes or custom CSS */`})export class DashboardComponent { // Use signals for reactive state count = signal(0); increment() { this.count.update(c => c + 1); }}
// src/prompts/react.tsReact Specific Rules:- Use functional components with hooks- Import React hooks from 'react' (useState, useEffect, etc.)- Use Chakra UI components from '@chakra-ui/react'- Use Chakra's built-in styling props (bg, p, m, etc.)- Leverage Chakra's theming system
// src/prompts/vue.tsVue Specific Rules:- Use Composition API with <script setup> syntax- Import Vue reactivity from 'vue' (ref, computed, watch, etc.)- Use Vuetify components from 'vuetify/components'- Use proper v-bind, v-on, v-model directives- Implement proper component lifecycle hooks
// src/prompts/svelte.tsSvelte Specific Rules:- Use Svelte's reactive declarations with $:- Use DaisyUI classes directly in markup (btn, card, modal, etc.)- Use SvelteKit's load functions for data fetching- Implement proper lifecycle (onMount, onDestroy)- Use Svelte stores for global state
User: "Convert this to Angular"AI: *Regenerates using Angular template with Material Design*User: "Rebuild with Svelte for performance"AI: *Recreates using SvelteKit with DaisyUI*
Switching frameworks creates a new sandbox with the target framework’s template. Your previous code is not automatically migrated.