A modern, beautiful landing page for Appropos software solutions agency built with Next.js 16, TypeScript, Tailwind CSS, and Framer Motion.
- Modern Dark Theme - Professional design with blues, purples, and clean whites
- Fully Responsive - Optimized for mobile, tablet, and desktop
- Smooth Animations - Framer Motion powered scroll reveals and interactions
- SEO Optimized - Complete metadata, Open Graph, and Twitter cards
- Contact Form - React Hook Form with validation
- Fast Performance - Next.js App Router with optimized builds
- Vercel Ready - Configured for one-click deployment
- Framework: Next.js 16.1.1 with App Router
- Language: TypeScript
- Styling: Tailwind CSS
- Animations: Framer Motion
- Icons: Lucide React
- Forms: React Hook Form
- Deployment: Vercel
- Node.js 18+
- npm or yarn
- Clone the repository:
git clone https://github.com/yourusername/appropos-web.git
cd appropos-web- Install dependencies:
npm install- Run the development server:
npm run dev- Open http://localhost:3000 in your browser.
When you run npm run build, the static site is generated in the out/ directory. This directory contains all HTML, CSS, JS, and assets ready for deployment to any static hosting provider.
- Build the project locally:
npm run build- Go to Cloudflare Pages
- Create a new project
- Connect your GitHub repository OR drag & drop the
out/folder - Configure build settings:
- Framework preset: None (static)
- Build command:
npm run build - Build output directory:
out
- Install Wrangler:
npm install -g wrangler- Build and deploy:
npm run build
wrangler pages deploy out --project-name=appropos- Push your code to GitHub
- Go to Cloudflare Pages Dashboard
- Create project → Connect to Git
- Select your repository
- Set build settings:
- Build command:
npm run build - Build output directory:
out
- Build command:
- Deploy!
- Install Vercel CLI:
npm i -g vercel- Deploy:
vercel- Push your code to GitHub
- Go to vercel.com
- Import your repository
- Deploy automatically
src/
├── app/
│ ├── globals.css # Global styles and Tailwind config
│ ├── layout.tsx # Root layout with SEO metadata
│ └── page.tsx # Main landing page
├── components/
│ ├── layout/
│ │ ├── Navigation.tsx
│ │ └── Footer.tsx
│ ├── sections/
│ │ ├── Hero.tsx
│ │ ├── Services.tsx
│ │ ├── About.tsx
│ │ ├── Testimonials.tsx
│ │ └── Contact.tsx
│ └── ui/
│ ├── Button.tsx
│ ├── Card.tsx
│ ├── Container.tsx
│ └── Section.tsx
public/
├── favicon.ico
├── site.webmanifest
└── [other assets]
Edit the CSS variables in src/app/globals.css:
:root {
--background: #0a0a0f;
--primary: #3b82f6;
--secondary: #8b5cf6;
/* ... */
}Update the content in each section component:
- Hero:
src/components/sections/Hero.tsx - Services:
src/components/sections/Services.tsx - About:
src/components/sections/About.tsx - Testimonials:
src/components/sections/Testimonials.tsx - Contact:
src/components/sections/Contact.tsx
Update metadata in src/app/layout.tsx.
Generate favicons at realfavicongenerator.net and place them in the public/ directory:
- favicon.ico
- favicon-16x16.png
- favicon-32x32.png
- apple-touch-icon.png
- android-chrome-192x192.png
- android-chrome-512x512.png
Create a .env.local file for environment-specific settings:
# Add your environment variables here
# Example:
# NEXT_PUBLIC_API_URL=https://api.example.comMIT License - feel free to use this template for your projects.
Contributions are welcome! Please feel free to submit a Pull Request.
Built with ❤️ by Appropos