[General] Folder Structure has been changed and Dockerfile added.

This commit is contained in:
georg-njaa
2026-04-01 06:53:10 +02:00
parent 5d1e5062e7
commit 5788da18ec
16 changed files with 48 additions and 13 deletions

23
Dockerfile Normal file
View File

@@ -0,0 +1,23 @@
# Stage 1: Build the Astro Site
FROM node:20-alpine AS builder
WORKDIR /app
# Install dependencies strictly
COPY package*.json ./
RUN npm ci
# Copy source files and build the production static files
COPY . .
RUN npm run build
# Stage 2: Serve with Nginx for lightning fast delivery and low memory footprint
FROM nginx:alpine
# Copy the generated static files from the build stage into Nginx
COPY --from=builder /app/dist /usr/share/nginx/html
# Add custom nginx config if we ever need advanced routing, otherwise default works flawlessly for SSG
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

12
docker-compose.yml Normal file
View File

@@ -0,0 +1,12 @@
version: '3.8'
services:
production-frontend:
build:
context: .
dockerfile: Dockerfile
container_name: notjustan-agency-frontend
restart: unless-stopped
# Depending on Coolify's proxy configuration, exposing port 80 allows Traefik/Caddy to automatically route domain traffic
ports:
- "80"

View File

@@ -1,7 +1,7 @@
import React, { useEffect, useRef } from 'react'; import React, { useEffect, useRef } from 'react';
import { gsap } from 'gsap'; import { gsap } from 'gsap';
import { ArrowRight } from 'lucide-react'; import { ArrowRight } from 'lucide-react';
import LiveClock from './LiveClock'; import LiveClock from '../ui/LiveClock';
// Hardcoded paths fetched from Simple Icons (to guarantee visibility) // Hardcoded paths fetched from Simple Icons (to guarantee visibility)
const logoPaths = { const logoPaths = {

View File

@@ -1,17 +1,17 @@
--- ---
import Layout from '../layouts/Layout.astro'; import Layout from '../layouts/Layout.astro';
import LoadingScreen from '../components/LoadingScreen'; import LoadingScreen from '../components/ui/LoadingScreen';
import HeroSection from '../components/HeroSection'; import HeroSection from '../components/sections/HeroSection';
import ApproachSection from '../components/ApproachSection'; import ApproachSection from '../components/sections/ApproachSection';
import ServicesSection from '../components/ServicesSection'; import ServicesSection from '../components/sections/ServicesSection';
import InsightsSection from '../components/InsightsSection'; import InsightsSection from '../components/sections/InsightsSection';
import BusinessStagesSection from '../components/BusinessStagesSection'; import BusinessStagesSection from '../components/sections/BusinessStagesSection';
import StrategySection from '../components/StrategySection'; import StrategySection from '../components/sections/StrategySection';
import BrandAwarenessSection from '../components/BrandAwarenessSection'; import BrandAwarenessSection from '../components/sections/BrandAwarenessSection';
import PerformanceMarketingSection from '../components/PerformanceMarketingSection'; import PerformanceMarketingSection from '../components/sections/PerformanceMarketingSection';
import OfferSection from '../components/OfferSection'; import OfferSection from '../components/sections/OfferSection';
import ContactForm from '../components/ContactForm'; import ContactForm from '../components/forms/ContactForm';
import FooterSection from '../components/FooterSection'; import FooterSection from '../components/sections/FooterSection';
--- ---
<Layout title="NotJustAn.Agency | Premium Web Design & Development"> <Layout title="NotJustAn.Agency | Premium Web Design & Development">