diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..670ff1a --- /dev/null +++ b/Dockerfile @@ -0,0 +1,23 @@ +# Use the official Node.js 20 image as the base +FROM node:20-alpine + +# Set working directory +WORKDIR /app + +# Copy package.json and package.lock.json +COPY package*.json ./ + +# Install dependencies +RUN npm install + +# Copy the rest of the application code +COPY . . + +# Build the Next.js application +RUN npm run build + +# Expose port 3000 +EXPOSE 3000 + +# Start the application +CMD ["npm", "start"] \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..8bd6970 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,15 @@ +version: '3.8' + +services: + web: + build: + context: . + dockerfile: Dockerfile + ports: + - "8086:3000" + environment: + - NODE_ENV=production + volumes: + - .:/app + - /app/node_modules + restart: unless-stopped \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index ccb6af1..a7f36ee 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,7 @@ "name": "3engines", "version": "0.1.0", "dependencies": { + "lucide-react": "^0.523.0", "next": "15.3.4", "react": "^19.0.0", "react-dom": "^19.0.0" @@ -4513,6 +4514,15 @@ "loose-envify": "cli.js" } }, + "node_modules/lucide-react": { + "version": "0.523.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.523.0.tgz", + "integrity": "sha512-rUjQoy7egZT9XYVXBK1je9ckBnNp7qzRZOhLQx5RcEp2dCGlXo+mv6vf7Am4LimEcFBJIIZzSGfgTqc9QCrPSw==", + "license": "ISC", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, "node_modules/magic-string": { "version": "0.30.17", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", diff --git a/package.json b/package.json index 69d7f34..67a9a67 100644 --- a/package.json +++ b/package.json @@ -9,19 +9,20 @@ "lint": "next lint" }, "dependencies": { + "lucide-react": "^0.523.0", + "next": "15.3.4", "react": "^19.0.0", - "react-dom": "^19.0.0", - "next": "15.3.4" + "react-dom": "^19.0.0" }, "devDependencies": { - "typescript": "^5", + "@eslint/eslintrc": "^3", + "@tailwindcss/postcss": "^4", "@types/node": "^20", "@types/react": "^19", "@types/react-dom": "^19", - "@tailwindcss/postcss": "^4", - "tailwindcss": "^4", "eslint": "^9", "eslint-config-next": "15.3.4", - "@eslint/eslintrc": "^3" + "tailwindcss": "^4", + "typescript": "^5" } } diff --git a/public/images/ecommerce-bg.jpg b/public/images/ecommerce-bg.jpg new file mode 100644 index 0000000..4169f0c Binary files /dev/null and b/public/images/ecommerce-bg.jpg differ diff --git a/public/images/hero.jpg b/public/images/hero.jpg new file mode 100644 index 0000000..7d1e5ee Binary files /dev/null and b/public/images/hero.jpg differ diff --git a/public/images/logo-splash.svg b/public/images/logo-splash.svg new file mode 100644 index 0000000..d1ffb3d --- /dev/null +++ b/public/images/logo-splash.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + 3 + engines + + + + + + + + + \ No newline at end of file diff --git a/public/images/logo-white.svg b/public/images/logo-white.svg new file mode 100644 index 0000000..95d0028 --- /dev/null +++ b/public/images/logo-white.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/app/page.tsx b/src/app/page.tsx index e68abe6..301f40d 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,103 +1,36 @@ import Image from "next/image"; +import type { Metadata } from 'next' +import Header from "@/components/Layout/Header"; +import Footer from "@/components/Layout/Footer"; +import HeroSection from "@/components/Home/HeroSection"; +import ServicesSection from "@/components/Home/ServicesSection"; +import SolutionsCarousel from "@/components/Home/SolutionsCarousel"; +import BenefitsSection from "@/components/Home/BenefitsSection"; +import CTABanner from "@/components/Home/CTABanner"; +import PublicCloudInfoSection from "@/components/Home/PublicCloudInfoSection"; +import BottomFeaturesSection from "@/components/Home/BottomFeaturesSection"; + +export const metadata: Metadata = { + title: '3engines', + description: 'Cloud services and solutions', +} export default function Home() { return ( -
-
- Next.js logo -
    -
  1. - Get started by editing{" "} - - src/app/page.tsx - - . -
  2. -
  3. - Save and see your changes instantly. -
  4. -
- -
- - Vercel logomark - Deploy now - - - Read our docs - +
+
+
-
- -
+
+ + + + + + + +
+