A modern, professional landing page template for development agencies and tech consultancies built with Next.js 14, TypeScript, and Tailwind CSS.
- Features
- System Architecture
- Tech Stack
- Quick Start
- Project Structure
- Configuration
- Customization
- Deployment
- Statistics
- Support
- License
-
Modern UI/UX
- Dark/light theme switching with seamless transitions
- Bento grid layout for portfolio showcase
- Smooth animations using Framer Motion
- Glassmorphism effects and modern gradients
-
Responsive Design
- Mobile-first approach
- Optimized for all screen sizes
- Touch-friendly navigation
- Adaptive typography
-
Portfolio System
- Dynamic filtering by category
- Masonry grid layout
- CSV-based data management
- Support for external data sources
-
SEO & Performance
- Server-side rendering (SSR) ready
- Automatic Open Graph meta tags
- Vercel Analytics integration
- Optimized images and assets
-
Contact & Inquiry
- Project inquiry form
- Contact form with validation
- Success/error state handling
- Email integration ready
-
Component Library
- 10+ reusable React components
- Shadcn/ui inspired design system
- Consistent design tokens
- Accessible by default
-
Development Tools
- Hot module replacement (HMR)
- ESLint with strict rules
- TypeScript type checking
- Tailwind CSS IntelliSense support
flowchart TB
subgraph Client["Client Layer"]
UI["UI Components"]
Theme["Theme Provider"]
Anim["Framer Motion"]
end
subgraph Pages["Pages / App Router"]
Home["Home Page"]
Portfolio["Portfolio Page"]
Contact["Contact Page"]
end
subgraph Components["Component Categories"]
Landing["Landing Components"]
PortfolioC["Portfolio Components"]
UIComp["UI Components"]
end
subgraph Data["Data Layer"]
CSV["CSV Parser"]
Types["Type Definitions"]
Utils["Utility Functions"]
end
subgraph Config["Configuration"]
Tailwind["Tailwind Config"]
Next["Next.js Config"]
TS["TypeScript Config"]
end
subgraph External["External Services"]
Analytics["Vercel Analytics"]
ThemeLib["next-themes"]
end
UI --> Landing
UI --> PortfolioC
UI --> UIComp
Theme --> UI
Theme --> Anim
Home --> Landing
Portfolio --> PortfolioC
Contact --> UIComp
CSV --> Data
Types --> Data
Utils --> Data
Landing --> Data
PortfolioC --> Data
ThemeLib --> Theme
Analytics --> Pages
sequenceDiagram
participant U as User
participant B as Browser
participant N as Next.js
participant C as Components
participant D as Data Layer
participant T as Theme
U->>B: Request Page
B->>N: Fetch Page
N->>D: Load CSV Data
D-->>N: Return Projects
N-->>B: Rendered HTML
B-->>U: Display Page
U->>C: Interact (filter/navigate)
C->>T: Toggle Theme
T-->>C: Theme Updated
C-->>U: UI Updated
| Category | Technology | Version | Purpose |
|---|---|---|---|
| Framework | Next.js | 14.2.16 | React framework with App Router |
| Language | TypeScript | 5.x | Type-safe JavaScript |
| Styling | Tailwind CSS | 3.3+ | Utility-first CSS framework |
| Runtime | React | 18.x | UI library |
| Animations | Framer Motion | latest | Declarative animations |
| Themes | next-themes | latest | Dark/light mode switching |
| Category | Technology | Purpose |
|---|---|---|
| Icons | Lucide React | Icon library |
| Class Merging | clsx, tailwind-merge | Conditional classes |
| Components | CVA (Class Variance Authority) | Component variants |
| Animation | tailwindcss-animate | CSS animations |
| Typography | @tailwindcss/typography | Prose styling |
| Category | Technology | Purpose |
|---|---|---|
| Analytics | Vercel Analytics | Performance tracking |
| Build | PostCSS | CSS processing |
| Linting | ESLint | Code quality |
- Node.js 18.17 or later
- npm, yarn, pnpm, or bun
-
Clone the repository
git clone <repository-url> cd ai-agency-landing-page-and-portfolio
-
Install dependencies
npm install # or yarn install # or pnpm install # or bun install
-
Start the development server
npm run dev # or yarn dev # or pnpm dev # or bun dev
-
Open in browser Navigate to http://localhost:3000
ai-agency-landing-page/
├── app/ # Next.js App Router
│ ├── layout.tsx # Root layout with providers
│ ├── page.tsx # Home page
│ ├── globals.css # Global styles
│ └── portfolio/
│ └── page.tsx # Portfolio page
├── components/ # React components
│ ├── landing-page/ # Landing page sections
│ │ ├── hero.tsx # Hero section
│ │ ├── services.tsx # Services section
│ │ ├── stats.tsx # Statistics section
│ │ ├── portfolio.tsx # Portfolio preview
│ │ ├── faq.tsx # FAQ section
│ │ └── cta.tsx # Call-to-action
│ ├── portfolio/ # Portfolio components
│ │ ├── portfolio-grid.tsx # Masonry grid
│ │ └── portfolio-card.tsx # Project card
│ └── ui/ # Reusable UI components
│ ├── button.tsx # Button variants
│ ├── card.tsx # Card component
│ └── input.tsx # Form inputs
├── public/ # Static assets
│ ├── data/ # Sample data
│ │ └── portfolio-sample.csv
│ └── images/ # Project images
├── utils/ # Utility functions
│ └── csv-parser.ts # CSV parsing
├── types/ # TypeScript types
│ └── index.ts # Type definitions
├── styles/ # Additional styles
│ └── components/ # Component styles
├── tailwind.config.ts # Tailwind configuration
├── next.config.mjs # Next.js configuration
├── tsconfig.json # TypeScript configuration
├── package.json # Dependencies
└── README.md # This file
Create a .env.local file in the root directory:
# Site Configuration
NEXT_PUBLIC_SITE_URL=https://yourdomain.com
NEXT_PUBLIC_SITE_NAME=Your Agency Name
# Analytics (optional)
VERCEL_ANALYTICS_ID=your_analytics_id
# Contact Form (optional)
CONTACT_EMAIL=your@email.comThe tailwind.config.ts includes:
- Custom Colors: Primary, secondary, muted, accent, destructive, card, popover
- Border Radius: lg, md, sm variants
- Grid Layouts: bento-1, bento-2, auto-Dense
- Typography Plugin: Prose styling with custom colors
- Dark Mode: Class-based dark mode support
Key compiler options:
| Option | Value | Purpose |
|---|---|---|
strict |
true | Enable strict type checking |
esModuleInterop |
true | ES module interoperability |
jsx |
preserve | Keep JSX for Next.js |
paths |
@/* | Path aliases |
isolatedModules |
true | Safe module imports |
{
eslint: { ignoreDuringBuilds: true },
typescript: { ignoreBuildErrors: true },
images: { unoptimized: true }
}-
Site Metadata
- Edit
app/layout.tsxfor meta tags, title, and description
- Edit
-
Hero Section
- Modify
components/landing-page/hero.tsx - Update headline, subheadline, and CTAs
- Modify
-
Services
- Edit
components/landing-page/services.tsx - Add/modify service cards
- Edit
-
FAQ Content
- Update
components/landing-page/faq.tsx - Add new Q&A pairs
- Update
-
Primary Brand Color
- Search and replace
#7A7FEEacross the project - Or update Tailwind theme colors
- Search and replace
-
Theme Colors
- Edit
components/landing-page/styles.css - Tailwind config:
tailwind.config.ts
- Edit
-
Dark/Light Mode
- Uses
next-themesfor automatic switching - Configure in
app/providers.tsx
- Uses
- Open
public/data/portfolio-sample.csv - Update project data following the columns:
Slug: URL-friendly identifierTitle: Project nameLogo: Path to logo imageMain Image: Path to main imageShort Description: Brief descriptionProject URL: Live project link (optional)Content: Detailed HTML contentSort Order: Sorting date (YYYY-MM-DD)
- Host CSV on Vercel Blob, AWS S3, or Google Sheets
- Update fetch URL in
utils/csv-parser.ts
- Modify
utils/csv-parser.tsto fetch JSON - Create JSON structure matching TypeScript types
Consider these headless CMS options:
- Contentful - Enterprise content platform
- Strapi - Open-source headless CMS
- Sanity - Real-time content platform
- Ghost - Professional publishing platform
-
Project Images
- Add to
public/images/directory - Reference in CSV or data source
- Add to
-
Logos & Icons
- Replace files in
public/directory - Update favicon:
public/favicon.ico
- Replace files in
-
Push to GitHub
git init git add . git commit -m "Initial commit" git remote add origin <your-repo-url> git push -u origin main
-
Connect to Vercel
- Log in to vercel.com
- Import your GitHub repository
- Deploy with default settings
-
Environment Variables
- Add variables in Vercel dashboard
- Reference
.env.example
| Platform | Method |
|---|---|
| Netlify | Connect Git repo or CLI |
| Railway | Git deploy or Dockerfile |
| DigitalOcean | App Platform |
| AWS Amplify | Git integration |
| Docker | Container deployment |
npm run build
npm start| Asset | Size | Description |
|---|---|---|
| Initial JS | ~150KB | Main JavaScript bundle |
| CSS | ~20KB | Tailwind styles |
| Fonts | Variable | System fonts used |
- Lighthouse Score: 90+ on all metrics
- First Contentful Paint: < 1.5s
- Largest Contentful Paint: < 2.5s
- Cumulative Layout Shift: < 0.1
- Time to Interactive: < 3s
| Category | Count |
|---|---|
| Landing Components | 8+ |
| Portfolio Components | 4+ |
| UI Components | 10+ |
| Total Components | 20+ |
The template includes 6 sample projects:
- TaskFlow Pro - AI-powered task management
- ShopConnect - Multi-vendor marketplace
- ContentAI Studio - AI content creation
- WealthTracker - Personal finance dashboard
- MedConnect - Telemedicine platform
- CryptoInsights - Blockchain analytics
- Documentation - Review this README
- Code Comments - Check inline documentation
- GitHub Issues - Report bugs or request features
- Contact - Email support team
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
This project is available under the MIT License.
You are free to:
- Use this template for personal or commercial projects
- Modify and customize for your needs
- Redistribute with attribution
See the LICENSE file for full details.
Built with Next.js 14, TypeScript, and Tailwind CSS