AstroPortfolio

my-portfolio — Astro Portfolio Template

By rkeshs

my-portfolio is an Astro-based single-page portfolio template whose content is managed in a single TypeScript file, with an MDX blog, RSS, and sitemap included.

Explore the design

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

3 previews
Desktop homepage1 / 3
Desktop captureTop of page

Actual screenshot captured by the server browser.

All pages & views 3

Screenshots show visual appearance; interactive behavior may differ.

Recorded 2026-10-04View source

What stands out

A quick read of the recorded project description.

01

Astro static output, built as static files under dist/, with very little client-side JavaScript

02

Single-page portfolio structure covering bio, experience, skills, projects, awards, and education sections

03

Supports light/dark themes and a reduced-motion preference

04

Content is managed centrally in src/lib/data.ts, and the avatar is generated by Astro at build time as responsive AVIF/JPEG variants

05

Built-in MDX blog based on content collections, generating an RSS feed and sitemap

06

Provides scripts for Oxfmt formatting, Oxlint checking, TypeScript, and Astro diagnostics

Template Details

my-portfolio is a responsive single-page portfolio template open-sourced by developer Rishikesh S. It is built with Astro, styled with Tailwind CSS, produces static files, and ships very little client-side JavaScript. The page includes sections for bio, work experience, skills, projects, awards, and education, and supports light/dark themes and a reduced-motion preference.

Content maintenance is fairly centralized: profile details, homepage and footer copy, section intros, experience, skills, projects, awards, and education are all edited in src/lib/data.ts; replacing the avatar at src/assets/profile.jpg causes Astro to generate responsive AVIF and JPEG variants at build time. Project artwork is mapped through the artwork field of selectedWork entries to branches in ProjectArtwork.astro. The social preview image is at public/og.png and can be re-captured based on docs/og-image-source.html.

The blog is based on Astro content collections: add a .md or .mdx file under src/content/blog and fill in frontmatter such as title, description, pubDate, and draft. Once draft is set to false, the post enters /blog, the static post routes, and the sitemap, and appears in /rss.xml.

Before use, note the following: the README requires Bun 1.3.14 and Node.js 22.12 or newer; local development starts with bun run dev, with the default address at http://localhost:4321. The site canonical URL is determined by the ORIGIN environment variable, falling back to the production domain configured in astro.config.ts when unset, affecting canonical, sitemap, and RSS. The build outputs to dist/ and can be deployed to Vercel or any static host. Third-party assets such as demo images, fonts, and icons must be checked separately under their own licenses; the code itself is MIT licensed.

AstroPortfolio

Is it right for your project?

Use Cases

  • Developers building a single-page personal portfolio to show experience, skills, and projects
  • Maintaining a static technical blog with RSS alongside a portfolio
  • Deploying to Vercel or any static hosting service
  • Modifying and redistributing based on MIT-licensed code

Suitable For

  • Developers familiar with Astro or willing to use Bun and Node.js as described in the README
  • People who want to maintain portfolio content centrally in a single TypeScript file
  • Personal sites that need static output and low client-side JavaScript
  • Users planning to write posts in Markdown/MDX and output RSS and a sitemap

Getting started & customization

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

  1. 1

    Environment requirements: Bun 1.3.14, Node.js 22.12 or newer

  2. 2

    After cloning the repository, run bun install, then start with bun run dev; the default address is http://localhost:4321

  3. 3

    To override the site URL, copy .env.example to .env; ORIGIN takes precedence over the production domain in astro.config.ts

  4. 4

    Edit profile, experience, skills, projects, and more in src/lib/data.ts; replace the avatar at src/assets/profile.jpg

  5. 5

    Blog posts go in src/content/blog; only after draft is set to false do they enter the list, static routes, sitemap, and RSS

Read repository instructions

License & source material

Usage conditions & limitations

Free to use · keep license notice

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

Must comply with when using

  • You may use, modify, commercialize, and distribute the code of this version for free.
  • 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

  • Demo images, fonts, icons, and other third-party assets must be checked under their own licenses and cannot be judged solely by the code's MIT license.
  • External services such as domains, hosting, databases, payments, or AI may incur separate charges.
  • Using this template requires Bun 1.3.14 and Node.js 22.12 or newer; if the environment does not meet these requirements, installation and build per the README will not work.
  • The site canonical URL is determined by the ORIGIN environment variable, falling back to the production domain in astro.config.ts when unset, affecting canonical, sitemap, and RSS.
  • The build output is static files under dist/ and must be deployed by you to Vercel or any static hosting service; the template itself does not provide hosting.
  • The template integrates Vercel Analytics by default; using this feature involves Vercel as an external service.
  • Dependencies are pinned to exact versions; when upgrading, update both package.json and bun.lock, otherwise version inconsistencies may occur.
View Original Text Basis

Permission is hereby granted, free of charge

Original License Text

- [Bun 1.3.14](https://bun.sh/) - Node.js 22.12 or newer (required by Astro 7)

Original README

Copy `.env.example` to `.env` when you need to override the site URL locally. `ORIGIN` takes precedence over the production URL that `astro.config.ts` falls back to

Original README

The site builds to static files in `dist/` and can be deployed to Vercel or any static host.

Original README

Static Astro output with Vercel Analytics

Original README

Dependencies are pinned to exact versions in `package.json`; update `package.json` and `bun.lock` together with Bun.

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

Compiled by DeepSeek based on repository license and README ·2026-10-04. 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
Astro Themes
Documentation and maintenance reference score
More documented · 79 / 100
Technologies
Astro
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-13
Screenshot last checked
2026-10-04

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.

Review declaration: [email protected] · 2026-10-04

Inspect the recorded source material

SHA-256: 5dec12bae230c62ffe35e9da0e119ce6357874ea90dfd6e3c96258f1937eb46a

2026-10-04T08:04:26.253Z

Source file / repository
# Modern Portfolio Template

A responsive portfolio template built with Astro 7 and Tailwind CSS 4, shipping almost no client-side JavaScript.

![Portfolio screenshot](./screenshot.jpg)

## Features

- Responsive single-page portfolio
- Light and dark themes
- Reduced-motion support
- Static Astro output with Vercel Analytics
- Self-hosted, preloaded fonts and responsive AVIF/JPEG images
- Content managed from one TypeScript file
- Type-safe MDX blog with RSS feed and sitemap generation

## Requirements

- [Bun 1.3.14](https://bun.sh/)
- Node.js 22.12 or newer (required by Astro 7)

## Local development

```bash
git clone https://github.com/rkeshs/my-portfolio.git
cd my-portfolio
bun install
bun run dev
```

Open `http://localhost:4321`.

Copy `.env.example` to `.env` when you need to override the site URL locally. `ORIGIN` takes precedence over the production URL that `astro.config.ts` falls back to, so canonical URLs, the sitemap, and the RSS feed are correct in every environment.

## Commands

| Command                | Purpose                                            |
| ---------------------- | -------------------------------------------------- |
| `bun run dev`          | Start the development server                       |
| `bun run check`        | Run Astro and TypeScript diagnostics               |
| `bun run format`       | Format supported files with Oxfmt                  |
| `bun run format:check` | Check formatting without changing files            |
| `bun run lint`         | Run Oxlint correctness and code-quality checks     |
| `bun run typecheck`    | Run TypeScript and Astro diagnostics               |
| `bun run build`        | Create the production build in `dist/`             |
| `bun run preview`      | Preview the production build locally               |
| `bun run astro sync`   | Regenerate Astro types after configuration changes |

## Update portfolio content

Edit [`src/lib/data.ts`](src/lib/data.ts) to update personal details, hero and footer copy, section intros, work experience, skills, projects, awards, and education. Replace `src/assets/profile.jpg` to update the portrait; Astro generates the responsive AVIF and JPEG variants at build time.

Each entry in `selectedWork` names its illustration through `artwork`, which maps to a branch of [`src/components/ProjectArtwork.astro`](src/components/ProjectArtwork.astro).

The social preview image lives at `public/og.png`. Regenerate it from [`docs/og-image-source.html`](docs/og-image-source.html) with a 1200×630 screenshot after changing the copy.

## Publish a blog post

Add an `.md` or `.mdx` file under [`src/content/blog`](src/content/blog) with this frontmatter:

```yaml
---
title: "Post title"
description: "A concise summary for lists and search results."
pubDate: 2026-07-18
draft: true
---
```

Set `draft` to `false` to include the post in `/blog`, static article routes, and the sitemap. An optional `updatedDate` accepts the same date format.

Published posts also appear in the RSS feed at `/rss.xml`.

## Production verification

```bash
bun install --frozen-lockfile
bun run astro sync
bun run format:check
bun run lint
bun run typecheck
bun run build
```

Dependencies are pinned to exact versions in `package.json`; update `package.json` and `bun.lock` together with Bun.

## Deployment

The site builds to static files in `dist/` and can be deployed to Vercel or any static host. The canonical site URL comes from the `ORIGIN` environment variable, falling back to the production domain configured in `astro.config.ts`.

## License

MIT © 2026 Rishikesh S.
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.