AstroReactPortfolio

dark-minimal — Astro Portfolio Template

By Gothsec

Dark minimal is a dark portfolio template based on Astro, React, and Tailwind CSS, released under the MIT license, including components such as homepage, project list, skills display, and contact form.

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

Built on Astro, with React and TypeScript components

02

Style customization using Tailwind CSS

03

Includes sections such as homepage, projects, skills, navigation, footer, and contact form

04

Built-in LetterGlitch interactive component from ReactBits

05

Footer supports embedding Spotify albums

06

Contact form receives submissions via a Formspree endpoint

Template Details

Dark minimal is an Astro portfolio template published by Gothsec on GitHub, built with React, TypeScript, and Tailwind CSS, with the interface designed in Figma. The template provides dark-themed page sections such as homepage, project showcase, skills list, navigation, footer, and contact form, and includes the LetterGlitch interactive component from ReactBits.

At the content level, the template organizes text and links under src/components with files such as home.astro, projects.astro, contact.astro, footer.astro, nav.astro, and logoWall.astro, requiring manual replacement of placeholder information; src/layouts/Layout.astro centrally manages the title, description, canonical, OG tags, and JSON-LD. Styles are adjusted via Tailwind CSS configuration, and React components are located in the src/React directory.

The template includes two configurations that require external services: the footer displays albums via a Spotify embed iframe, and the contact form relies on a Formspree endpoint. The README provides specific replacement steps for these two areas and notes that it can be deployed to Vercel, Netlify, or GitHub Pages. Local running requires Node.js and npm or pnpm.

AstroReactPortfolio

Is it right for your project?

Use Cases

  • Build a personal portfolio website to showcase projects, skills, and contact information
  • Use as a starter template for further development in mixed Astro and React projects
  • Personal homepage requiring a dark visual style and interactive components
  • Quickly supplement forms and music display via Formspree and Spotify embeds

Suitable For

  • Front-end developers familiar with Astro or React
  • Individual developers who want to use and modify the code for free under the MIT license
  • Users who need to quickly replace placeholder content and deploy to Vercel, Netlify, or GitHub Pages

Getting started & customization

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

  1. 1

    Local running requires Node.js (README recommends v18 or higher) and npm or pnpm; after cloning the repository, run npm install and npm run dev.

  2. 2

    Before use, replace the title, description, canonical, OG tags, and JSON-LD in src/layouts/Layout.astro, as well as the name, links, and project placeholder content in each component.

  3. 3

    For the contact form, create a form on Formspree and replace the form action in src/components/contact.astro with the actual endpoint.

  4. 4

    For Spotify display, replace the album ID in the embedded iframe in src/components/footer.astro.

  5. 5

    The code is under the MIT license; when distributing, retain the copyright and license notice; third-party assets such as demo images, fonts, and icons need separate license verification.

Read repository instructions

License & source material

Usage conditions & limitations

Free to use · keep license notice

This entry covers the free version under the MIT license in the public repository; the free scope is the code of this version and does not mean 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 allowed.
  • 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

  • The contact form relies on the external Formspree service; you need to register a Formspree account and create a form, and replace the form action in contact.astro with your personal endpoint URL to properly receive submissions.
  • The footer Spotify album display requires obtaining embed code from Spotify and replacing the iframe in footer.astro, which is an external service dependency.
  • The README mentions the Formspree form service; actual submissions require configuring a service endpoint, and its usage quotas and fees need separate verification.
  • Demo images, fonts, icons, and other third-party assets need to be checked according to their respective licenses and 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

Create an account on [Formspree](https://formspree.io/)

Original README

Select 'copy embed code'

Original README
https://github.com/Gothsec/dark-minimal/blob/main/LICENSEhttps://github.com/Gothsec/dark-minimal/blob/main/README.md

Compiled by DeepSeek based on repository license and README ·2026-10-01. 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 · 96 / 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-29
Screenshot last checked
2026-10-01

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: c505427db8ec40f0def66982b9995e3d90e9eb2bd20f44539575789a60ed470f

2026-10-01T14:05:22.844Z

Source file / repository
# Dark minimal
> Highly customizable and performant portfolio template built with Astro, React, and Tailwind CSS.

<img width="1920" height="1080" alt="astro-portfolio" src="https://github.com/user-attachments/assets/0df80067-5fe2-4c24-90c4-4eb28e1a7508" />

![Deploy Status](https://img.shields.io/badge/Deploy-Vercel-black?style=flat&logo=vercel)
[![Built with Astro](https://astro.badg.es/v2/built-with-astro/tiny.svg)](https://astro.build)

---

[Demo](https://darkminimal.vercel.app) | [Astro Themes](https://astro.build/themes/details/darkminimal/) | [ReactBits Showcase](https://www.reactbits.dev/showcase) 

## **Features**
- **Blazing fast performance** powered by Astro
- **Beautifully styled** with Tailwind CSS
- **Spotify integration** for showcasing your favorite album
- **Working contact form** powered by Formspree
- **Interactive UI** including the `<LetterGlitch />` component from [ReactBits.dev](https://www.reactbits.dev/)

## **Stack**  
### **Frontend**  
![Astro](https://img.shields.io/badge/Astro-FF5D01?logo=astro&logoColor=white)
![Tailwind](https://img.shields.io/badge/Tailwind_CSS-38B2AC?logo=tailwind-css&logoColor=white)
![TypeScript](https://img.shields.io/badge/TypeScript-3178C6?logo=typescript&logoColor=white)

### **Tools**  
![Figma](https://img.shields.io/badge/Figma-F24E1E?logo=figma&logoColor=white)
![Prettier](https://img.shields.io/badge/Prettier-F7B93E?logo=prettier&logoColor=black)
![Canva](https://img.shields.io/badge/Canva-c900c3?logo=canva&logoColor=white)

## **Configuration Guides**

### **Show your favorite Spotify album (or your own)** ![Spotify](https://img.shields.io/badge/Spotify-06cc1a?logo=spotify&logoColor=white)
1. Choose your Spotify album
2. Access the share options
3. Select 'copy embed code'
```html
<iframe src="https://open.spotify.com/embed/album/YOUR_ALBUM_ID_HERE" style="border-radius:12px border:0;" class="w-full h-40" frameborder="0" allow="autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture"></iframe>
```
4. Insert the embed code on `src/Components/footer.astro`

### **Set up contact form (Formspree)** ![Formspree](https://img.shields.io/badge/Formspree-E21A28?logo=formspree&logoColor=white)
1. Create an account on [Formspree](https://formspree.io/)
2. Create a new project/form and copy your form endpoint URL (it looks like `https://formspree.io/f/your_id`)
3. Open the `src/Components/contact.astro` file
4. Replace the `action` attribute in the `<form>` tag with your endpoint URL:
```html
<form action="https://formspree.io/f/YOUR_FORM_ID_HERE" method="POST">
```

## **Customization Checklist**
Before deploying your own instance, make sure to update these placeholder values with your real information:
- **`src/layouts/Layout.astro`**: Update `title`, `description`, `canonical` URL, `og` tags, and the JSON-LD schema with your own details.
- **`src/components/home.astro`**: Change the greeting "Your Name" and update the GitHub, LinkedIn, and email URLs.
- **`src/components/projects.astro`**: Replace the generic projects (Project One, etc.) with your own, including titles, descriptions and links.
- **`src/components/footer.astro`**: Update the social links, change the Spotify iframe to your playlist, and update the copyright name.

## **Customization**
To make this portfolio your own, you can edit the following files:
- **Global Settings:** Update metadata and title in `src/layouts/Layout.astro`.
- **Content:** Modify the text, links, and details inside the components in `src/Components/` (e.g., `home.astro`, `projects.astro`, `contact.astro`).
- **Styling:** The design uses Tailwind CSS. You can adjust the theme configuration in `tailwind.config.mjs` and custom styles if needed.

## **Project structure**
```text
public/
└── svg/
src/
├── Components/
|    ├── contact.astro
|    ├── footer.astro
|    ├── home.astro
|    ├── logoWall.astro
|    ├── nav.astro
|    └── projects.astro
├── layouts/
|    └── Layout.astro
├── React/
|    ├── LetterGlitch.tsx
|    ├── LikeButton.tsx
|    └── SkillsList.tsx
└── pages/
     └── index.astro
```

## **Local configuration** 

### Prerequisites
- **Node.js** (v18 or higher recommended)
- **npm** or **pnpm**

1. Clone the repo:  
```bash
git clone https://github.com/Gothsec/dark-minimal
```
2. Install dependencies:
```bash  
npm install
```
3. Start the development server:
```bash  
npm run dev
```

## **Deployment**
This project is built with Astro and can be easily deployed to Vercel, Netlify, or GitHub Pages. For the easiest setup, push your repository to GitHub and import it directly into [Vercel](https://vercel.com/) or [Netlify](https://www.netlify.com/).
 
> This project is licensed under the [MIT License](https://opensource.org/licenses/mit). 
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.