CHAFIKTECH turns a video idea (plus an optional reference video) into professional, scene-by-scene image & video prompts — ready for Veo, Sora, Runway, Kling and Midjourney — with dialogue in the viewer’s chosen language.
Branded workspace in the spirit of chat.z.ai: a sidebar with generation history, a centered greeting with a single composer, and a thread view where each scene arrives as a copyable card.
#270c00 / #ef780d / #000000, Montserrat everywhere.| Domain | Purpose |
|---|---|
chafiktech.com |
Marketing site (planned — later) |
prompt.chafiktech.com |
This app |
blog.chafiktech.com |
Blog (planned — later) |
Deployment instructions for Vercel and VPS (Nginx + PM2 + Certbot), including DNS records, live in DEPLOYMENT.md.
npm install
npx prisma generate && npx prisma db push
cp .env.example .env # defaults work out of the box
bun scripts/seed.ts # or: npx tsx scripts/seed.ts
npm run dev # http://localhost:3000
Seeded admin: admin@chafiktech.com / ChafikTech@2026 (change it immediately in production — Settings → Account).
| Area | Where |
|---|---|
| Workspace (history, composer, thread, exports, share) | src/components/chafiktech/workspace.tsx |
| Composer (video attach, scenes popover, language select) | src/components/chafiktech/composer.tsx |
| Scene cards (auto-RTL dialogue, per-field copy) | src/components/chafiktech/scene-card.tsx |
| Auth (email + Google, reset, verify) | src/components/chafiktech/auth-view.tsx + src/app/api/auth/* |
| Pricing & Stripe | src/components/chafiktech/pricing-view.tsx, src/app/api/billing/*, src/app/api/stripe/webhook |
| Admin panel (6 tabs) | src/components/chafiktech/admin-view.tsx + src/app/api/admin/* |
| Gemini pipeline (Files API, rotation, validation) | src/lib/gemini.ts, src/lib/pipeline.ts |
| Quota, settings/flags, sessions | src/lib/quota.ts, src/lib/settings.ts, src/lib/auth.ts |
POST /api/auth/{signup,signin,signout} · GET /api/auth/me ·
POST /api/auth/{forgot,reset,verify,resend} · GET /api/auth/google[/callback]GET|POST /api/projects · GET|PATCH|DELETE /api/projects/[id] ·
POST /api/projects/[id]/sharePOST|DELETE /api/upload (signature-sniffed MP4/MOV/WebM)GET /api/plans · POST /api/billing/{checkout,portal} ·
POST /api/stripe/webhook (idempotent)GET /api/admin/{stats,plans,keys,languages,users,settings} (+ mutations)GET /api/share/[token] — public read-only shareNext.js 16 (App Router) · TypeScript · Tailwind CSS 4 + shadcn/ui ·
Prisma + SQLite · next-themes · Sonner · Stripe REST · Gemini API.
Logo: drop your real file at public/brand-logo.png — it replaces the
placeholder film-reel mark everywhere automatically.