Purpose-built personal site for Cader Rahmathulla showcasing leadership highlights, venture portfolio, media features, gallery moments, and a contact workflow powered by Next.js 15 and React 19.
- Next.js 15 (App Router) with React 19 and TypeScript
- Tailwind CSS 3.4 with custom utility tokens, Next/Image and next/font optimizations
- Custom UI primitives (Button, Input, Textarea) composed with
tailwind-merge - Nodemailer API route for secure contact form delivery
- Install dependencies
npm install
- Run the local dev server
Visit
npm run dev
http://localhost:3000to preview the site. - Lint before committing
npm run lint
- Create a production build
npm run build npm start
Create a .env.local file with the following keys to enable the contact form:
NEXT_PUBLIC_SITE_URL=https://www.caderrahmathulla.com
EMAIL_USER=you@example.com
EMAIL_APP_PASSWORD=app-specific-password
EMAIL_TO=optional-recipient@example.com
NEXT_PUBLIC_SITE_URL: Base URL used for canonical tags, sitemap, and structured data.EMAIL_USER: Gmail address used by Nodemailer.EMAIL_APP_PASSWORD: Gmail app password (not your main password).EMAIL_TO: Optional override for the recipient; defaults toEMAIL_USER.
app/
Components/ → UI sections (Hero, Leadership, Media, Gallery, Contact, etc.)
ui/ → Reusable controls (Button, Input, Textarea)
api/contact/ → POST route for Nodemailer submissions
data/ → Centralized content (hero text, nav links, leadership roles)
globals.css → Tailwind layers + shared animations
next.config.ts → Typed Next.js configuration
public/images/ → Optimized static assets
app/data/herodata.ts: Hero copy, CTA label, and image reference.app/data/navigation.ts: Single source of truth for site section anchors (Header + Footer).app/data/leadershipData.ts: Logos, categories, and titles for the leadership timeline.app/Components/media-page.tsx: Array of media appearances with logos and summaries.
Updating those files automatically keeps both desktop and mobile layouts in sync.
- Ensure environment variables are configured in the hosting provider.
- Run
npm run buildas part of your CI/CD pipeline to surface type and lint issues. - The site enforces
reactStrictMode, Next/Image optimization, andnext/fontwithdisplay: swapfor fast LCP.
- Section anchors (
#about,#leadership, etc.) power skip navigation and internal links. - Hero and gallery imagery use
priorityand lazy loading appropriately for LCP improvements. - The gallery animation now relies on CSS keyframes, avoiding runtime DOM mutations.
- Contact form has clear error/success states and uses semantic inputs for assistive tech.
For questions or enhancements, open an issue or reach out via the contact form. Enjoy building!*** End Patch*** End Patch (json) to=functions.apply_patch_RESP_CONTENTS