diff --git a/README.md b/README.md
index 0b57de3..7136380 100644
--- a/README.md
+++ b/README.md
@@ -1,39 +1,67 @@
-# 🚀 Astro Starter Pro
+# Balodeplao.com — Family Travel Blog
-**Astro Starter Pro** is a professional, open-source template for building fast websites using **[Astro 5](https://astro.build/) + [Tailwind CSS 4](https://tailwindcss.com/)**. Designed with industry best practices, optimized SEO, and a modern development experience.
+Welcome to the codebase for [balodeplao.com](https://balodeplao.com) — our family travel blog! Here, we share stories, tips, and experiences from our journeys around the world. This site is built to inspire, inform, and connect with fellow travelers and families who love to explore.
-
+---
-[](https://github.com/devgelo-labs/astro-starter-pro)
-[](https://github.com/devgelo-labs/astro-starter-pro)
-[](./LICENSE)
-[](https://astro.build/)
-[](https://tailwindcss.com/)
-[](https://github.com/devgelo-labs)
+## About
-
+This repository hosts the source code for our family travel blog, [balodeplao.com](https://balodeplao.com). The blog features:
-
-Table of Contents
+- ✈️ Personal travel stories and guides
+- 🏝️ Family-friendly destinations and tips
+- 📸 Photo galleries and travel inspiration
+- 📝 Practical advice for traveling with kids
-- [Demo](#demo)
-- [Features](#features)
-- [Tech Stack](#tech-stack)
-- [Project Structure](#project-structure)
-- [Quick Start](#quick-start)
-- [Configuration](#configuration)
-- [Content Management](#content-management)
-- [Commands](#commands)
-- [Support the Project](#support-the-project)
-- [License](#license)
+---
-
+## Tech Stack
-
+This blog is built with modern, high-performance technologies:
-## Demo
+- **[Astro](https://astro.build/)** (based on Astro Starter Theme)
+- **[Tailwind CSS](https://tailwindcss.com/)**
+- **TypeScript**
+- **MDX/Markdown** for content
-📌 [https://astrostarterpro.com/](https://astrostarterpro.com/)
+---
+
+## Features
+
+- Responsive, fast, and SEO-optimized
+- Dark & Light mode
+- Content collections for easy blog management
+- Reusable components and layouts
+- RSS feed, sitemap, and meta tags for discoverability
+
+---
+
+## Getting Started
+
+To run the blog locally:
+
+```bash
+git clone https://github.com/10h30/blog-balodeplao.git
+cd blog-balodeplao
+npm install
+npm run dev
+```
+
+---
+
+## Contributing
+
+This is a personal/family project, but suggestions and improvements are welcome! Feel free to open an issue or pull request.
+
+---
+
+## License
+
+This project is licensed under the **MIT** license. See the [LICENSE](./LICENSE) file for details.
+
+---
+
+> _Originally based on Astro Starter Theme. Customized and expanded for our family travel blog._
## Features
diff --git a/astro.config.mjs b/astro.config.mjs
index b7fadcf..a00a786 100644
--- a/astro.config.mjs
+++ b/astro.config.mjs
@@ -6,7 +6,7 @@ import icon from "astro-icon";
import remarkReadingTime from "remark-reading-time";
export default defineConfig({
- site: "https://astrostarterpro.com/",
+ site: "https://balodeplao.com/",
integrations: [sitemap(), icon(), mdx()],
markdown: {
remarkPlugins: [
diff --git a/src/components/layout/Navbar.astro b/src/components/layout/Navbar.astro
index 7b53c47..8aa6a9e 100644
--- a/src/components/layout/Navbar.astro
+++ b/src/components/layout/Navbar.astro
@@ -35,14 +35,6 @@ import ThemeToggle from "@/components/ui/ThemeToggle.astro";
-
diff --git a/src/pages/index.astro b/src/pages/index.astro
index 53186d6..fd46618 100644
--- a/src/pages/index.astro
+++ b/src/pages/index.astro
@@ -2,133 +2,64 @@
import BaseLayout from "@/layouts/BaseLayout.astro";
import { siteConfig } from "@/config/site";
import Hero from "@/components/widgets/Hero.astro";
-import Features from "@/components/widgets/Features.astro";
-import devImg from "@/assets/images/dev_balanced.png";
-import openSourceImg from "@/assets/images/open-source.png";
-import Content2 from "@/components/widgets/Content2.astro";
+import PostItem from "@/components/blog/PostItem.astro";
+import { getCollection } from "astro:content";
+
const metadata = {
- title: `${siteConfig.name} — The next step for your project`,
+ title: `${siteConfig.name} — You Only Live Once`,
description:
- "A modern and professional template for your web projects with Astro and Tailwind CSS. Boost your development with a solid foundation.",
+ "Chào mừng bạn đến với blog của chúng tôi, nơi chúng tôi chia sẻ những câu chuyện, kiến thức và trải nghiệm về cuộc sống. Hãy cùng khám phá và tận hưởng hành trình này nhé!",
ignoreTitleTemplate: true,
};
+
+const blogEntries = await getCollection("blog");
+const latestPosts = blogEntries
+ .filter((post) => post.data && post.data.pubDate)
+ .sort((a, b) => b.data.pubDate.valueOf() - a.data.pubDate.valueOf())
+ .slice(0, 5);
+
+const firstRow = latestPosts.slice(0, 2);
+const secondRow = latestPosts.slice(2, 5);
---
Web Developers`}
- tagline="Astro v5 + Tailwind v4"
- description={`${siteConfig.description}`}
- actions={[
- {
- text: "Get Started",
- href: "https://github.com/devgelo-labs/astro-starter-pro",
- variant: "primary",
- icon: "lucide:github",
- },
- {
- text: "Our Services",
- href: "/services",
- variant: "secondary",
- icon: "lucide:arrow-right",
- ariaLabel: "Learn more about our services",
- },
- ]}
+ title={`You Only Live Once`}
+ tagline=""
+ description=""
+ bgImage="https://images.balodeplao.com/460cc863-81ff-44b4-811f-422558bd2078.jpg"
/>
-
-
-
-
- Development
-
- We provide a solid foundation to start your projects with best practices.
-
-
-
-
-
- Open Source & Community
-
- Join the revolution of modern web development. This project is open for everyone
- to use, learn from, and contribute to.
-
-
+
+
+
+
diff --git a/src/pages/services.astro b/src/pages/services.astro
deleted file mode 100644
index bc5187e..0000000
--- a/src/pages/services.astro
+++ /dev/null
@@ -1,128 +0,0 @@
----
-import BaseLayout from "@/layouts/BaseLayout.astro";
-import ServiceList from "@/components/widgets/ServiceList.astro";
-import Content from "@/components/widgets/Content.astro";
-import Content2 from "@/components/widgets/Content2.astro";
-import webDevImg from "@/assets/images/services/web-dev.webp";
-import seoImg from "@/assets/images/services/seo.webp";
-import consultingImg from "@/assets/images/services/consulting.webp";
-
-const services = [
- {
- title: "Web Development",
- description: "Static and dynamic sites built for the modern era.",
- icon: "lucide:globe",
- },
- {
- title: "SEO Optimization",
- description: "We ensure your content is found by those looking for it.",
- icon: "lucide:search",
- },
- {
- title: "IT Consulting",
- description: "Technical advice to scale your projects to the next level.",
- icon: "lucide:rocket",
- },
-];
-const metadata = {
- title: "Services",
- description:
- "Discover our web development, SEO optimization, and technology consulting services.",
-};
----
-
-
-
-
-
-
-
-
- Modern Web Development
-
- We specialize in building fast, secure, and scalable websites using the latest
- technologies. We transform your vision into an impactful digital experience.
-
-
-
-
-
-
- SEO Optimization
-
- We help your business get found by the right people. Our organic positioning
- strategies are designed to improve your organic visibility.
-
-
-
-
-
-
- Technology Consulting
-
- We accompany you in critical decision-making. We evaluate your current infrastructure
- and design personalized roadmaps to take your company to the next technological
- level.
-
-
-
diff --git a/src/pages/widgets.astro b/src/pages/widgets.astro
deleted file mode 100644
index 2f2c44b..0000000
--- a/src/pages/widgets.astro
+++ /dev/null
@@ -1,231 +0,0 @@
----
-import BaseLayout from "@/layouts/BaseLayout.astro";
-import Hero from "@/components/widgets/Hero.astro";
-import Features from "@/components/widgets/Features.astro";
-import Content from "@/components/widgets/Content.astro";
-import Content2 from "@/components/widgets/Content2.astro";
-import ServiceList from "@/components/widgets/ServiceList.astro";
-import Values from "@/components/widgets/Values.astro";
-import aboutImage from "@/assets/images/about-office.webp";
-
-const heroProps = {
- title: "Lorem Ipsum Dolor Sit Amet",
- tagline: "Hero",
- description:
- "Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.",
- actions: [
- {
- text: "Get Started",
- href: "https://github.com/devgelo-labs/astro-starter-pro",
- variant: "primary",
- icon: "lucide:github",
- },
- {
- text: "View Details",
- href: "#",
- variant: "secondary",
- icon: "lucide:arrow-right",
- },
- ],
-};
-
-const featuresProps = {
- title: "Quis Nostrud Exercitation",
- subtitle: "Ullamco laboris nisi ut aliquip ex ea commodo",
- tagline: "Features",
- features: [
- {
- title: "Lorem Ipsum",
- description: "Dolor sit amet, consectetur adipiscing elit.",
- icon: "lucide:box",
- },
- {
- title: "Sed Do Eiusmod",
- description: "Tempor incididunt ut labore et dolore magna aliqua.",
- icon: "lucide:check",
- },
- {
- title: "Ut Enim Ad",
- description: "Minim veniam, quis nostrud exercitation ullamco.",
- icon: "lucide:eye",
- },
- ],
-};
-
-const contentProps = {
- title: "Duis Aute Irure Dolor",
- description: [
- "In reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
- "Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium.",
- ],
- tagline: "Content",
- image: aboutImage,
- imageAlt: "Placeholder image",
- isReversed: false,
- actions: [
- {
- text: "Call to Action",
- href: "#",
- variant: "primary",
- icon: "lucide:github",
- },
- {
- text: "View details",
- href: "#",
- variant: "secondary",
- icon: "lucide:arrow-right",
- },
- ],
-};
-
-const content2Props = {
- title: "Duis Aute Irure Dolor",
- description: [
- "In reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
- "Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium.",
- ],
- tagline: "Content2",
- image: aboutImage,
- imageAlt: "Placeholder image",
- isReversed: false,
- actions: [
- {
- text: "Call to Action",
- href: "#",
- variant: "primary",
- icon: "lucide:github",
- },
- {
- text: "View details",
- href: "#",
- variant: "secondary",
- icon: "lucide:arrow-right",
- },
- ],
-};
-
-const content2InvertedProps = {
- items: [
- {
- title: "Open Source",
- description:
- "Developed under the MIT license, free for personal and commercial use.",
- icon: "lucide:github",
- iconClass: "bg-indigo-500/10 text-indigo-400",
- },
- {
- title: "Community Driven",
- description:
- "Built with the feedback and contributions of the developer community.",
- icon: "lucide:users",
- iconClass: "bg-orange-500/10 text-orange-400",
- },
- {
- title: "Regular Updates",
- description:
- "Continuously improved with the latest technologies and best practices.",
- icon: "lucide:refresh-cw",
- iconClass: "bg-teal-500/10 text-teal-400",
- },
- ],
- image: aboutImage,
- imageAlt: "Community and Open Source",
- isReversed: true,
- actions: [
- {
- text: "Call to Action",
- href: "#",
- variant: "primary",
- icon: "lucide:github",
- },
- {
- text: "View details",
- href: "#",
- variant: "secondary",
- icon: "lucide:arrow-right",
- },
- ],
- title: "Open Source",
- subtitle:
- "Built with the feedback and contributions of the developer community.",
- tagline: "Content2",
-};
-
-const serviceListProps = {
- services: [
- {
- title: "Voluptatem Accusantium",
- description: "Doloremque laudantium, totam rem aperiam.",
- icon: "lucide:rocket",
- },
- {
- title: "Ipsa Quae Ab",
- description: "Illo inventore veritatis et quasi architecto.",
- icon: "lucide:lightbulb",
- },
- {
- title: "Beatae Vitae Dicta",
- description: "Sunt explicabo. Nemo enim ipsam voluptatem.",
- icon: "lucide:wrench",
- },
- ],
- title: "Services that will help you achieve your goals",
- subtitle: "What we offer",
- tagline: "Services",
-};
-
-const valuesProps = {
- items: [
- {
- title: "Corporate",
- description:
- "Curabitur dignissim, felis non sollicitudin molestie, urna mauris pellentesque velit, ut eleifend.",
- },
- {
- title: "Creative",
- description:
- "Aenean condimentum finibus mauris, a fermentum justo pan eget. Sed ultricies, neque quis.",
- },
- {
- title: "Startups",
- description:
- "Donec sed orci tincidunt, aliquam nisl a, condimentum nunc. Nulla varius ex nec ante feugiat.",
- },
- {
- title: "SaaS",
- description:
- "Phasellus tristique, elit dapibus cursus facilisis, lorem augue fringilla nunc, vitae fermentum.",
- },
- {
- title: "Education",
- description:
- "In hac habitasse platea dictumst. Vivamus adipiscing fermentum quam volutpat aliquam. Integer et.",
- },
- {
- title: "Real Estate",
- description:
- "Fusce at massa nec sapien auctor gravida in in tellus. Vivamus a tristique metus, et molestie.",
- },
- ],
- columns: 3 as const,
- tagline: "Values",
- title: "What defines us",
- subtitle: "Principles that guide our daily work",
-};
-
-const metadata = {
- title: "Widgets - Astro Starter Pro",
- description: "Showcase of available components and widgets.",
- ignoreTitleTemplate: true,
-};
----
-
-
-
-
-
-
-
-
-
-
diff --git a/src/types/types.d.ts b/src/types/types.d.ts
index f3d2060..7d7fab3 100644
--- a/src/types/types.d.ts
+++ b/src/types/types.d.ts
@@ -46,6 +46,7 @@ export interface HeroProps extends HeadlineProps {
description?: string; // override or additional? Hero has description, Headline has subtitle. Hero has actions.
actions?: string | CallToAction[];
image?: ImageMetadata | string; // Just in case, though checked Hero.astro and it uses slots mostly or props.
+ bgImage?: string;
}
export interface FeaturesProps extends HeadlineProps {