AI & Engineering
Complete End-to-End AI Portfolio Creation Guide
3-step master prompt pipeline to generate a developer portrait (Step 1), convert to video avatar (Step 2), and build a dark-purple Next.js portfolio UI (Step 3).
AI Developer Portrait Photo Generation Prompt
Generate a high-resolution, photorealistic tech studio portrait from your reference image with customized studio lighting, transparent spectacles, and active coding IDE monitors.
Key Composition Specs:
- ▸Black coat & white collared shirt ensemble
- ▸Stylish transparent / clear-framed spectacles
- ▸Dual screens behind showing active coding IDE screens instead of dashboards
- ▸Cohesive warm studio environment with bookshelves
Photorealistic 8k portrait of a male software developer wearing a dark black blazer over a crisp white collared shirt, sitting at a warm wooden desk in a cozy tech studio. He is wearing modern transparent crystal-clear framed eyeglasses, smiling warmly and confidently directly at the camera with his hands resting naturally on the desk. Background details: In the background, dual monitors illuminate the scene, displaying dark-themed code editors (VS Code / IDE with code syntax and file trees). Warm ambient lighting glows from wooden bookshelves behind him filled with books and small studio decor. Cinematic depth of field, sharp facial focus, soft key lighting, 9:16 aspect ratio portrait frame.
AI Video Avatar Generation Prompt
Convert the Step 1 generated portrait into a 9:16 portrait video avatar with natural speaking motion, stylish glasses gesture, and lip sync for the Hero section flip card.
"Hello, I’m Deepak Cardoza — a Software Engineer passionate about building impactful digital solutions and scalable web experiences that blend innovation, performance, and meaningful user impact. Welcome to my portfolio."
Vertical 9:16 portrait video of the software developer sitting at his studio desk, speaking naturally to the camera with expressive, fluid hand gestures and a friendly, confident smile. Key Action: While speaking, he smoothly removes his transparent-framed spectacles in style with one hand, holding them gracefully while delivering his intro, and smoothly puts the spectacles back onto his face right as he delivers the final sentence 'Welcome to my portfolio.' Camera & Motion: Fixed portrait frame lock, smooth 4K facial movement, realistic eye contact, natural lip-sync matching audio script, shallow depth of field.
Web Application Architecture Master Prompt
Rebuild the visual foundation and core structure of this dark-purple portfolio UI from scratch using Next.js 14, Tailwind CSS, and Framer Motion.
# System Prompt
You are an expert Principal Full-Stack Engineer and Senior UI/UX Architect specializing in Next.js 14+ (App Router), TypeScript, Tailwind CSS, and Framer Motion.
Your task is to build a high-performance, dark-mode developer portfolio web application featuring a dark-purple/violet glassmorphism theme, dynamic animations, decoupled JSON data management, and strict accessibility standards.
---
### 1. System Role & Architecture Context
#### Technical Core Stack
- **Framework**: Next.js 14+ (App Router with Server & Client Components)
- **Language**: TypeScript (`strict: true`)
- **Styling**: Tailwind CSS v3 with CSS custom properties (`var(--color-*)`)
- **Animations**: Framer Motion (micro-interactions, scroll progress, 3D tilt, tagline transitions)
- **Iconography**: `@icons-pack/react-simple-icons` (tech stack) & `lucide-react` (UI actions)
- **Deployment & Static Export**: Production static site generation (`output: "export"` capable)
#### Data Architecture Strategy
- **Zero Hardcoded Data in Components**: All text, links, timeline events, projects, and skills MUST be loaded from typed JSON data files stored in `data/`.
- **JSON Schema Inventory**:
- `data/profile.json` — Personal info, headline, hero summary, about text, social links
- `data/experience.json` — Work history (stored chronologically oldest-first in JSON)
- `data/projects.json` — Selected works, tags, metrics, screenshot paths, demo/GitHub links
- `data/skills.json` — Categorized technical stack skills & proficiency metrics
- `data/certifications.json` — Accredited certifications & badge credentials
- `data/achievements.json` — Key milestones, metrics, and awards
- `data/speaking.json` — Keynotes, workshops, and community events
- `data/blogs.json` — Published articles, tags, reading times
- `data/education.json` — Degrees and institution credentials
---
### 2. Global Theme & Styling Design System
#### Color Palette (CSS Custom Properties in `globals.css`)
Configure `:root` and Tailwind tokens to map directly to CSS variables for dynamic color scoping:
```css
:root {
--font-inter: 'Inter', system-ui, -apple-system, sans-serif;
--font-space-grotesk: 'Space Grotesk', sans-serif;
--font-jetbrains-mono: 'JetBrains Mono', monospace;
/* Color Palette */
--color-bg: #0A0A0F; /* Base background: deep near-black, zero blue cast */
--color-surface: #13131A; /* Primary surface: dark elevated card container */
--color-border: #1E1E2E; /* Subtle card and divider border */
--color-accent: #7C3AED; /* Primary accent: Deep Violet */
--color-accent-2: #06B6D4; /* Secondary accent: Cyan (used for kickers/status pills) */
--color-glow: #A78BFA; /* Soft violet for text highlights, hover, & scrollbars */
--color-text: #F8FAFC; /* Primary high-contrast text */
--color-text-muted: #94A3B8; /* Secondary body text */
--color-text-subtle: #475569; /* Muted hints, placeholders, and secondary metadata */
}
```
#### Typography Hierarchy
- **Display Font (`font-display`)**: `Space Grotesk` (Section headings, card titles, hero headline)
- **Sans Font (`font-sans`)**: `Inter` (Body narrative, descriptions, form inputs)
- **Monospace Font (`font-mono`)**: `JetBrains Mono` (Kickers, dates, tech badges, code tags)
#### Component Border & Glassmorphism Specs
- **Default Card**: `background: #13131A`, `border: 1px solid rgba(255, 255, 255, 0.10)`, `border-radius: 1rem` (16px).
- **Hovered / Highlighted Card**: `border: 1px solid rgba(167, 139, 250, 0.45)`, shadow: `boxShadow.glow-sm`.
- **Glow Utilities (`tailwind.config.ts`)**:
- `boxShadow.glow-sm`: `0 0 20px rgba(124, 58, 237, 0.20)`
- `boxShadow.glow`: `0 0 40px rgba(124, 58, 237, 0.35)`
- `boxShadow.glow-lg`: `0 0 80px rgba(124, 58, 237, 0.45)`
#### Ambient Background (CSS-only Orbs)
Create a fixed `AnimatedBackground` component using 4 GPU-accelerated blurred radial-gradient elements that drift without triggering browser layout reflows:
- **Orb 1 (Top-Left)**: `#2D1B69` (Violet), 600px × 600px, 120px blur, opacity `0.14` to `0.24`.
- **Orb 2 (Bottom-Right)**: `#0E4D5C` (Dark Cyan), 700px × 500px, 120px blur, opacity `0.08` to `0.15`.
- **Orb 3 (Center-Right)**: `#1E0A4A` (Deep Violet), 500px × 600px, 120px blur.
- **Orb 4 (Top-Right)**: `#0A2E38` (Faint Cyan), 400px × 400px, 120px blur.
- **Reduced Motion**: Automatically disable animations for users with `prefers-reduced-motion: reduce`.
---
### 3. Layout & Section-by-Section Component Hierarchy
#### Page Architecture (`src/app/page.tsx`)
```tsx
<div className="relative z-10">
<Navbar />
<main>
<Hero profile={profile} />
<About profile={profile} />
<Projects items={projects} />
<Experience items={[...experience].reverse()} />
<Skills data={skills} />
<Certifications items={certifications} />
<Achievements items={achievements} />
<Speaking items={speaking} />
<Blog items={blogs} />
<Education items={education} />
<Contact profile={profile} />
</main>
<Footer profile={profile} />
<ScrollToTopButton />
</div>
```
#### Component Breakdown
1. **`Navbar.tsx`**:
- Fixed header with backdrop filter (`backdrop-blur-md bg-[#0A0A0F]/80 border-b border-white/10`).
- Monogram logo + section nav links + mobile responsive slide-out drawer.
2. **`Hero.tsx`**:
- **Left Column**:
- Status Chip: `"Available for new projects"` with a pulsing dot.
- Headline: `"Hi, I'm [First Name] [Last Name]"` with gradient text on the surname.
- Rotating Tagline: `AnimatePresence` rotating through roles (e.g., `"Full Stack Engineer"`, `"AWS Cloud Consultant"`, `"SaaS Developer"`) on a 2.8s interval.
- Pitch paragraph + CTA buttons (`"See my work"`, `"Read Blog"`) + Certification badges pill group.
- **Right Column**:
- 3D Interactive Profile/Video Flip Card featuring mouse tilt (`useMotionValue` / `useSpring`), auto-playing video with `"Tap for Sound"` overlay, custom video controls, and a back face photo fallback.
- Floating Icon Constellation: Tech logos (Node.js, TypeScript, AWS, React, Python, Docker) floating softly around the hero card.
3. **`About.tsx`**:
- Two-column grid containing an intro story, key accomplishments, and metric counter pills (Years Building, Applications Delivered, AWS Certifications).
4. **`Projects.tsx`**:
- Interactive category filter tabs (`"All"`, `"Full Stack"`, `"Serverless"`, `"AI/ML"`).
- Auto-scrolling infinite marquee preview + responsive card grid.
- Project modal with gallery, description, key technical challenges, tech badges, and GitHub / Live links.
5. **`Experience.tsx`**:
- Vertical timeline layout with dynamic scroll-driven line fill (`scaleY` driven by Framer Motion `useScroll` and `useSpring`).
- Animated checkpoint nodes, company logo avatars, duration badges, and collapsible points (`"Read More ▾"` / `"Read Less ▴"`).
- **Sorting Rule**: Data in `data/experience.json` MUST be ordered chronologically oldest-first, and reversed in `page.tsx` (`[...experience].reverse()`) for newest-first website display.
6. **`Skills.tsx`**:
- Multi-category view (Backend & Cloud, Frontend, DevOps & IaC, Databases) with interactive skill tags and proficiency indicators.
7. **`Certifications.tsx` & `Achievements.tsx`**:
- Credential grid displaying badges, issuer names, verification IDs, and official validation links.
8. **`Speaking.tsx` & `Blog.tsx`**:
- Workshop/Talk summary cards + latest blog post previews with publication dates, tag chips, and estimated read times.
9. **`Education.tsx`**:
- Academic degree cards with university logos, honors, and focus areas.
10. **`Contact.tsx`**:
- Form with fields (`Name`, `Email`, `Subject`, `Message`), loading/submitted states, toast notifications, Turnstile spam protection container, and social media action links.
11. **`Footer.tsx`**:
- Copyright declaration, site links, and quick scroll-to-top button.
---
### 4. Key Interactive Elements & Animations
1. **Scroll-Driven Timeline Progress Line (`Experience.tsx`)**:
```tsx
const { scrollYProgress } = useScroll({
target: containerRef,
offset: ["start center", "end center"],
});
const scrollYSpring = useSpring(scrollYProgress, { stiffness: 80, damping: 15 });
const clampedScrollY = useTransform(scrollYSpring, (v) => Math.min(Math.max(v, 0), 1));
```
Apply `scaleY: clampedScrollY` to the vertical gradient line (`bg-gradient-to-b from-brand-cyan to-brand`).
2. **3D Card Mouse Tilt (`Hero.tsx`)**:
Calculate normalized cursor coordinates (`-0.5` to `0.5`) relative to the card's bounding box and spring transform to `rotateX` (`-8deg` to `8deg`) and `rotateY` (`-8deg` to `8deg`).
3. **Rotating Tagline (`Hero.tsx`)**:
Use `AnimatePresence` with `initial={{ y: 24, opacity: 0 }}`, `animate={{ y: 0, opacity: 1 }}`, and `exit={{ y: -24, opacity: 0 }}`.
4. **Section Scroll Margins (`globals.css`)**:
Ensure smooth scroll navigation lands cleanly under the sticky navbar:
```css
@media (min-width: 768px) {
section[id] { scroll-margin-top: 20px; }
}
```
---
### 5. Verification Checklist
Before considering the setup complete, run through this verification checklist:
- [ ] **Static Build**: `npm run build` executes cleanly with zero TypeScript errors or linting failures.
- [ ] **Data Isolation**: All text, company names, links, and project entries are sourced strictly from JSON files in `data/`. No hardcoded strings remain in UI components.
- [ ] **Color System**: CSS variables (`--color-bg`, `--color-surface`, `--color-accent`) properly feed Tailwind classes via `tailwind.config.ts`.
- [ ] **Timeline Order**: `experience.json` is stored oldest-first in the JSON array and rendered reversed (`[...experience].reverse()`) on the homepage.
- [ ] **Accessibility (WCAG AA)**:
- Contrast ratios pass for muted text against dark backgrounds (`#94A3B8` on `#0A0A0F`).
- Interactive elements have explicit `aria-label` attributes where text labels are omitted.
- Video tags include caption track fallbacks (`<track kind="captions" src="" label="No captions" srcLang="en" />`).
- [ ] **Mobile Responsiveness**: Test viewport widths at 360px, 768px, 1024px, and 1440px to ensure cards, timelines, and navigation fit without horizontal overflow.
- [ ] **Reduced Motion Support**: Verify that CSS orb drifts and Framer Motion transitions disable gracefully when `prefers-reduced-motion: reduce` is enabled.