Sidebar centrally displays profile, skills, education, certifications, and social links, with each section independently toggleable
astro-sidecar — Astro Portfolio Template
By dmcphearson
A portfolio, resume, and blog theme for Astro with a sidebar layout, where site content is configured centrally in src/config.ts.
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 3
Screenshots show visual appearance; interactive behavior may differ.
What stands out
A quick read of the recorded project description.
Site content is configured centrally in src/config.ts, with TypeScript types providing autocompletion
Blog supports tags, search, archives, RSS, and pagination, as well as drafts and scheduled publishing
Offers light, dark, and auto theme modes, with customizable light and dark color schemes
Optional Giscus comments and Pagefind full-text search, with view transitions on page changes
Template Details
Astro Sidecar is a portfolio, resume, and blog theme for Astro, with a sidebar layout as its core feature. The sidebar contains profile, skills, education, certifications, and social links, and each section can be toggled independently; on mobile, the sidebar collapses and provides a "View my background" toggle entry.
Site content is configured centrally in src/config.ts, covering site information, profile, homepage greeting, skills, education, certifications, projects, navigation, comments, and social links, with TypeScript types providing autocompletion. The homepage provides a project grid, and the blog supports tags, search, archives, RSS, and pagination, as well as drafts and scheduled publishing.
The theme offers light, dark, and auto modes; auto mode follows system preference and shows a toggle button in the navigation. You can also customize background, foreground, accent, muted, and border colors for light and dark modes. Comments are integrated with GitHub Discussions via Giscus, search uses Pagefind, and page transitions include view transitions.
The repository is MIT licensed, allowing free use, modification, commercial use, and distribution of this version of the code; when distributing copies or substantial portions of the code, the copyright notice and the full MIT license notice must be retained. Third-party assets such as demo images, fonts, and icons must be checked against their respective licenses, and external services such as domains and hosting may incur additional charges.
Is it right for your project?
Use Cases
- Build a personal site that simultaneously hosts a portfolio, online resume, and blog
- Manage profile, skills, education, certifications, and project information centrally via a configuration file
- Add reading features such as tags, search, archives, RSS, and pagination to a blog
- Integrate GitHub Discussions via Giscus as the article comment section
Suitable For
- Developers who want to build personal portfolio and resume pages with Astro
- Content creators who need to merge a blog and personal introduction into one site
- Users who prefer maintaining site content through a single configuration file
- Sites that need light, dark, or system-following theme switching
Getting started & customization
Use these recorded setup notes alongside the repository instructions for your chosen version.
- 1
After cloning the repository, run npm install, then run npm run dev to start the development server
- 2
Open src/config.ts and replace the demo content with your own profile, projects, and social links
- 3
Blog posts are placed as Markdown files in the src/content/blog/ directory
- 4
To use Giscus comments, fill in the corresponding GitHub Discussions parameters in the configuration
- 5
To customize colors, set colorPreset to custom and provide light and dark values
License & source material
Usage conditions & limitations
Free to use · keep license noticeThis listing 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 of the 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
- Demo images, fonts, icons, and other third-party assets must be checked against 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.
- Giscus comments are an optional feature that relies on GitHub Discussions; before use, the corresponding parameters must be filled in the configuration and the GitHub service is required.
- The README lists Cloudflare Pages as a deployment method; actual deployment requires using that external hosting service, which may incur additional costs or require account registration.
View Original Text Basis
Permission is hereby granted, free of charge
Original License Text
Optional Giscus comments backed by GitHub Discussions
Original README
https://github.com/dmcphearson/astro-sidecar/blob/main/LICENSEhttps://github.com/dmcphearson/astro-sidecar/blob/main/README.mdDeployment** - [Cloudflare Pages](https://pages.cloudflare.com/)
Original README
Compiled by DeepSeek based on repository license and README ·2026-10-13. 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 · 85 / 100
- Technologies
- Astro
- Website type
- Portfolio · Blog
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-05-20
- Screenshot last checked
- 2026-10-13
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-13
Inspect the recorded source material
SHA-256: ceea28e4bd96a252100428eebcb9252198d467ebf2fc810a80d7723d5569dfae
2026-10-13T00:16:40.617Z
Source file / repository# Astro Sidecar




A portfolio, resume, and blog theme for [Astro](https://astro.build) with a distinctive sidebar layout. Built for professionals who want a personal site that doubles as an online resume.
Configure everything from a single file -- your profile, skills, education, certifications, projects, and blog are all driven by `src/config.ts`.
[Live Demo](https://astro-sidecar.pages.dev/) | [Getting Started](https://astro-sidecar.pages.dev/posts/getting-started-with-astro-sidecar/)
## Features
- [x] Config-driven sidebar with profile, skills, education, certifications, and social links
- [x] Every sidebar section independently toggleable
- [x] Projects grid on the homepage
- [x] Blog with tags, search, archives, RSS, and pagination
- [x] Custom color themes (define your own light/dark accent colors)
- [x] Theme mode: `light`, `dark`, or `auto` (toggle + system preference)
- [x] Optional Giscus comments backed by GitHub Discussions
- [x] Full-text search via Pagefind
- [x] View transitions for smooth page navigation
- [x] Responsive design (sidebar collapses on mobile with "View my background" toggle)
- [x] Social sharing (WhatsApp, Facebook, Bluesky, Mastodon, X, Email)
- [x] Collapsible table of contents
- [x] SEO-friendly with Open Graph metadata
- [x] Accessible (keyboard navigation, screen readers, sufficient contrast)
- [x] Sitemap and RSS feed
- [x] Draft posts and scheduled publishing
## Lighthouse Score
<p align="center">
<a href="https://pagespeed.web.dev/analysis/https-astro-sidecar-pages-dev/27rfvq88oc?form_factor=desktop">
<img width="710" alt="Astro Sidecar Lighthouse Score" src="lighthouse-score.svg">
</a>
</p>
## Project Structure
```
/
├── public/
│ ├── assets/ # Profile photo, company logo, post images
│ ├── fonts/ # Self-hosted Inter font files
│ └── favicon.ico
├── src/
│ ├── assets/
│ │ └── icons/ # SVG icons (social, UI)
│ ├── components/ # Astro components (Sidebar, Header, Card, etc.)
│ ├── content/
│ │ └── blog/ # Markdown blog posts
│ ├── layouts/ # Page layouts (SidebarLayout, PostDetails, etc.)
│ ├── pages/ # File-based routing
│ ├── scripts/ # Client-side scripts (theme toggle)
│ ├── styles/ # Global CSS and typography
│ ├── utils/ # Post filtering, sorting, slugification
│ ├── config.ts # All site configuration lives here
│ ├── constants.ts # Share link definitions
│ ├── content.config.ts
│ └── types.ts # TypeScript types for all config sections
└── astro.config.ts
```
## Quick Start
```bash
git clone https://github.com/dmcphearson/astro-sidecar.git my-site
cd my-site
npm install
npm run dev
```
Open `src/config.ts` and replace the demo content with your own.
## Configuration
All site content is configured in `src/config.ts`. Each section is typed with TypeScript for autocompletion.
| Section | Description |
|---------|-------------|
| `SITE` | URL, title, description, theme mode, custom colors, posts per page |
| `PROFILE` | Photo, name, tagline, current company (optional) |
| `HERO` | Homepage greeting and intro paragraphs |
| `SKILLS` | Scrolling skill tags in the sidebar (toggleable) |
| `EDUCATION` | Degree, year, and school entries (toggleable) |
| `CERTIFICATIONS` | Certification name strings (toggleable) |
| `PROJECTS` | Homepage project grid with name, description, status, optional URL |
| `NAV_ITEMS` | Navigation menu links |
| `COMMENTS` | Giscus comment integration |
| `SOCIALS` | Social links (GitHub, LinkedIn, Mail, Substack, etc.) |
### Custom Colors
The default theme uses a blue accent in light mode and green in dark mode. To define your own colors, set `colorPreset: "custom"` and provide light and dark values:
```ts
colorPreset: "custom",
customColors: {
light: { background: "#fafaf8", foreground: "#171717", accent: "#9333ea", muted: "#f3f4f6", border: "#e5e7eb" },
dark: { background: "#101012", foreground: "#f5f5f7", accent: "#c084fc", muted: "#262628", border: "#373738" },
},
```
### Theme Modes
- `"dark"` -- dark mode only, no toggle
- `"light"` -- light mode only, no toggle
- `"auto"` -- respects system preference, shows a toggle in the nav
## Blog Posts
Create markdown files in `src/content/blog/`:
```yaml
---
title: Your Post Title
author: Your Name
pubDatetime: 2026-01-15T10:00:00Z
slug: your-post-slug
featured: true
draft: false
tags:
- tag1
- tag2
description: A short description for previews and SEO.
---
```
## Tech Stack
**Framework** - [Astro](https://astro.build/) v6
**Type Checking** - [TypeScript](https://www.typescriptlang.org/)
**Styling** - [Tailwind CSS](https://tailwindcss.com/) v4
**Static Search** - [Pagefind](https://pagefind.app/)
**Icons** - [Tabler Icons](https://tabler-icons.io/)
**Code Formatting** - [Prettier](https://prettier.io/)
**Linting** - [ESLint](https://eslint.org)
**Deployment** - [Cloudflare Pages](https://pages.cloudflare.com/)
## Commands
| Command | Action |
|---------|--------|
| `npm run dev` | Start dev server at `localhost:4321` |
| `npm run build` | Build production site to `./dist/` |
| `npm run preview` | Preview production build locally |
| `npm run format` | Format code with Prettier |
| `npm run lint` | Lint with ESLint |
## Acknowledgments
Inspired by [AstroPaper](https://github.com/satnaing/astro-paper) by Sat Naing.
## License
MIT
Explore similar templates
Compare previews and descriptions within the same stack and category.

astrowind
AstroWind is a free, open-source Astro starter theme using Astro and Tailwind CSS, released under the MIT license.
Astro · Blog

astro-paper
An Astro blog theme with Markdown/MDX content, Tailwind styling and Pagefind search. Search is a feature of the blog, rather than a separate tool-site product.
Astro · Blog

fuwari
Fuwari is a static blog template built with Astro and Tailwind CSS for personal blogs. It manages posts as Markdown files in src/content/posts/, with frontmatter for title, date, description, cover, tags, categories, draft status, and language.
Astro · Blog

Firefly
Firefly is a clean personal blog theme forked from Astro and Fuwari, offering four background modes, single/double sidebar and list/grid layouts, Pagefind client-side full-text search, and a six-language UI.
Astro · Blog

astro-theme-cactus
An Astro blog and notes starter with Markdown/MDX content, Tailwind styling and Pagefind search. Its main purpose is publishing posts and notes.
Astro · Blog

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
