Documentation Index Fetch the complete documentation index at: https://mintlify.com/DavidEspinozaRomero/Proyecto-de-vivienda-social-renacer/llms.txt
Use this file to discover all available pages before exploring further.
Overview
Proyecto Renacer uses Astro’s file-based routing system. Each .astro file in /src/pages/ automatically becomes a route based on its filename.
Available Pages
index.astro Home page at / - Main landing page with hero section
como-ser-socio.astro How to become a member at /como-ser-socio
proyecto.astro Project information at /proyecto
requisitos.astro Requirements page at /requisitos
contacto.astro Contact page at /contacto
noticias.astro News page at /noticias
landing.astro Alternative landing page at /landing
design-system.astro Design system showcase at /design-system
Routing System
Astro’s file-based routing automatically creates routes:
File Path URL Route /src/pages/index.astro//src/pages/proyecto.astro/proyecto/src/pages/como-ser-socio.astro/como-ser-socio/src/pages/requisitos.astro/requisitos/src/pages/contacto.astro/contacto/src/pages/noticias.astro/noticias
Page Structure
All pages follow a consistent structure:
Basic Page Anatomy
---
// 1. Imports
import Layout from "../layouts/Layout.astro" ;
import Header from "../components/Header.astro" ;
import Footer from "../components/Footer.astro" ;
import Button from "../components/Button.astro" ;
// 2. Data and configuration
const title = "Page Title | Proyecto Renacer" ;
const description = "SEO description for this page" ;
---
<!-- 3. Template -->
< Layout title = { title } description = { description } >
< Header />
< main >
<!-- Page content here -->
</ main >
< Footer />
</ Layout >
Frontmatter (Script Section)
The code between --- markers runs at build time:
Imports : Load components, layouts, and utilities
Data fetching : Import data from /src/data/
Props : Define page-specific variables
Server-side logic : Runs only during build, not in browser
Template Section
The HTML-like markup below the frontmatter defines the page structure.
Example: Home Page (index.astro)
Let’s examine the home page structure:
---
import Layout from "../layouts/Layout.astro" ;
import Header from "../components/Header.astro" ;
import CardMd from "../components/CardMd.astro" ;
import Button from "../components/Button.astro" ;
import CardSm from "../components/CardSm.astro" ;
import Footer from "../components/Footer.astro" ;
import { socios } from "../data/state" ;
const title = "Proyecto de Vivienda Social Renacer | Terrenos en Ambato" ;
const description = "Proyecto de vivienda social Renacer en Ambato..." ;
---
< Layout title = { title } description = { description } >
< Header />
< div class = "relative flex min-h-screen w-full flex-col overflow-x-hidden" >
< main class = "flex-1" >
<!-- Hero Section -->
< section class = "px-4 md:px-20 lg:px-40 py-12 md:py-20 flex flex-col lg:flex-row items-center gap-12" >
< div class = "flex-1 flex flex-col gap-8" >
< div class = "space-y-4" >
< h1 class = "text-4xl md:text-6xl font-black" >
Tu casa propia en Ambato
< span class = "text-primary" > empieza aquí </ span >
</ h1 >
< p class = "text-lg text-slate-600 dark:text-slate-300 max-w-xl" >
Proyecto de Vivienda Social en Ambato con 4 años de historia...
</ p >
</ div >
< div class = "flex flex-wrap gap-4" >
< Button type = "primary" link = "/proyecto" >
Solicita información
</ Button >
< Button type = "light" link = "/requisitos" >
Conoce los requisitos
</ Button >
</ div >
</ div >
< div class = "flex-1 w-full" >
< CardMd />
</ div >
</ section >
</ main >
</ div >
< Footer />
</ Layout >
Key features:
Uses shared Layout for consistent HTML structure
Imports data from state.ts for dynamic content
Multiple sections with semantic HTML
Responsive design with Tailwind classes
Component composition with Button, CardMd, etc.
Example: Como Ser Socio Page
This page demonstrates progress tracking:
src/pages/como-ser-socio.astro
---
import Layout from "../layouts/Layout.astro" ;
import Footer from "../components/Footer.astro" ;
import Header from "../components/Header.astro" ;
import { socios } from "../data/state" ;
const porcentaje = socios . porcentaje ();
const title = "Cómo ser socio del Proyecto Renacer" ;
const description = "Descubre el proceso para convertirte en socio..." ;
---
< Layout title = { title } description = { description } >
< Header />
< main >
<!-- Hero with background image -->
< section class = "relative" >
< div class = "flex min-h-[520px] bg-cover bg-center"
style = 'background-image: linear-gradient(...), url(...)' >
< h1 class = "text-4xl lg:text-6xl font-black" >
Cómo ser socio del Proyecto Renacer
</ h1 >
</ div >
</ section >
<!-- 4-step process -->
< section class = "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-8" >
<!-- Step 1 -->
< div class = "relative group" >
< h3 class = "text-xl font-bold" > Solicitar información </ h3 >
< p > Primer contacto para conocer los beneficios... </ p >
</ div >
<!-- More steps... -->
</ section >
<!-- Progress bar -->
< section >
< p class = "text-4xl font-black text-primary" >
{ socios . actual } < span class = "text-xl" > / 64 </ span >
</ p >
< div class = "w-full bg-slate-100 h-6 rounded-full" >
< div class = "bg-primary h-full rounded-full"
style = { `width: ${ porcentaje } %` } >
</ div >
</ div >
</ section >
</ main >
< Footer />
</ Layout >
Key features:
Dynamic progress calculation using socios.porcentaje()
Inline styles for dynamic width
Grid layouts for responsive step-by-step display
Hero section with background image
Data Flow
Pages can import and use shared data:
---
import { socios } from "../data/state" ;
// Access data properties
const currentMembers = socios . actual ; // 32
const maxMembers = socios . maximo ; // 64
const progress = socios . porcentaje (); // 50
---
< p > Socios actuales: { currentMembers } de { maxMembers } </ p >
< p > Progreso: { progress } % </ p >
Every page defines SEO-friendly metadata:
---
const title = "Page Title | Proyecto Renacer" ;
const description = "Detailed SEO-optimized description..." ;
---
< Layout title = { title } description = { description } >
<!-- Page content -->
</ Layout >
The Layout component handles:
<title> tag
Meta descriptions
Open Graph tags
Structured data
Styling Approach
Pages use Tailwind CSS utility classes:
<!-- Responsive padding -->
< section class = "px-4 md:px-20 lg:px-40 py-12 md:py-20" >
<!-- Flexbox layout -->
< div class = "flex flex-col lg:flex-row items-center gap-12" >
<!-- Typography -->
< h1 class = "text-4xl md:text-6xl font-black text-slate-900 dark:text-white" >
Heading Text
</ h1 >
</ div >
</ section >
Common patterns:
px-4 md:px-20 lg:px-40 - Responsive horizontal padding
py-12 md:py-20 - Responsive vertical padding
flex-col lg:flex-row - Stack on mobile, row on desktop
dark: prefix - Dark mode variants
Navigation Between Pages
Pages link to each other using standard anchor tags:
< a href = "/proyecto" > Ver el Proyecto </ a >
< a href = "/como-ser-socio" > Cómo ser Socio </ a >
< a href = "/requisitos" > Requisitos </ a >
< a href = "/contacto" > Contacto </ a >
Or using the Button component:
< Button type = "primary" link = "/proyecto" >
Solicita información
</ Button >
Component Composition
Pages compose smaller components:
< CardSm
title = "Vivienda Social"
text = "Respaldo total del MIDUVI enfocado en familias..."
>
< div class = "w-14 h-14 rounded-xl bg-primary/10" >
< span class = "material-symbols-outlined" > real_estate_agent </ span >
</ div >
</ CardSm >
This creates reusable, maintainable page sections.
Best Practices
Only import what you need. Unused imports slow down builds.
Structure content with proper <section>, <article>, <header> tags for accessibility.
Every page should have unique title and description values.
Always include mobile-first responsive classes (sm:, md:, lg:).
If content repeats, extract it to a component.
Next Steps
Components Learn about reusable UI components used in pages
Layouts Understand how layouts wrap and structure pages