AstroReactPortfolio

my-portfolio — Astro Portfolio Template

By xexubonete

A bilingual personal portfolio website built with Astro, React, and Tailwind CSS, supporting automatic browser language detection and light/dark theme switching.

Explore the design

Compare the page layouts and mobile experience. Open any screenshot for a closer look.

2 previews
Desktop homepage1 / 2
Desktop captureTop of page

Actual screenshot captured by the server browser.

All pages & views 2

Screenshots show visual appearance; interactive behavior may differ.

Recorded 2026-09-30View source

What stands out

A quick read of the recorded project description.

01

Bilingual English and Spanish interface, with the homepage automatically redirecting to the corresponding language route based on browser language

02

Bento grid layout, with the number of columns gradually changing from 1 to 2 and then 4 depending on screen width

03

Provides light/dark theme switching and uses Motion for card entrance animations

04

Content data and card copy are separated: experience/study data is in lib/constants, while card copy is inside each component

05

Uses pnpm with the version pinned via the packageManager field, requiring corepack to be enabled first

06

Includes a HeadSEO component and a 404 page, and ships with Netlify and Vercel deployment configurations

Template Details

This is a personal portfolio template for developers, built with Astro, React, Tailwind CSS, and TypeScript, with an interface in English and Spanish. The homepage automatically redirects to the /en/ or /es/ route based on the browser language, and each language version includes a homepage and a work page. The main content uses a bento grid layout, where the number and arrangement of cards change from 1 column to 2 columns and then to 4 columns depending on screen width.

In terms of content organization, experience and study data are stored in src/lib/constants.ts and src/lib/constants-es.ts respectively, while the copy for each card is written in the strings object inside the corresponding bilingual component. The cards include IntroCard, SkillsCard, CVCard, AvailableCard, ProjectsCard, AboutCard, GoalsCard, ExperienceCard, QuoteCard, StudyCard, and ContactsCard. The project also provides light/dark theme switching, Lucide icons, Motion animations, and a HeadSEO component.

Before use, note the following: the repository pins the pnpm version via the packageManager field, so you need to run corepack enable first; the build and type-check commands are pnpm check and pnpm build. The repository also includes netlify.toml and vercel.json, indicating that the deployment configuration targets these two platforms. The licenses for third-party assets such as demo images, fonts, and icons need to be checked separately; the MIT license for the code itself does not cover these.

AstroReactPortfolio

Is it right for your project?

Use Cases

  • Developers need a bilingual personal portfolio website to showcase skills, projects, experience, and contact information
  • They want to organize personal introduction, projects, and study experience using a bento card layout
  • They need a site that automatically switches between English and Spanish pages based on browser language
  • They plan to deploy to Netlify or Vercel and want to use the existing configurations in the repository

Suitable For

  • Developers familiar with Astro, React, and Tailwind CSS who can directly modify components and style files
  • Users who need an English/Spanish bilingual portfolio and are willing to maintain two sets of content data themselves
  • Personal sites that accept a bento grid card layout as the primary way of presenting information

Getting started & customization

Use these recorded setup notes alongside the repository instructions for your chosen version.

  1. 1

    After cloning the repository, run corepack enable first to enable the pnpm version pinned by the packageManager field, then run pnpm install

  2. 2

    Use pnpm dev to start the development server, pnpm check for type checking, and pnpm build to build the production version

  3. 3

    For English content, edit src/lib/constants.ts; for Spanish content, edit src/lib/constants-es.ts; card copy is in the strings object of each bilingual component

  4. 4

    Grid column widths and spacing are adjusted in src/components/bento/BentoGrid.astro, and theme colors are modified in src/styles/globals.css

  5. 5

    Third-party assets such as demo images, fonts, and icons need to be checked separately under their respective licenses; external services such as domains and hosting may incur costs

Read repository instructions

License & source material

Usage conditions & limitations

Free to use · keep license notice

This entry covers the free MIT version in the public repository; the free scope is the code for that version and does not mean that external services or third-party assets are free.

Must comply with when using

  • When using, modifying, or distributing the code, retain the original author's copyright notice and the complete MIT license.
  • Free use, modification, and commercial use are allowed, as is distribution of the code; distribution must still include the copyright and license notice.
  • The code is provided as is, and the author does not promise warranties or accept liability for use.

Additional costs & items to verify

  • The project pins the pnpm version via the packageManager field, so you need to run corepack enable first to enable the matching package manager version; otherwise, dependencies may not install as expected.
  • The project depends on third-party libraries such as Lucide Icons and Motion, which follow their own license terms; the MIT license covers only this repository's code, not third-party dependencies.
  • The repository includes netlify.toml and vercel.json deployment configurations; deploying to external hosting platforms such as Netlify or Vercel may incur corresponding service fees.
  • Demo images, fonts, icons, and other third-party assets need to be checked under their respective licenses and cannot be judged solely by the code's MIT license.
  • External services such as domains, hosting, databases, payments, or AI may incur additional charges.
View Original Text Basis

Permission is hereby granted, free of charge

Original License Text

Package manager: **pnpm** (pinned via the `packageManager` field). Use `corepack enable` to get the matching version automatically.

Original README

- [Lucide Icons](https://lucide.dev/) - [Motion](https://motion.dev/)

Original README

├── netlify.toml

Original README
https://github.com/xexubonete/my-portfolio/blob/main/LICENSEhttps://github.com/xexubonete/my-portfolio/blob/main/README.md

Based on the full MIT license and the repository README · 2026-09-30. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.

Project checks & description sources

Template Information

Source platforms
GitHub
Documentation and maintenance reference score
More documented · 88 / 100
Technologies
Astro · React
Website type
Portfolio
How this score is calculated

Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.

What to verify for this project

Repository update recorded
2026-09-10
Screenshot last checked
2026-09-30

A demo link is listed. Check it with your own content and viewport sizes; its presence does not confirm that forms, authentication or payments work.

The catalog identifies Astro as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.

Use a selection guide →

How this description was prepared

AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.

Automatically checked against source and license rules; no manual editorial review.

Inspect the recorded source material

SHA-256: 15177812e80a0b15438ff7742dce3bd88d381faf7cdd2166736e2ea929c28501

2026-09-30T01:07:21.696Z

Source file / repository
# 🎯 My portfolio

A modern, responsive portfolio website built with Astro, React, and Tailwind CSS. Features a bilingual interface (English/Spanish) and a dark/light theme toggle.

## 🚀 Features

- **Bilingual Support**: Automatically detects browser language and switches between English and Spanish
- **Dark/Light Theme**: Toggle between dark and light modes
- **Responsive Design**: A bento-style grid that reflows from 1 → 2 → 4 columns
- **Modern Stack**: Built with Astro, React, and Tailwind CSS
- **Performance Optimized**: Fast loading times and smooth animations
- **SEO Friendly**: Includes meta tags and proper SEO structure

## 🛠️ Tech Stack

- [Astro](https://astro.build/)
- [React](https://reactjs.org/)
- [Tailwind CSS](https://tailwindcss.com/)
- [TypeScript](https://www.typescriptlang.org/)
- [Lucide Icons](https://lucide.dev/)
- [Motion](https://motion.dev/)

> Package manager: **pnpm** (pinned via the `packageManager` field). Use `corepack enable` to get the matching version automatically.

## 🏗️ Project Structure

```
├── astro.config.mjs
├── components.json
├── netlify.toml
├── package.json
├── pnpm-lock.yaml
├── public/                       # static assets (CV PDF, images, memojis)
├── src
│   ├── components
│   │   ├── bento
│   │   │   ├── BentoGrid.astro    # responsive bento layout + entry animation
│   │   │   ├── Card.astro         # shared card shell (fills its grid cell)
│   │   │   ├── Container.astro
│   │   │   ├── ContentCard.astro
│   │   │   └── cards/             # one bilingual component per card
│   │   ├── layout                 # Header, Footer, HeadSEO, Pulse
│   │   └── ui/                    # shadcn/ui primitives (React)
│   ├── i18n
│   │   └── index.ts               # Lang type + per-language data helpers
│   ├── layouts/                   # BaseLayout, TopLayout, BottomLayout
│   ├── lib/                       # constants, constants-es, types, utils
│   ├── pages
│   │   ├── 404.astro
│   │   ├── index.astro            # redirects by browser language
│   │   ├── en/{index,work}.astro  # thin route entries
│   │   └── es/{index,work}.astro
│   └── styles/                    # fonts.css, globals.css
├── tailwind.config.ts
├── tsconfig.json
└── vercel.json
```

## 🚀 Getting Started

1. Clone the repository:

```bash
git clone https://github.com/xexubonete/my-portfolio.git
```

2. Install dependencies:

```bash
corepack enable   # activates the pinned pnpm version
pnpm install
```

3. Run the development server:

```bash
pnpm dev
```

4. Type-check and build for production:

```bash
pnpm check
pnpm build
```

## 🎨 Customization

- Edit `src/lib/constants.ts` (English) and `src/lib/constants-es.ts` (Spanish) for experience and study data.
- Card copy lives co-located inside each bilingual component under `src/components/bento/cards/` (a small `strings[lang]` object per card).
- Adjust the grid (column/row spans, gaps) in `src/components/bento/BentoGrid.astro`.
- Modify theme colors in `src/styles/globals.css`.

## 📱 Cards

`IntroCard`, `SkillsCard`, `CVCard`, `AvailableCard`, `ProjectsCard`, `AboutCard`, `GoalsCard`, `ExperienceCard`, `QuoteCard`, `StudyCard`, `ContactsCard` — each is a single component rendered for both languages.

## 📄 License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

## 📧 Contact

- Email: [[email protected]](mailto:[email protected])
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.