Fix local admin routing and landing styles
This commit is contained in:
@@ -1,3 +1,3 @@
|
|||||||
NEXT_PUBLIC_SITE_URL="http://mohfarawati.localhost:3000"
|
NEXT_PUBLIC_SITE_URL="http://localhost:3014"
|
||||||
NEXT_PUBLIC_ADMIN_URL="http://rootmohfarawati.localhost:3000"
|
NEXT_PUBLIC_ADMIN_URL="http://rootmohfarawati.localhost:3014"
|
||||||
ADMIN_HOST="rootmohfarawati.localhost"
|
ADMIN_HOST="rootmohfarawati.localhost"
|
||||||
|
|||||||
@@ -25,8 +25,8 @@ ps:
|
|||||||
docker compose ps
|
docker compose ps
|
||||||
|
|
||||||
port:
|
port:
|
||||||
@echo "Site: $${NEXT_PUBLIC_SITE_URL:-https://mohfarawati.de}"
|
@echo "Site: http://localhost:3014"
|
||||||
@echo "Admin: $${NEXT_PUBLIC_ADMIN_URL:-https://root.mohfarawati.de}"
|
@echo "Admin: http://rootmohfarawati.localhost:3014"
|
||||||
|
|
||||||
clean-orphans:
|
clean-orphans:
|
||||||
docker compose up -d --remove-orphans
|
docker compose up -d --remove-orphans
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ pnpm dev
|
|||||||
bun dev
|
bun dev
|
||||||
```
|
```
|
||||||
|
|
||||||
Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
|
Open [http://localhost:3014](http://localhost:3014) with your browser to see the result.
|
||||||
|
|
||||||
You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
|
You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,9 @@ import { SiteLogo } from "@/components/layout/site-logo";
|
|||||||
type AsciiWaterRippleProps = {
|
type AsciiWaterRippleProps = {
|
||||||
lightLogoUrl?: string | null;
|
lightLogoUrl?: string | null;
|
||||||
darkLogoUrl?: string | null;
|
darkLogoUrl?: string | null;
|
||||||
logoAlt: string;
|
logoAlt?: string;
|
||||||
|
showLogo?: boolean;
|
||||||
|
className?: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
const glyphs = [".", ":", "+", "*", "o"];
|
const glyphs = [".", ":", "+", "*", "o"];
|
||||||
@@ -38,10 +40,12 @@ const ripplePoints = buildRipplePoints();
|
|||||||
export function AsciiWaterRipple({
|
export function AsciiWaterRipple({
|
||||||
lightLogoUrl,
|
lightLogoUrl,
|
||||||
darkLogoUrl,
|
darkLogoUrl,
|
||||||
logoAlt,
|
logoAlt = "",
|
||||||
|
showLogo = true,
|
||||||
|
className,
|
||||||
}: AsciiWaterRippleProps) {
|
}: AsciiWaterRippleProps) {
|
||||||
return (
|
return (
|
||||||
<div className="relative flex h-[14rem] w-full items-center justify-center overflow-visible sm:h-[17rem] lg:h-[20rem]">
|
<div className={className ?? "relative flex h-[14rem] w-full items-center justify-center overflow-visible sm:h-[17rem] lg:h-[20rem]"}>
|
||||||
<motion.div
|
<motion.div
|
||||||
animate={{
|
animate={{
|
||||||
scale: [0.96, 1.08, 0.98],
|
scale: [0.96, 1.08, 0.98],
|
||||||
@@ -104,27 +108,29 @@ export function AsciiWaterRipple({
|
|||||||
))}
|
))}
|
||||||
</motion.div>
|
</motion.div>
|
||||||
|
|
||||||
<motion.div
|
{showLogo && (
|
||||||
animate={{
|
<motion.div
|
||||||
boxShadow: [
|
animate={{
|
||||||
"0 0 0 1px hsl(var(--primary) / 0.24), 0 0 42px hsl(var(--primary) / 0.22)",
|
boxShadow: [
|
||||||
"0 0 0 1px hsl(var(--primary) / 0.34), 0 0 84px hsl(var(--primary) / 0.34)",
|
"0 0 0 1px hsl(var(--primary) / 0.24), 0 0 42px hsl(var(--primary) / 0.22)",
|
||||||
"0 0 0 1px hsl(var(--primary) / 0.24), 0 0 42px hsl(var(--primary) / 0.22)",
|
"0 0 0 1px hsl(var(--primary) / 0.34), 0 0 84px hsl(var(--primary) / 0.34)",
|
||||||
],
|
"0 0 0 1px hsl(var(--primary) / 0.24), 0 0 42px hsl(var(--primary) / 0.22)",
|
||||||
scale: [1, 1.02, 1],
|
],
|
||||||
y: [0, -3, 0],
|
scale: [1, 1.02, 1],
|
||||||
}}
|
y: [0, -3, 0],
|
||||||
transition={{ duration: 4.8, repeat: Number.POSITIVE_INFINITY, ease: "easeInOut" }}
|
}}
|
||||||
className="relative z-10 flex h-28 w-28 items-center justify-center rounded-full border border-primary/30 bg-background/92 p-2 backdrop-blur-xl sm:h-32 sm:w-32 lg:h-40 lg:w-40"
|
transition={{ duration: 4.8, repeat: Number.POSITIVE_INFINITY, ease: "easeInOut" }}
|
||||||
>
|
className="relative z-10 flex h-28 w-28 items-center justify-center rounded-full border border-primary/30 bg-background/92 p-2 backdrop-blur-xl sm:h-32 sm:w-32 lg:h-40 lg:w-40"
|
||||||
<SiteLogo
|
>
|
||||||
lightLogoUrl={lightLogoUrl}
|
<SiteLogo
|
||||||
darkLogoUrl={darkLogoUrl}
|
lightLogoUrl={lightLogoUrl}
|
||||||
alt={logoAlt}
|
darkLogoUrl={darkLogoUrl}
|
||||||
priority
|
alt={logoAlt}
|
||||||
className="h-full w-full object-center"
|
priority
|
||||||
/>
|
className="h-full w-full object-center"
|
||||||
</motion.div>
|
/>
|
||||||
|
</motion.div>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-12
@@ -26,19 +26,12 @@ services:
|
|||||||
timeout: 5s
|
timeout: 5s
|
||||||
retries: 10
|
retries: 10
|
||||||
start_period: 20s
|
start_period: 20s
|
||||||
labels:
|
ports:
|
||||||
- "traefik.enable=true"
|
- "${PORT:-3014}:3000"
|
||||||
- "traefik.docker.network=proxy"
|
|
||||||
- "traefik.http.routers.sass-mohfarawati.rule=Host(`mohfarawati.de`) || Host(`www.mohfarawati.de`) || Host(`root.mohfarawati.de`)"
|
|
||||||
- "traefik.http.routers.sass-mohfarawati.entrypoints=websecure"
|
|
||||||
- "traefik.http.routers.sass-mohfarawati.tls=true"
|
|
||||||
- "traefik.http.routers.sass-mohfarawati.tls.certresolver=cf"
|
|
||||||
- "traefik.http.services.sass-mohfarawati.loadbalancer.server.port=3000"
|
|
||||||
volumes:
|
volumes:
|
||||||
- media_uploads:/app/public/uploads/media
|
- media_uploads:/app/public/uploads/media
|
||||||
networks:
|
networks:
|
||||||
- appnet
|
- appnet
|
||||||
- proxy
|
|
||||||
|
|
||||||
db:
|
db:
|
||||||
image: postgres:16-alpine
|
image: postgres:16-alpine
|
||||||
@@ -63,6 +56,3 @@ volumes:
|
|||||||
|
|
||||||
networks:
|
networks:
|
||||||
appnet:
|
appnet:
|
||||||
proxy:
|
|
||||||
external: true
|
|
||||||
name: proxy
|
|
||||||
|
|||||||
+6
-6
@@ -30,12 +30,12 @@
|
|||||||
},
|
},
|
||||||
"comingSoon": {
|
"comingSoon": {
|
||||||
"badge": "قريباً",
|
"badge": "قريباً",
|
||||||
"kicker": "مرحبا، أنا محمد",
|
"kicker": "شيء جديد عم يتشكّل",
|
||||||
"titleLineOne": "الموقع",
|
"titleLineOne": "نسخة",
|
||||||
"titleLineTwo": "رح يفتح",
|
"titleLineTwo": "أقوى",
|
||||||
"titleLineThree": "قريباً.",
|
"titleLineThree": "بالطريق.",
|
||||||
"description": "عم حضّر الموقع بحلّة جديدة، محتوى أوضح، وتجربة أرتب من أولها لآخرها.",
|
"description": "عم بشتغل على نسخة جديدة — هوية أقوى، شغل أوضح، وتجربة مبنية من الأساس.",
|
||||||
"note": "إذا حابب تبلّش من هلق، ابعتلي ومنحكي بالتفاصيل.",
|
"note": "",
|
||||||
"primaryCta": "تواصل معي",
|
"primaryCta": "تواصل معي",
|
||||||
"secondaryCta": "العودة للرئيسية"
|
"secondaryCta": "العودة للرئيسية"
|
||||||
},
|
},
|
||||||
|
|||||||
+8
-8
@@ -29,14 +29,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"comingSoon": {
|
"comingSoon": {
|
||||||
"badge": "Coming Soon",
|
"badge": "Demnächst",
|
||||||
"kicker": "Hi, ich bin Moh",
|
"kicker": "Etwas Neues nimmt Form an",
|
||||||
"titleLineOne": "Eine klarere",
|
"titleLineOne": "Eine stärkere",
|
||||||
"titleLineTwo": "nächste Version",
|
"titleLineTwo": "Version",
|
||||||
"titleLineThree": "ist unterwegs.",
|
"titleLineThree": "kommt.",
|
||||||
"description": "Die neue Version entsteht gerade mit stärkerer Identität, klarerem Inhalt und einer fokussierteren Erfahrung von Anfang bis Ende.",
|
"description": "Die nächste Iteration dieser Seite entsteht mit Bedacht — schärfere Arbeiten, eine klarere Identität und ein Auftritt, der wirklich zeigt, was ich tue.",
|
||||||
"note": "Wenn du schon ein Projekt im Kopf hast, kannst du dich jetzt melden und wir starten früh ins Gespräch.",
|
"note": "",
|
||||||
"primaryCta": "Kontakt aufnehmen",
|
"primaryCta": "Schreib mir",
|
||||||
"secondaryCta": "Zur Startseite"
|
"secondaryCta": "Zur Startseite"
|
||||||
},
|
},
|
||||||
"homepage": {
|
"homepage": {
|
||||||
|
|||||||
+7
-7
@@ -30,13 +30,13 @@
|
|||||||
},
|
},
|
||||||
"comingSoon": {
|
"comingSoon": {
|
||||||
"badge": "Coming Soon",
|
"badge": "Coming Soon",
|
||||||
"kicker": "Hi, I am Moh",
|
"kicker": "Something new is taking shape",
|
||||||
"titleLineOne": "A clearer",
|
"titleLineOne": "A stronger",
|
||||||
"titleLineTwo": "next version",
|
"titleLineTwo": "version",
|
||||||
"titleLineThree": "is on the way.",
|
"titleLineThree": "is coming.",
|
||||||
"description": "The new version is being shaped with a stronger identity, cleaner content, and a more focused experience from top to bottom.",
|
"description": "The next iteration of this site is being built with intention — sharper work, a clearer identity, and an experience that actually reflects what I do.",
|
||||||
"note": "If you already have a project in mind, you can reach out now and we can start the conversation early.",
|
"note": "",
|
||||||
"primaryCta": "Contact me",
|
"primaryCta": "Get in touch",
|
||||||
"secondaryCta": "Back to homepage"
|
"secondaryCta": "Back to homepage"
|
||||||
},
|
},
|
||||||
"homepage": {
|
"homepage": {
|
||||||
|
|||||||
Reference in New Issue
Block a user