Un Starter Kit Next.js 15 production-ready, extras dintr-o aplicație reală. Include editor vizual Puck, autentificare Supabase, CMS complet și integrare AI Gemini.
- Drag & Drop Page Builder - Construiește pagini vizual fără cod
- 50+ Componente - Layout, conținut, formulare, design liber
- Zones Nested - Componente cu zone editabile în interior
- AI Generation - Generează pagini cu Google Gemini AI
- Rich Text Editor - TipTap cu formatare avansată
- Media Picker - Integrare cu Supabase Storage
- Supabase Auth - Autentificare SSR cu Next.js 15
- Roluri - ADMIN și EDITOR cu permisiuni diferite
- Demo Mode - Funcționează fără configurare (zero-config)
- Articole - Blog cu categorii, taguri, SEO
- Proiecte - Portofoliu de proiecte
- Pagini - Pagini dinamice cu Puck Editor
- Media Library - Gestionare fișiere încărcate
- Hero Slider - Carusel homepage editabil
- Google Gemini - Generare conținut cu fallback chain
- Text Processing - Formatare, corectură, expandare
- Page Generation - Generează pagini complete din prompt
- Multi-model - gemini-2.5-flash, gemini-2.0-flash, gemini-3-flash-preview
| Categoria | Tehnologie |
|---|---|
| Framework | Next.js 15 (App Router) |
| UI | React 19.2, Tailwind CSS 4 |
| Database | PostgreSQL + Drizzle ORM |
| Auth | Supabase Auth (SSR) |
| Storage | Supabase Storage |
| Editor | Puck Visual Editor |
| Rich Text | TipTap |
| AI | Google Gemini (generative-ai) |
| Forms | React Hook Form + Zod |
| Nodemailer |
- Node.js 18+
- pnpm (recomandat) sau npm/yarn
- PostgreSQL (opțional - funcționează în demo mode)
- Cont Supabase (opțional)
git clone <repository-url>
cd starter-kit
pnpm installCopiază .env.example în .env.local:
cp .env.example .env.localEditează .env.local cu valorile tale:
# Database (opțional - funcționează și fără)
DATABASE_URL="postgresql://postgres:password@localhost:5432/starter_kit"
# Supabase (opțional - funcționează și fără)
NEXT_PUBLIC_SUPABASE_URL="https://your-project.supabase.co"
NEXT_PUBLIC_SUPABASE_ANON_KEY="your-anon-key"
SUPABASE_SERVICE_ROLE_KEY="your-service-role-key"
# Google Gemini AI (opțional)
GOOGLE_AI_API_KEY="your-google-ai-api-key"
# SMTP Email (opțional)
SMTP_HOST="smtp.gmail.com"
SMTP_PORT=587
SMTP_USER="your-email@gmail.com"
SMTP_PASS="your-app-password"
# Site Metadata
NEXT_PUBLIC_SITE_URL="http://localhost:3000"
NEXT_PUBLIC_SITE_NAME="My Starter Kit"
NEXT_PUBLIC_SITE_TITLE="My Starter Kit"
NEXT_PUBLIC_SITE_DESCRIPTION="A Next.js 15 Starter Kit with Puck Editor, Supabase, and AI"
NEXT_PUBLIC_SITE_LOCALE="en_US"Dacă ai configurat DATABASE_URL:
# Creare tabele (Drizzle)
npx drizzle-kit push
# Opțional: Deschide Drizzle Studio
npx drizzle-kit studiopnpm devVizitează http://localhost:3000.
# Dezvoltare
pnpm dev # Pornește serverul de dezvoltare
# Producție
pnpm build # Build pentru producție
pnpm start # Pornește serverul de producție
# Database
npx drizzle-kit push # Push schema în DB
npx drizzle-kit generate # Generează migrații
npx drizzle-kit studio # Deschide Drizzle Studio
# Electron Desktop
pnpm electron:prep # Pregătește build pentru Electron
pnpm dist:win # Build Windows
pnpm dist:linux # Build Linuxsrc/
├── app/ # Next.js App Router
│ ├── (public)/ # Rute publice
│ │ ├── [slug]/ # Pagini dinamice Puck
│ │ ├── articole/ # Blog
│ │ └── proiecte/ # Proiecte
│ ├── admin/ # Admin Dashboard
│ │ ├── editor/ # Puck Visual Editor
│ │ ├── articole/ # Management articole
│ │ ├── proiecte/ # Management proiecte
│ │ ├── media/ # Media Library
│ │ └── setari/ # Setări site
│ ├── api/ # API Routes
│ │ ├── auth/ # Autentificare
│ │ ├── puck/ # AI Generation
│ │ ├── pages/ # Puck pages CRUD
│ │ ├── posts/ # CMS posts CRUD
│ │ └── media/ # Media upload
│ └── layout.tsx # Root layout
├── components/ # Componente React
│ ├── admin/ # Admin components
│ ├── county-forms/ # Formulare specifice județe
│ └── ui/ # Shadcn UI components
├── db/ # Database
│ ├── schema.ts # Drizzle schema
│ └── index.ts # Database client (zero-config)
├── lib/ # Utilitare
│ ├── auth.ts # Auth helpers (demo mode)
│ ├── api-auth.ts # API auth middleware
│ ├── gemini.ts # Gemini AI client
│ ├── mailer.ts # Email sending
│ ├── pdf-parser.ts # PDF parsing
│ ├── puck/ # Puck config & components
│ │ ├── config.tsx # Component registry
│ │ ├── components/ # 50+ Puck components
│ │ └── ai/ # AI prompts & parser
│ └── supabase/ # Supabase clients
└── middleware.ts # Next.js middleware
Aplicația funcționează fără nicio configurare:
- Pornește
pnpm dev - Vei avea acces automat ca admin demo
- Util pentru testare și dezvoltare UI
- Configurează Supabase în
.env.local - Accesează
/loginși autentifică-te - Prima autentificare creează automat userul în DB cu rol ADMIN
- Navighează în
/admin/editor - Alege o pagină existentă sau creează una nouă
- Trage componente din sidebar în canvas
- Editează proprietățile în panel-ul din dreapta
- Salvează cu butonul "Publică"
- În editorul Puck, apasă butonul "Generează cu AI"
- Scrie un prompt (ex: "O pagină despre voluntariat")
- Alege tipul paginii
- AI-ul va genera structura paginii automat
- Navighează în
/admin/articole - Apasă "Articol Nou"
- Completează titlu, conținut, categorii
- Setează statusul pe "Publicat"
- Articolul apare pe
/articole/[slug]
- Variabilele de mediu nu trebuie commitate
.env.localeste în.gitignore- Supabase RLS activează Row Level Security pentru producție
- API Routes protejate cu
requireApiAuth() - Server Components protejate cu
requireAuth()
# Instalează Vercel CLI
npm i -g vercel
# Deploy
vercelSetează variabilele de mediu în dashboard-ul Vercel.
FROM node:20-alpine
WORKDIR /app
COPY package.json pnpm-lock.yaml ./
RUN npm install -g pnpm && pnpm install
COPY . .
RUN pnpm build
EXPOSE 3000
CMD ["pnpm", "start"]# Build pentru Windows
pnpm dist:win
# Build pentru Linux
pnpm dist:linuxAplicația include un Demo Mode care funcționează fără configurare:
- DB Proxy:
src/db/index.tsreturnează un proxy care simulează răspunsuri DB - Mock Admin:
src/lib/auth.tsreturnează un user admin demo - Graceful Degradation: API-urile funcționează cu date mock
Acesta este util pentru:
- Dezvoltare rapidă fără setup DB
- Testare UI/UX
- Demo-uri client
| Tabel | Descriere |
|---|---|
users |
Utilizatori (ADMIN/EDITOR) |
posts |
Conținut CMS (articole, proiecte) |
pages |
Pagini Puck (JSONB) |
media_files |
Fișiere încărcate |
site_settings |
Setări site (key-value) |
contact_messages |
Mesaje contact |
hero_slides |
Slider homepage |
activity_logs |
Audit trail |
- Fork repository
- Creează branch pentru feature (
git checkout -b feature/AmazingFeature) - Commit (
git commit -m 'Add AmazingFeature') - Push (
git push origin feature/AmazingFeature) - Deschide Pull Request
Acest proiect este licențiat sub MIT License.
- Puck Editor - Visual page builder for React
- Supabase - Backend as a Service
- Drizzle ORM - TypeScript ORM
- shadcn/ui - UI components
- Google Gemini - AI models
Pentru întrebări sau suport, deschide un issue pe GitHub.