Skip to content
 
 

Repository files navigation

Gustavo Herrera – Personal Portfolio

Astro React Tailwind CSS TypeScript License

Personal developer portfolio and showcase for Gustavo Herrera (@arcanoix), Senior Fullstack Developer with 15+ years of experience. Built with Astro, React, TypeScript, and Tailwind CSS for speed, accessibility, and clean component architecture.

Portfolio Cover


✨ Features

  • Modern Architecture: Fast static site generation powered by Astro 5 islands architecture.
  • Interactive Components: Client-side interactive sections built with React 19, Tailwind CSS, and Radix UI primitives.
  • Dark / Light Mode: Instant theme switching with local storage persistence and system preference fallback.
  • Projects Showcase: Curated selection of real-world client platforms, open-source tools, and web applications.
  • Experience & Skills Timeline: Chronological track record in software engineering, leadership, and core technical skills.
  • Dockerized Environment: Ready-to-use Docker and Docker Compose configuration for quick local setup.

🛠️ Tech Stack

Core & Frameworks

  • Astro 5 - Web framework for content-driven websites
  • React 19 - UI library for dynamic client components
  • TypeScript - Strict typing and maintainability

Styling & UI

Tooling & DevOps

  • Prettier with prettier-plugin-astro - Code formatting
  • Docker & Docker Compose - Containerized development

🚀 Getting Started

Prerequisites

  • Node.js (v18+ or v20+ recommended)
  • npm (or pnpm / yarn)
  • (Optional) Docker & Docker Compose

Local Development

  1. Clone the repository:

    git clone https://github.com/arcanoix/gustavoherrera.dev.git
    cd gustavoherrera.dev
  2. Install dependencies:

    npm install
  3. Start the development server:

    npm run dev
  4. Navigate to http://localhost:4321 in your browser.

Running with Docker

Run the development environment in a container without installing local Node dependencies:

docker compose up

The app will be available at http://localhost:4321 with hot reloading enabled.


📜 Available Scripts

Command Description
npm run dev Starts the Astro development server at localhost:4321
npm run build Builds the static site for production into the dist/ directory
npm run preview Previews the production build locally
npm run prettier Formats all files across the repository

📁 Project Structure

├── images/             # Static showcase assets & covers
├── public/             # Public assets (icons, thumbnails, media)
├── src/
│   ├── components/     # UI components (ProjectSection, SkillsSection, Timeline, etc.)
│   ├── content/        # Data collections (projects.ts, skills.ts, experiences.ts, posts.ts)
│   ├── layouts/        # Astro layout templates
│   ├── lib/            # Shared utilities
│   ├── pages/          # Astro file-based routes (index.astro)
│   └── styles/         # Global styles and Tailwind imports
├── astro.config.mjs    # Astro configuration with React and Tailwind
├── compose.yaml        # Docker Compose configuration
├── Dockerfile.dev      # Dockerfile for development
├── package.json        # Dependencies and scripts
└── tailwind.config.mjs # Tailwind CSS configuration

👤 Author

Gustavo Herrera


📄 License

This project is licensed under the Apache-2.0 License.

Releases

Packages

Contributors

Languages