diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..b903359 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,80 @@ +# Node modules directory +node_modules + +# Logs +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Build output directories +out +dist +build + +# Dependency directories +jspm_packages +typings + +# Optional npm cache directory +.npm + +# dotenv environment variable files +.env +.env.local +.env.development +.env.test +.env.production + +# Git files +.git +.gitignore + +# Docker files +Dockerfile +.dockerignore + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln + +# OS files +.DS_Store +Thumbs.db + +# Test files and configurations +e2e +tests +coverage +jest.config.js +jest.setup.js +playwright.config.ts + +# Documentation and markdown files +README.md +LICENSE +*.md + +# Configuration and setup files not needed in the final image +renovate.json +git-conventional-commits.yaml +.eslintrc.js +.eslintignore +stylelint.config.js +babel.config.js + +# Scripts and other development utilities +report-bundle-size.js +instrumentation.ts + +# Ignore all source map files +*.map + +# Ignore any other unwanted files +npm-debug.log + +# Exclude package-lock.json if you're using Yarn +package-lock.json diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..95cdb3e --- /dev/null +++ b/Dockerfile @@ -0,0 +1,43 @@ +# Stage 1: Install dependencies +FROM node:20-alpine AS deps +WORKDIR /app + +# Copy only package.json and yarn.lock to leverage Docker cache +COPY package.json yarn.lock ./ + +# Install dependencies +RUN yarn install --frozen-lockfile + +# Stage 2: Build the application +FROM node:20-alpine AS builder +WORKDIR /app + +# Copy application code +COPY . . + +# Copy dependencies from deps stage +COPY --from=deps /app/node_modules ./node_modules + +# Disable ESLint during build +ENV NEXT_DISABLE_ESLINT=1 + +# Build the Next.js application +RUN yarn build + +# Stage 3: Prepare the production image +FROM node:20-alpine AS runner +WORKDIR /app + +ENV NODE_ENV production + +# Copy necessary files from the builder stage +COPY --from=builder /app/next.config.mjs ./ +COPY --from=builder /app/.next/standalone ./ +COPY --from=builder /app/.next/static ./.next/static +COPY --from=builder /app/public ./public + +# Expose the port the app runs on +EXPOSE 3000 + +# Start the Next.js application +CMD ["node", "server.js"] diff --git a/app/about/page.tsx b/app/about/page.tsx index 07c50ad..1a9dc75 100644 --- a/app/about/page.tsx +++ b/app/about/page.tsx @@ -1,4 +1,4 @@ -import Layout from "components/Layout"; +import Layout from "components/layout"; const About: React.FC = () => { return ( diff --git a/app/admission/page.tsx b/app/admission/page.tsx index 6f02c41..2e84b9d 100644 --- a/app/admission/page.tsx +++ b/app/admission/page.tsx @@ -1,4 +1,4 @@ -import Layout from "components/Layout"; +import Layout from "components/layout"; const Admission: React.FC = () => { return ( diff --git a/app/blogs/page.tsx b/app/blogs/page.tsx index 7884648..0dff5ac 100644 --- a/app/blogs/page.tsx +++ b/app/blogs/page.tsx @@ -1,4 +1,4 @@ -import Layout from "components/Layout"; +import Layout from "components/layout"; const Blogs: React.FC = () => { return ( diff --git a/app/curriculum/page.tsx b/app/curriculum/page.tsx index 3550770..b9ec5ff 100644 --- a/app/curriculum/page.tsx +++ b/app/curriculum/page.tsx @@ -1,4 +1,4 @@ -import Layout from "components/Layout"; +import Layout from "components/layout"; const Curriculum: React.FC = () => { return ( diff --git a/app/franchise/page.tsx b/app/franchise/page.tsx index 1a9f15e..e34c118 100644 --- a/app/franchise/page.tsx +++ b/app/franchise/page.tsx @@ -1,4 +1,4 @@ -import Layout from "components/Layout"; +import Layout from "components/layout"; const Franchise: React.FC = () => { return ( diff --git a/app/home/page.tsx b/app/home/page.tsx index e5cffd6..7c9d735 100644 --- a/app/home/page.tsx +++ b/app/home/page.tsx @@ -1,21 +1,152 @@ -import Layout from "components/Layout"; +import Image from "next/image"; +import Link from "next/link"; +import Layout from "components/layout"; + const Home: React.FC = () => { + const line1 = 'A Pre-school and Daycare'; + const line2 = 'for Free Thinkers'; + + const renderColoredText = (text: string, startIndex: number) => { + let colorIndex = startIndex; + return text.split('').map((char, idx) => { + const colorClass = `text-color-${colorIndex}`; + colorIndex += 1; + + // Replace space with non-breaking space to preserve spacing + const displayChar = char === ' ' ? '\u00A0' : char; + + return ( + + {displayChar} + + ); + }); + }; + + return ( -
-

A Pre-school and Daycare

-

for Free Thinkers

- Slide -

“This is a place where our child feels loved, valued, and excited to learn”

+
+

+ {renderColoredText(line1, 1)} +

+

+ {renderColoredText(line2, line1.length + 1)} +

+ +
+ +
+ Slide +

+ “This is a place where our child feels loved, valued, and excited to learn” +

+ Kids' drawings
-
-

Our Overview

-
-
Centres 130+
-
Children 130+
-
Faculty 600+
-
Decades 1
+ + {/* Overview Section */} +
+

OUR OVERVIEW

+
+
+

Centres 130+

+
+
+

Children 130+

+
+
+

Faculty 600+

+
+
+

Decades 1

+
+
+
+ Kids reading a book +
+
+ + {/* Testimonials Section */} +
+

Our Testimonials

+
+ {/* First testimonial */} +
+ Parent with child +

+ “Lil Pals has been a wonderful experience for our daughter, Mia. From the moment we stepped into the school, we were impressed by the warm and welcoming environment..." +

+

— Christine & Phil, parents of Mia

+
⭐️⭐️⭐️⭐️⭐️
+
+ {/* Second testimonial */} +
+ Father with child +

+ "Lil Pals has been a wonderful experience for our daughter, Ava. From the moment we joined, we were impressed by the warm and nurturing environment..." +

+

— Lena & Raj, parents of Ava

+
⭐️⭐️⭐️⭐️⭐️
+
+ {/* Third testimonial */} +
+ Mother with child +

+ “Lil Pals has been a wonderful experience for our daughter, Mia. From the moment we stepped into the school, we were impressed by the warm and welcoming environment..." +

+

— Christine & Phil, parents of Mia

+
⭐️⭐️⭐️⭐️⭐️
+
+
+
+ + +
+
+ + {/* Admissions Section */} +
+
+
+ Lil Pals Logo +

+ Admissions open for 2024-25!! +

+ +
+
+ Kids playing +
diff --git a/app/page.tsx b/app/page.tsx index 9b36d2d..7c9d735 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -1,32 +1,7 @@ -// import Layout from "components/Layout"; - -// const Home: React.FC = () => { -// return ( -// -//
-//

A Pre-school and Daycare

-//

for Free Thinkers

-// Slide -//

“This is a place where our child feels loved, valued, and excited to learn”

-//
-//
-//

Our Overview

-//
-//
Centres 130+
-//
Children 130+
-//
Faculty 600+
-//
Decades 1
-//
-//
-//
-// ); -// }; - -// export default Home; - -import Layout from "components/Layout"; import Image from "next/image"; import Link from "next/link"; +import Layout from "components/layout"; + const Home: React.FC = () => { const line1 = 'A Pre-school and Daycare'; diff --git a/app/programs/page.tsx b/app/programs/page.tsx index ce51c60..bf5791f 100644 --- a/app/programs/page.tsx +++ b/app/programs/page.tsx @@ -1,4 +1,4 @@ -import Layout from "components/Layout"; +import Layout from "components/layout"; const Programs: React.FC = () => { return ( diff --git a/components/Font/font.tsx b/components/Font/font.tsx new file mode 100644 index 0000000..654e6e5 --- /dev/null +++ b/components/Font/font.tsx @@ -0,0 +1,25 @@ +// pages/_document.js +import Document, { Html, Head, Main, NextScript } from 'next/document'; + +class MyDocument extends Document { + render() { + return ( + + + {/* Import Google Fonts */} + + + + +
+ + + + ); + } +} + +export default MyDocument; diff --git a/components/Footer/index.tsx b/components/footer.tsx similarity index 100% rename from components/Footer/index.tsx rename to components/footer.tsx diff --git a/components/Header/index.tsx b/components/header.tsx similarity index 100% rename from components/Header/index.tsx rename to components/header.tsx diff --git a/components/Layout/index.tsx b/components/layout.tsx similarity index 74% rename from components/Layout/index.tsx rename to components/layout.tsx index 2919bc5..8cff880 100644 --- a/components/Layout/index.tsx +++ b/components/layout.tsx @@ -1,5 +1,5 @@ -import Footer from 'components/Footer'; -import Header from 'components/Header'; +import Footer from 'components/footer'; +import Header from 'components/header'; import { ReactNode } from 'react'; import "styles/tailwind.css" @@ -12,7 +12,7 @@ const Layout: React.FC = ({ children }) => { return (
-
+
{children}