featmigrate from Angular to Astro static site
BREAKING CHANGE: Complete rewrite from Angular SPA to Astro - Replace Angular 18 with Astro 5.16.7 + Tailwind CSS - Convert all Angular components to Astro components - Add content collections for blog with markdown support - Setup S3 deployment with CloudFront invalidation - Add RSS feed and sitemap generation - Configure Prettier and Biome for code formatting - Switch from npm to pnpm - Remove Amplify backend (now fully static) - Improve SEO and performance with static generation
This commit is contained in:
parent
7be49ba73a
commit
7cf2e858a2
192 changed files with 7829 additions and 21756 deletions
88
src/pages/bio.astro
Normal file
88
src/pages/bio.astro
Normal file
|
|
@ -0,0 +1,88 @@
|
|||
---
|
||||
import type { CollectionEntry } from "astro:content";
|
||||
import { getEntry } from "astro:content";
|
||||
import Footer from "../components/Footer.astro";
|
||||
import Navbar from "../components/Navbar.astro";
|
||||
import BaseLayout from "../layouts/BaseLayout.astro";
|
||||
import "../styles/prose.css";
|
||||
|
||||
type BioEntry = CollectionEntry<"bio">;
|
||||
|
||||
const bioEntry: BioEntry | undefined = await getEntry("bio", "my-story");
|
||||
|
||||
if (!bioEntry) {
|
||||
throw new Error("Bio entry not found");
|
||||
}
|
||||
|
||||
const { Content } = await bioEntry.render();
|
||||
---
|
||||
|
||||
<BaseLayout
|
||||
title="Lorenzo Iovino >> Bio"
|
||||
description="Biography and life story of Lorenzo Iovino"
|
||||
canonicalUrl="https://www.lorenzoiovino.com/bio"
|
||||
>
|
||||
<Navbar />
|
||||
<div class="min-h-screen pt-16 bg-secondary">
|
||||
<div class="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 py-12 md:py-20">
|
||||
<div class="mb-16 text-center">
|
||||
<h1 class="text-white mb-4">{bioEntry.data.title}</h1>
|
||||
<p class="text-xl text-white/90 max-w-2xl mx-auto">
|
||||
{bioEntry.data.description}
|
||||
</p>
|
||||
<div class="h-1 w-20 bg-white rounded-full mx-auto mt-6"></div>
|
||||
</div>
|
||||
|
||||
<div class="bg-white rounded-2xl shadow-soft-lg p-8 md:p-12 lg:p-16">
|
||||
<div class="prose prose-xl max-w-none">
|
||||
<Content />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div
|
||||
class="mt-16 bg-gradient-to-br from-white to-gray-50 rounded-2xl shadow-soft-lg p-10 md:p-14 lg:p-16 text-center border border-gray-100"
|
||||
>
|
||||
<h3 class="text-3xl md:text-4xl font-bold text-gray-900 mb-6">Let's Connect!</h3>
|
||||
<p
|
||||
class="text-gray-700 text-xl md:text-2xl leading-relaxed mb-10 max-w-3xl mx-auto font-light"
|
||||
>
|
||||
I'm always excited to connect with fellow developers, discuss interesting projects, or
|
||||
just have a chat about technology and life. Feel free to reach out!
|
||||
</p>
|
||||
<div class="flex flex-wrap gap-5 justify-center">
|
||||
<a
|
||||
href="https://www.linkedin.com/in/lorenzoiovino/"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
class="inline-flex items-center px-10 py-5 bg-white hover:bg-gray-50 text-gray-700 font-semibold text-lg rounded-xl transition-all duration-200 shadow-lg hover:shadow-xl border-2 border-gray-200 hover:border-gray-300 transform hover:-translate-y-1 hover:scale-105"
|
||||
>
|
||||
<img
|
||||
src="/linkedin.svg"
|
||||
alt="LinkedIn"
|
||||
class="h-6 w-6 mr-3 opacity-80"
|
||||
width="24"
|
||||
height="24"
|
||||
/>
|
||||
LinkedIn
|
||||
</a>
|
||||
<a
|
||||
href="https://github.com/thisloke"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
class="inline-flex items-center px-10 py-5 bg-white hover:bg-gray-50 text-gray-700 font-semibold text-lg rounded-xl transition-all duration-200 shadow-lg hover:shadow-xl border-2 border-gray-200 hover:border-gray-300 transform hover:-translate-y-1 hover:scale-105"
|
||||
>
|
||||
<img
|
||||
src="/github.svg"
|
||||
alt="GitHub"
|
||||
class="h-6 w-6 mr-3 opacity-80"
|
||||
width="24"
|
||||
height="24"
|
||||
/>
|
||||
GitHub
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<Footer />
|
||||
</BaseLayout>
|
||||
Loading…
Add table
Add a link
Reference in a new issue