AstroPortfolioBlog

Quasar-Astro-Theme — Astro Portfolio Template

By SingyanLabs

Quasar-Astro-Theme is a free theme developed by SingyanLabs based on Astro. It includes modules for blog, notes, moments, albums, music, and more. Interface interactions are implemented with pure CSS and vanilla JavaScript, and content is managed through Markdown files.

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-07View source

What stands out

A quick read of the recorded project description.

01

Markdown content management based on Astro Content Collections, with articles, notes, moments, friend links, and music all maintained as files

02

Includes multiple content modules such as long-form articles, notes, albums, moments, music, and friend links; the notes list uses pure CSS for expansion and tag filtering

03

The album module connects to the Google Photos API via GooglePhotosFetcher.ts and provides a responsive masonry layout, lazy loading, and a global lightbox

04

The music module uses a custom vanilla JavaScript audio player engine with a dynamic visualization background and a side control panel

05

The homepage provides a 3D Earth and parallax text, and includes built-in widgets such as weather, studio status, and quotes

06

Most configuration, including site name, navigation, subpage copy, and feature toggles, is centralized in config.ts at the root

Template Details

Quasar-Astro-Theme is a blog and personal site theme based on Astro, released under the MIT license with code hosted on GitHub. The theme separates content from code: articles, notes, moments, friend links, music, and other information are stored as Markdown files in the src/content/ directory and validated through Astro Content Collections, without requiring an external CMS or database. Most site configuration is centralized in config.ts at the root, allowing adjustment of site name and SEO metadata, navigation links, subpage copy and feature toggles, social links, and more.

The theme includes multiple content modules: long-form articles and notes, photo albums, a Weibo-like moments feed, a music player, friend links and site recommendations, plus a 3D Earth and parallax text on the homepage. The album module uses GooglePhotosFetcher.ts to call the Google Photos API for cloud media; the music module uses a custom vanilla JavaScript player engine; and local generation tools under pages/generator/ are provided for generating SVG covers, favicons, and site color schemes.

Before use, note the following: the runtime requires Node.js v22.12.0 or higher, and pnpm is recommended for dependency management; the album feature depends on the Google Photos API and requires you to prepare the corresponding credentials; the generator tools are intended only for local or development environments. The licenses for third-party assets such as demo images, fonts, and icons must be checked separately; the MIT license for the code does not cover these assets.

AstroPortfolioBlog

Is it right for your project?

Use Cases

  • Build a personal blog focused on Markdown writing, publishing both long-form articles and short notes
  • Create a personal homepage with album, moments, and music pages to showcase multiple types of content in one place
  • Provide friend link cards, site information panels, and random redirect entries for friend links and site recommendations
  • Use the built-in generator locally to create SVG covers, favicons, and site color schemes

Suitable For

  • Developers familiar with Astro or willing to configure an Astro project according to the documentation
  • Individual site owners who want to manage content with Markdown files rather than an external CMS
  • Personal sites that need multiple content modules such as blog, notes, albums, moments, and music
  • Users who accept preparing their own Google Photos API credentials to enable the album feature

Getting started & customization

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

  1. 1

    The runtime requires Node.js v22.12.0 or higher; pnpm is recommended for installing dependencies

  2. 2

    After cloning the repository, run pnpm install (or npm install), then run pnpm dev to start the local development server, with the default address at http://localhost:4321/

  3. 3

    Configuration such as site name, SEO metadata, navigation links, subpage copy, and feature toggles is modified in config.ts at the root

  4. 4

    The album feature depends on the Google Photos API, and you need to prepare and configure the corresponding credentials yourself

  5. 5

    The cover, favicon, and color scheme generation tools under pages/generator/ are intended only for local or development environments

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 applies to that version's code and does not mean external services or third-party assets are free.

Must comply with when using

  • You may use, modify, commercialize, and distribute this version's code 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 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 fees.
  • The runtime requires Node.js v22.12.0 or higher; pnpm is recommended for dependency management.
  • The album module calls the Google Photos API via GooglePhotosFetcher.ts to fetch cloud media, and you need to prepare the corresponding credentials yourself.
  • The cover, favicon, and color scheme generation tools under pages/generator/ are intended only for local or development environments.
View Original Text Basis

Permission is hereby granted, free of charge

Original License Text

Requires Node.js `v22.12.0` or higher. `pnpm` is recommended for faster dependency management.

Original README

Integrated Google Photos API (`GooglePhotosFetcher.ts`) for fetching cloud media.

Original README

├── generator/ # Local/Dev-only asset generator tools

Original README
https://github.com/SingyanLabs/Quasar-Astro-Theme/blob/main/LICENSEhttps://github.com/SingyanLabs/Quasar-Astro-Theme/blob/main/README.md

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

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-08

Inspect the recorded source material

SHA-256: bc2a155c5f8324ecb1f56993edf8570d1befe66aae13c7a97c04e9fd705ce701

2026-10-07T18:30:44.793Z

Source file / repository
<div align="right">
  <a title="中文" href="/README-CN.md">中文</a>
</div>
<div align="left">
<img src="./.source/Quasar-logo.svg" height="220" alt="Quasar Logo" />

# 🌌 Quasar - A cosmic-inspired Astro theme

> A cosmic-inspired Astro theme grounded in Earth-like stability. Clean, performant, and crafted for a seamless blogging experience.
> 
> Built on Astro v7 without heavy runtime frameworks, powered entirely by pure CSS and Vanilla JS to deliver sub-millisecond response times and silky-smooth micro-interactions.

## ✨ Philosophy

Quasar is more than just a blog—it's your digital alter ego.

Leveraging Astro's Islands Architecture, Quasar squeezes every drop of frontend performance. Powered by meticulously crafted CSS `@keyframes` animations and non-blocking Vanilla JavaScript, it delivers exceptional SEO alongside an immersive seamless dark/light mode toggle, frosted glass parallax effects, and native-app-like View Transitions.

## 📸 Screenshots

<img src="./.source/Screenshot-desktop.png" height="320" alt="Quasar Screenshot Desktop" />
<img src="./.source/Screenshot-mobile.png" height="320" alt="Quasar Screenshot Mobile" />

📢 **Demo**: [Quasar Official](https://demo.singyan.top/) | [Singyan Blog](https://singyan.top/)

## 🚀 Core Features

Quasar is built with multiple highly autonomous, expressive channel modules:

* 📝 **Long-form Posts & Notes**
  * 100% type-safe Markdown rendering backed by Astro `Content Collections`.
  * **Notes:** Features a pure CSS-driven inline expansion and tag filtering system for a seamless, minimalist list layout.
* 📸 **Photo Albums**
  * Integrated Google Photos API (`GooglePhotosFetcher.ts`) for fetching cloud media.
  * A refined adaptive masonry layout with built-in `LazyLoad` and a global `Lightbox` gallery viewer.
* 💭 **Moments**
  * A Twitter/Moments-style microblogging feed with a custom sidebar, interactive likes (`MomentsLikeButton`), and expandable detail cards.
* 🎵 **Immersive Music Room**
  * A fully custom Vanilla JS audio player engine (`music-engine.js`).
  * Includes dynamic visualizer backgrounds (`MusicBackground`) and dual sidebar control panels.
* 🪐 **Interactive Home & Widget Ecosystem**
  * Homepage features an interactive 3D Globe (`Earth.astro`) and parallax hero text (`IntroWord.astro`).
  * Built-in widget suite: Weather (`WeatherWidget`), Studio Status (`StudioWidget`), and Quotes (`QuoteWidget`).
* 🤝 **Friends & Inter-site Relay**
  * Elegant modal dialogs powered by `GentleModal`.
  * Combines friend cards, site info panels, and a random inter-site jump gateway (`relay.js`) to build an interconnected web galaxy.
* 🛠️ **Internal Generator Suite**
  * Custom internal toolchain (`pages/generator/`) for one-click generation of SVG covers, favicons, and complete site color themes.

## 📂 Architecture

A modular, well-structured, and geek-friendly directory layout:

Plaintext

```
Quasar/
├── assets/                 # Core static asset engine
│   ├── scripts/            # Vanilla JS engine suite (music-engine, navbar-engine, intro-engine, etc.)
│   └── styles/             # On-demand CSS animation and layout modules (moments.css, notes.css, etc.)
├── components/             # Highly decoupled UI component library
│   ├── about/              # About page radar chart, tech stack showcase, floating Dock
│   ├── albums/             # Masonry gallery view and album headers
│   ├── common/             # Global infrastructure (Lightbox gallery, LazyLoad, ExternalLinkGuard)
│   ├── friends/            # Friend network and Gentle modal dialogs
│   ├── head/               # <head> injection (flash-free theme sync ThemePerfInit)
│   ├── moments/            # Moment cards, like button, and timeline sidebar
│   ├── music/              # Custom music player interface panels
│   ├── navbar/             # Global fuzzy search and top navigation hub
│   ├── notes/              # Pure CSS note list filter
│   ├── posts/              # Blog post views
│   ├── services/           # External API integrations (GooglePhotosFetcher)
│   └── widgets/            # Modular homepage widgets (Weather, Studio, etc.)
├── content/                # Content Collections data hub (Markdown)
│   ├── albums/ & friends/  
│   ├── moments/ & music/   
│   ├── notes/ & posts/     # Your articles and data source live here
│   └── Empty.md            # Structure placeholder
├── layouts/                # Core site layout frame (BaseLayout.astro)
├── pages/                  # File-based routing
│   ├── api/                # Serverless endpoints (e.g., albums.ts data fetching)
│   ├── generator/          # Local/Dev-only asset generator tools
│   ├── posts/              # Dynamic post route ([...slug].astro)
│   └── index, about, music, moments, friends, notes... # Main channel entries
├── utils/                  # Utility functions (clipboard, visibilityGuard, etc.)
├── config.ts               # Global variables, feature toggles, and base configuration
└── content.config.ts       # Astro Content Collections type definitions
```

## 🚀 Getting Started

Requires Node.js `v22.12.0` or higher. `pnpm` is recommended for faster dependency management.

**1. Clone the repository**

Bash

```
git clone https://github.com/<your-username>/Quasar.git
cd Quasar
```

**2. Install dependencies**

Bash

```
# Recommended
pnpm install

# Or using npm
npm install
```

**3. Start local development server**

Bash

```
# Using pnpm
pnpm dev

# Or using npm
npm run dev

# Open http://localhost:4321/ in your browser
```

**4. Build for production**

Bash

```
# Using pnpm
pnpm build

# Or using npm
npm run build
```

## ✍️ Content Management

Quasar separates content from code and requires no external CMS or database. All content is managed via Markdown files inside `src/content/`:

* **Posts:** Create Markdown files inside `content/posts/` and set frontmatter metadata.
* **Moments:** Write microblog entries in `content/moments/`.
* **Friends:** Edit friend link entries in `content/friends/`.
* **Music:** Add track info in `content/music/`.

*Fully integrated with TypeScript validation—missing or invalid frontmatter fields trigger build-time warnings to keep data completely safe.*

## ⚙️ Configuration

No need to dig deep into the codebase; 80% of site customization can be done directly via `config.ts` in the root directory, including:

* Site name and SEO metadata
* Navigation bar links and icons
* Sub-page (Music, Blog, Moments) copy and feature toggles
* Social media profile links

## 📜 License

Licensed under the [MIT License](https://mit-license.org/). Feel free to modify and distribute, provided the original copyright notice is preserved.

---

<div align="center">

*Architected with ❤️ by [SingyanLabs](https://github.com/singyanlabs) , powered by Google Gemini.*

**✨ If this theme helps you, please give us a ⭐ Star! ✨**

</div>

Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.