Built with Astro and React, with components written in TypeScript
Astro-Theme-Astroway — Astro Portfolio Template
By gio-del
Astro-Theme-Astroway is a personal portfolio template built on Astro and React, featuring sections for about, projects, blog, and contact, styled with Tailwind CSS, and including built-in dark mode, blog fuzzy search, RSS, and basic SEO files.
Explore the design
Compare the page layouts and mobile experience. Open any screenshot for a closer look.
Actual screenshot captured by the server browser.
All pages & views 2
Screenshots show visual appearance; interactive behavior may differ.
What stands out
A quick read of the recorded project description.
Homepage includes sections for about, education, experience, projects, blog, and contact
Styling controlled with Tailwind CSS, theme colors adjustable in tailwind.config.mjs
Built-in dark mode toggle and responsive layout
Blog supports fuzzy search based on Fuse.js and provides RSS subscription
Includes SEO-related files such as robots.txt and sitemap.xml
Template Details
Astro-Theme-Astroway is a personal portfolio template published on GitHub, maintained by gio-del under the MIT license. The template uses Astro as its primary framework, with some interactive components written in React and TypeScript, and styling based on Tailwind CSS.
The page structure covers common portfolio needs: the homepage includes about (education, experience), projects, blog, and contact sections. Blog posts are stored as Markdown files in the src/pages/posts directory, with an article list page and article detail layout. Personal data is maintained centrally in src/data/info.ts, while components such as project cards and carousel, and the contact form, are located under src/components.
In terms of features, the template provides dark mode toggle, responsive layout, blog fuzzy search based on Fuse.js, RSS subscription, and SEO-related files such as robots.txt and sitemap.xml. The README lists internationalization (i18n) and a Projects collection as to-dos, indicating these two are not yet implemented.
Usage limitations and notes: contact section data is maintained separately in both info.ts and Contact.tsx, so adding or removing entries requires synchronized changes; RSS requires setting the site address in astro.config.mjs and adjusting rss.xml.js in the pages directory; SEO information must be modified in the head section of BaseLayout.astro; theme colors are adjusted via tailwind.config.mjs in the root directory. Third-party assets such as demo images, fonts, and icons in the repository must be checked individually under their respective licenses.
Is it right for your project?
Use Cases
- Building a personal portfolio website to showcase educational background, work experience, and projects
- Including a Markdown blog in the portfolio with article search and RSS subscription
- Sites that want to use a mixed Astro and React tech stack with Tailwind CSS for custom styling
- Static personal sites that require dark mode and responsive layout
Suitable For
- Developers with basic npm and Astro knowledge who can modify configuration and components themselves
- Personal portfolio or resume-style sites that need a quick start
- Users who want to maintain blog content in Markdown
Getting started & customization
Use these recorded setup notes alongside the repository instructions for your chosen version.
- 1
Create a new repository via the repository's Use this template, clone it, and run npm install to install dependencies
- 2
Run npm run dev to start the local development server, default address localhost:4321
- 3
Fill in personal information in src/data/info.ts; when adding or removing contact section entries, synchronize changes in src/components/contact_section/Contact.tsx
- 4
Set the site address in astro.config.mjs and adjust src/pages/rss.xml.js to generate correct RSS
- 5
Modify SEO information in the head section of src/layouts/BaseLayout.astro, and adjust theme colors in tailwind.config.mjs
License & source material
Usage conditions & limitations
Free to use · keep license noticeThis entry covers the free version under MIT license from the public repository; the free scope is the code of this version and does not imply that external services or third-party assets are free.
Must comply with when using
- Free use, modification, commercial use, and distribution of this version's code are permitted.
- When distributing copies or substantial portions of the code, retain the original author's copyright notice and the full MIT license notice.
- The code is provided as is; warranties and limitations of liability are governed by the original license and applicable law.
Additional costs & items to verify
- Contact section data must be maintained separately in info.ts and Contact.tsx; when adding or removing entries, Contact.tsx must be synchronized, otherwise the page display will be inconsistent.
- The RSS subscription feature requires manually setting the site URL in astro.config.mjs and adjusting rss.xml.js in the pages directory, otherwise the generated subscription link will be incorrect.
- SEO information must be manually modified in the head section of src/layouts/BaseLayout.astro; the template does not automatically generate site-specific metadata.
- Theme colors must be adjusted via tailwind.config.js in the root directory; the default styles will not automatically adapt to personal brand colors.
- Internationalization (i18n) and the Projects collection are not yet implemented and are to-do features, not available in the current version.
- Demo images, fonts, icons, and other third-party assets must be checked under their respective licenses; they cannot be judged solely by the code's MIT license.
- External services such as domain, hosting, database, payment, or AI may incur additional charges.
View Original Text Basis
Permission is hereby granted, free of charge
Original License Text
If you add/remove something from the contact section in the `info.ts` file, you will need to update the `Contact.tsx` file located in the `src/components/contact_section` directory by simply reflecting the changes you made in the `info.ts` file.
Original README
Update the `site` entry in the `astro.config.mjs` file with your site url.
Original README
Modify the head section of the `BaseLayout.astro` file located in the `src/layouts` directory to reflect your site's information.
Original README
This portfolio template uses Tailwind CSS for styling. You can modify the colors used in the portfolio by updating the `tailwind.config.js` file located in the root of the project.
Original README
https://github.com/gio-del/Astro-Theme-Astroway/blob/main/LICENSEhttps://github.com/gio-del/Astro-Theme-Astroway/blob/main/README.md- [ ] Internationalization (i18n) - [ ] Projects collection
Original README
Compiled by DeepSeek based on repository license and README ·2026-10-02. 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 · 86 / 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
- 2025-01-24
- Screenshot last checked
- 2026-10-02
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: f6e8e282ba051277ff62be8d50f8b7b96b9d913d38924a166068b856e3095c3b
2026-10-02T09:43:19.023Z
Source file / repository# 1. Astro Portfolio Template
[](https://stackblitz.com/github/gio-del/Astro-Portfolio-Template)
[](https://codesandbox.io/p/sandbox/github/gio-del/Astro-Portfolio-Template)
[](https://app.codeanywhere.com/#https://github.com/https://github.com/gio-del/Astro-Portfolio-Template)
## 1.1. Table of Contents
- [1. Astro Portfolio Template](#1-astro-portfolio-template)
- [1.1. Table of Contents](#11-table-of-contents)
- [1.2. Features :open\_hands:](#12-features-open_hands)
- [1.3. What's next? :rocket:](#13-whats-next-rocket)
- [1.4. How to use this template :toolbox:](#14-how-to-use-this-template-toolbox)
- [1.4.1. Notes about the contact section :email:](#141-notes-about-the-contact-section-email)
- [1.4.2. Notes about RSS feed :newspaper:](#142-notes-about-rss-feed-newspaper)
- [1.4.3. Notes about SEO :robot:](#143-notes-about-seo-robot)
- [1.4.4. Notes about styles :art:](#144-notes-about-styles-art)
- [1.5. Project Structure :rocket:](#15-project-structure-rocket)
- [1.6. Commands :genie\_man:](#16-commands-genie_man)
- [1.7. Tools Used :hammer\_and\_wrench:](#17-tools-used-hammer_and_wrench)
- [1.8. Contributing :building\_construction:](#18-contributing-building_construction)
- [1.9. License :memo:](#19-license-memo)
## 1.2. Features :open_hands:
- Dark mode toggle
- Responsive design
- Easy to customize and extend personal data
- Fuzzy search for blog posts
- SEO friendly (robots.txt, sitemap.xml)
- RSS feed
## 1.3. What's next? :rocket:
- [ ] Internationalization (i18n)
- [ ] Projects collection
- Feel free to open an issue or submit a pull request with your ideas for improving this portfolio template (see [Contributing](#18-contributing-building_construction))
## 1.4. How to use this template :toolbox:
Note: this mini-guide assumes you have `npm` installed on your machine, if you don't, you can download it following the instructions [here](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm)
1. Click on the "Use this template" button at the top of the repository.
2. Create a new repository based on this template.
3. Clone the repository to your local machine.
4. Install the dependencies by running `npm install`
5. You can now start the development server by running `npm run dev` (see this [section](#16-commands-genie_man) for more commands)
6. Now you can start customizing the portfolio template by updating the `/data/info.ts` file with your personal information.
### 1.4.1. Notes about the contact section :email:
If you add/remove something from the contact section in the `info.ts` file, you will need to update the `Contact.tsx` file located in the `src/components/contact_section` directory by simply reflecting the changes you made in the `info.ts` file. Although, this choice may seem redundant, it allows to separate the data from the view.
### 1.4.2. Notes about RSS feed :newspaper:
The RSS feed is generated using the `astro-plugin-feed` plugin.
To customize it:
1. Update the `site` entry in the `astro.config.mjs` file with your site url.
2. Modify the `rss.xml.js` file located in the `pages` directory to reflect your site's information.
### 1.4.3. Notes about SEO :robot:
Modify the head section of the `BaseLayout.astro` file located in the `src/layouts` directory to reflect your site's information.
### 1.4.4. Notes about styles :art:
This portfolio template uses Tailwind CSS for styling. You can modify the colors used in the portfolio by updating the `tailwind.config.js` file located in the root of the project.
## 1.5. Project Structure :rocket:
Inside of this portfolio template, you will find the following files and directories:
```text
.
├── astro.config.mjs
├── LICENSE
├── package.json
├── package-lock.json
├── public
│ ├── favicon.svg
│ ├── pic.jpg
│ └── Resume.pdf
├── README.md
├── src
│ ├── components
│ │ ├── about_section
│ │ │ ├── About.tsx
│ │ │ ├── Education.tsx
│ │ │ └── Experience.tsx
│ │ ├── contact_section
│ │ │ └── Contact.tsx
│ │ ├── navbar
│ │ │ ├── Hamburger.tsx
│ │ │ └── Nav.jsx
│ │ ├── post_section
│ │ │ ├── Blog.astro
│ │ │ └── Post.astro
│ │ ├── projects_section
│ │ │ ├── ProjectCard.tsx
│ │ │ └── ProjectCarousel.tsx
│ │ ├── search
│ │ │ └── Search.tsx
│ │ ├── ToggleDarkMode.jsx
│ │ └── TopButton.jsx
│ ├── data
│ │ └── info.ts
│ ├── env.d.ts
│ ├── layouts
│ │ ├── BaseLayout.astro
│ │ └── PostLayout.astro
│ ├── pages
│ │ ├── index.astro
│ │ ├── posts
│ │ │ └── your-post-title.md
│ │ └── posts.astro
│ └── styles
│ └── global.css
├── tailwind.config.mjs
└── tsconfig.json
```
## 1.6. Commands :genie_man:
All commands are run from the root of the project, from a terminal:
| Command | Action |
| :------------------------ | :----------------------------------------------- |
| `npm install` | Installs dependencies |
| `npm run dev` | Starts local dev server at `localhost:4321` |
| `npm run build` | Build your production site to `./dist/` |
| `npm run preview` | Preview your build locally, before deploying |
| `npm run astro ...` | Run CLI commands like `astro add`, `astro check` |
| `npm run astro -- --help` | Get help using the Astro CLI |
## 1.7. Tools Used :hammer_and_wrench:
This portfolio template uses the following tools/libraries/resources:
- [Astro](https://astro.build/)
- [Tailwind CSS](https://tailwindcss.com/)
- [Font Awesome](https://fontawesome.com/)
- [React](https://reactjs.org/)
- [TypeScript](https://www.typescriptlang.org/)
- [Fuse.js](https://fusejs.io/)
## 1.8. Contributing :building_construction:
If you would like to contribute to the Astro Portfolio Template, follow these steps:
1. Fork the repository.
2. Create a new branch for your feature or bug fix.
3. Make your changes and commit them.
4. Push your changes to your forked repository.
5. Submit a pull request to the main repository.
Thank you very much for your contributions!
See the [CONTRIBUTING.md](CONTRIBUTING.md) file for more information.
## 1.9. License :memo:
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
Explore similar templates
Compare previews and descriptions within the same stack and category.

astro-theme-cactus
Astro Cactus is an Astro-based blog and portfolio theme that uses Markdown/MDX content collections to manage posts, notes, and tags, with frontmatter type-checked by a schema.
Astro · Portfolio

astrofy
Astrofy is a free and open-source personal portfolio website template built with Astro and TailwindCSS, with built-in blog, CV timeline, project showcase, store, and RSS feed modules.
Astro · Portfolio

astro-nano
Astro Nano is a static, minimalist portfolio and blog template built with Astro, Tailwind, and TypeScript without frontend frameworks. It includes light/dark themes, animated UI, automatic sitemap and RSS feed generation, and Markdown/MDX support with component imports.
Astro · Portfolio

astro-erudite
astro-erudite is an opinionated, unstyled static blog template built with Astro and native CSS, with no UI or CSS framework and minimal dependencies.
Astro · Portfolio

astro-sphere
Astro Sphere is a static, minimalist portfolio and blog theme maintained by markhorn-dev, built mainly with Astro, Tailwind, and TypeScript, with a small amount of SolidJS for stateful components.
Astro · Portfolio

astro-micro
Astro Micro is a framework-free blog and portfolio theme for Astro, forked from Astro Nano. It adds Pagefind search and Giscus comments while retaining type safety, sitemap, RSS, Markdown and MDX support, and TailwindCSS with system, light, and dark themes.
Astro · Portfolio
