AstroPortfolio

Portfolio-Template-33 — Astro Portfolio Template

By Muhammad112233-creator

Phosphor is a personal portfolio template with a retro desktop operating system interface, built on Astro, TypeScript, Three.js and GSAP. It includes 17 sample projects, a career timeline, a command palette and interactive 3D project views.

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

What stands out

A quick read of the recorded project description.

01

Retro desktop operating system interface with a particle portrait, pixel cursor and cold-boot sequence

02

17 original sample projects with three browsing views: sphere, index and spatial gallery

03

13-step, four-branch career timeline presented as a commit graph

04

Searchable command palette and keyboard shortcuts (number keys for navigation, ⌘K to open the command palette, and others)

05

Six persistent color themes, with optional CRT glass, scanlines and synthesized click sounds

06

Separate mobile touch layout with navigation and forms optimized for small screens

Template Details

The template presents the portfolio as an explorable retro desktop environment, with a particle portrait, four navigation areas (projects, experience, profile, contact), a searchable command palette, keyboard shortcuts, six color themes and an optional CRT effect. Project content is shown as 17 original sample projects with three views: sphere, index and spatial gallery; career history appears as a 13-step, four-branch commit graph. Mobile has a separate touch layout.

The stack is Astro 7.4.0, TypeScript, Three.js r185 and GSAP 3.15.0, with the Jacquard 12 and DotGothic16 fonts. The interface is built with real HTML and needs no component runtime. The site is static output, includes a GitHub Pages deployment workflow, and can also be hosted on any static host.

The README explicitly states that the demo content (Alex Morgan and the 17 projects) is fictional sample material and must be replaced before use. The contact form generates a mailto: draft by default and does not send email directly; a compatible JSON endpoint can be configured for direct delivery. The README does not provide a formal WCAG audit conclusion and only lists the accessibility features that are implemented.

AstroPortfolio

Is it right for your project?

Use Cases

  • A portfolio that showcases personal projects and career history in a distinctive, interactive desktop style
  • A static personal site that needs 3D project views, a command palette and keyboard shortcuts
  • A static portfolio template built on Astro that can be deployed to GitHub Pages
  • A portfolio page that is print-friendly and can generate a text résumé

Suitable For

  • Personal portfolios for front-end developers or creative technologists
  • Designers who like retro pixel aesthetics and interactive interfaces
  • Users who need static site generation and a simple deployment flow

Getting started & customization

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

  1. 1

    Requires Node.js 22.22.0 or newer and npm; run npm ci to install dependencies and npm run dev to start the development server (default http://localhost:4321).

  2. 2

    The desktop must be started on first visit by clicking, touching or pressing a key; users who prefer reduced motion skip the cold boot.

  3. 3

    Before use, replace the personal information, projects, experience and roles in src/data/portfolio.ts, as well as assets such as public/images/portrait.webp.

  4. 4

    The contact form generates a mailto: draft by default; replace [email protected] and the social links. For direct delivery, configure a compatible endpoint in person.contactEndpoint.

  5. 5

    The build command is npm run build and preview is npm run preview; deploy with the included GitHub Pages workflow or any static host.

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

Must comply with when using

  • The code of this version may be used, modified, used commercially and distributed free of charge.
  • When distributing copies or substantial portions of the code, the original author's copyright notice and the full MIT license notice must be retained.
  • 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 own licenses; the code's MIT license alone does not determine this.
  • External services such as domains, hosting, databases, payments or AI may incur separate charges.
  • The demo content is fictional: Alex Morgan, the 17 projects and the career history are original samples, not real client results, and must be replaced before use.
  • The contact form by default only generates a mailto: draft, sent by the local mail client; it does not deliver email directly.
  • For direct form delivery, you must configure a compatible JSON endpoint yourself (accepting email, subject and message and returning a success response) and test it.
  • API keys or email service keys must not be placed in client-side code; GitHub Pages is static hosting and does not provide a mail backend.
  • Before publishing, [email protected] must be replaced with a real email address.
  • Before publishing, the generic GitHub and LinkedIn link targets must be replaced.
  • The listed accessibility features are implemented functionality, not a formal WCAG audit conclusion; content and changes must be tested by yourself before publishing.
  • Fonts are distributed under their accompanying SIL Open Font License; dependencies retain their own licenses, and GSAP is not relicensed by this project's MIT file; see the third-party notices.
  • Running requires Node.js 22.22.0 or newer and npm.
  • Phosphor-Preview.html is only a preview/export, not an editable source file; editing requires the source code.
  • This project does not reference the author's source code, branding or identity, is not affiliated with or endorsed by them, and does not guarantee pixel-level consistency.
View Original Text Basis

Permission is hereby granted, free of charge

Original License Text

> **Demo content, honestly labelled.** Alex Morgan is a fictional identity. The 17 projects and career history are original examples, not real client credits. Replace them before representing the portfolio as your own professional work.

Original README

By default, the form prepares a **`mailto:` draft**. Your email app handles sending. The interface never claims a message was sent when it was not.

Original README

- If you want direct form delivery, configure a compatible endpoint in `person.contactEndpoint` and test it. The optional endpoint must accept JSON `{ email, subject, message }` and return a successful HTTP response on success.

Original README

- Do not put API keys or mail-service secrets into client code. GitHub Pages is static hosting, not an email backend.

Original README

- Replace `[email protected]` with your real address.

Original README

- Replace the generic GitHub and LinkedIn destinations.

Original README

These are implemented features, **not a claim of a formal WCAG audit**. Test your own content and any modifications before shipping. See the [production and export verification record](docs/VERIFICATION.md).

Original README

The template source and original SVG artwork are released under the [MIT License](LICENSE). The demo portrait is AI-generated and represents a fictional person. Fonts are distributed under their included **SIL Open Font License** notices. Dependencies retain their own licenses; GSAP is not relicensed by this project's MIT file. See [third-party notices](THIRD_PARTY_NOTICES.md).

Original README

**Requirements:** Node.js **22.22.0 or newer** and npm. The lockfile is included.

Original README

**No Node.js just to look around?** The delivery includes a separate `Phosphor-Preview.html`: download it and open it in a modern browser. It embeds its scripts, fonts, and images and does not need a server. It is a preview/export, not the source of truth for editing.

Original README

This is not the reference author's source code, work, branding, imagery, or identity. It is not affiliated with or endorsed by the reference author, and it is not advertised as a verified pixel-identical copy. New content, new art, independent code.

Original README
https://github.com/Muhammad112233-creator/Portfolio-Template-33/blob/main/LICENSEhttps://github.com/Muhammad112233-creator/Portfolio-Template-33/blob/main/README.md

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

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: codex-user-requested-batch-review-20261018 · 2026-10-18

Inspect the recorded source material

SHA-256: 6e07b66070c2f45998886e2865913c922ef161b160e8eec475ff2fe2b49d047a

2026-10-17T17:14:45.910Z

Source file / repository
<div align="center">
  <img src="docs/media/header.gif" width="960" alt="Phosphor Portfolio — a different kind of personal website" />
  <br />
  <strong>A portfolio with a little memory. And a lot of character.</strong>
  <br /><br />
  A retro desktop, a living project collection, and a human story.<br />
  Built with Astro, TypeScript, Three.js, and GSAP. Made to be made your own.
  <br /><br />
  <img src="docs/media/stack.svg" width="640" alt="Astro · TypeScript · Three.js · GSAP · MIT licensed source" />
  <br /><br />
  <a href="#03--get-it-running">Quick start</a> ·
  <a href="#04--publish-it">Deploy</a> ·
  <a href="docs/CUSTOMIZATION.md">Make it yours</a> ·
  <a href="docs/REFERENCE-STUDY.md">Design notes</a>
</div>

<br />

## 01 — Not another wall of cards

<img src="docs/media/spectrum.gif" width="960" height="6" alt="Animated rainbow divider" />

Phosphor turns the portfolio into an operating system you can explore. Open a volume, follow a career through a commit graph, find a command, or get pleasantly sidetracked by a cartridge.

The interface is playful. The underlying site is straightforward: static HTML, local assets, real links, and a small, readable codebase.

| The desktop                                           | Inside the system                                           |
| :---------------------------------------------------- | :---------------------------------------------------------- |
| A glowing particle portrait with pointer response     | 17 original project concepts and individual case-study URLs |
| Four corners: projects, experience, profile, contact  | Sphere, index, and spatial gallery views                    |
| A cold-start sequence and pixel cursors               | A 13-step, four-branch career timeline                      |
| Six persistent, carefully chosen color themes         | A long-form profile with animated, original diagrams        |
| Optional CRT glass, scanlines, and synthesized clicks | Draggable contact and utility windows                       |
| Searchable command palette and keyboard shortcuts     | An original ray-cast maze and fractal explorer              |

> **Demo content, honestly labelled.** Alex Morgan is a fictional identity. The 17 projects and career history are original examples, not real client credits. Replace them before representing the portfolio as your own professional work.

## 02 — A closer look

<img src="docs/media/spectrum.gif" width="960" height="6" alt="Animated rainbow divider" />

<p align="center"><img src="docs/media/desktop.webp" width="960" alt="Desktop preview: amber pixel type, a particle portrait, and four navigation spaces" /></p>

<details>
<summary><strong>See the mobile layout</strong></summary>
<br />
<p align="center"><img src="docs/media/mobile.webp" width="300" alt="Mobile preview with a centred portrait and a two-column navigation grid" /></p>

This is a separate touch layout, not a desktop squeezed into a smaller viewport. Navigation moves below the portrait, the contact form stacks, and project controls remain within reach.

</details>

## 03 — Get it running

<img src="docs/media/spectrum.gif" width="960" height="6" alt="Animated rainbow divider" />

**Requirements:** Node.js **22.22.0 or newer** and npm. The lockfile is included.

```sh
npm ci
npm run dev
```

Open the local URL printed by Astro, normally **http://localhost:4321**. On first visit, click, tap, or press a key to start the desktop. Reduced-motion visitors skip the cold start.

```sh
npm run check       # Astro and TypeScript diagnostics
npm run build       # Type-check, then generate the static site
npm run preview     # Serve that production build locally
npm run package     # After a build: create source, portable Pages, and offline exports
```

**No Node.js just to look around?** The delivery includes a separate `Phosphor-Preview.html`: download it and open it in a modern browser. It embeds its scripts, fonts, and images and does not need a server. It is a preview/export, not the source of truth for editing.

## 05 — Make it yours

<img src="docs/media/spectrum.gif" width="960" height="6" alt="Animated rainbow divider" />

Start here, not in the shaders:

| What you want to change                         | Where it lives                                              |
| :---------------------------------------------- | :---------------------------------------------------------- |
| Name, email, role, location, social links       | `src/data/portfolio.ts` → `person`                          |
| Projects, descriptions, credits, technologies   | `src/data/portfolio.ts` → `projects`                        |
| Career entries, dates, branch labels            | `src/data/portfolio.ts` → `commits`                         |
| Four roles and capabilities                     | `src/data/portfolio.ts` → `roles`                           |
| Profile paragraphs, form labels, interface copy | `src/components/Desktop.astro`                              |
| Home portrait                                   | `public/images/portrait.webp`                               |
| Raster portrait fallback                        | `public/images/portrait-particles.png`                      |
| Project artwork                                 | `public/art/<project-id>.svg` and `<project-id>-detail.svg` |
| Palette values                                  | `src/styles/global.css` and `themes` in the data file       |
| Motion, navigation, windows, interactions       | `src/scripts/app.ts`                                        |
| WebGL portrait and project scenes               | `src/scripts/scenes.ts`                                     |
| Domain and deployment base                      | `astro.config.mjs` / optional environment values            |

<details>
<summary><strong>Project structure</strong></summary>

```text
.
├── .github/workflows/deploy.yml  # Source-to-Pages deployment
├── public/
│   ├── art/                     # 34 original SVG covers and detail plates
│   ├── fonts/                   # Self-hosted fonts + OFL notices
│   ├── images/                  # New portrait, fallback, social card
│   ├── .nojekyll
│   └── favicon.svg
├── src/
│   ├── components/              # Real HTML interface + SVG diagrams
│   ├── data/portfolio.ts        # Identity, work, experience, themes
│   ├── pages/                   # Home, static deep links, and 404
│   ├── scripts/                 # Router, scenes, and original cartridges
│   └── styles/global.css        # Themes, layout, print, responsive states
├── docs/                        # Public documentation + README media
├── scripts/                     # Artwork and export tools
├── astro.config.mjs
├── package.json
└── package-lock.json
```

</details>

## 06 — Find your way around

<img src="docs/media/spectrum.gif" width="960" height="6" alt="Animated rainbow divider" />

| Key                   | Action                                               |
| :-------------------- | :--------------------------------------------------- |
| `1` / `2` / `3` / `4` | Projects / experience / profile / contact            |
| `⌘ K` or `Ctrl K`     | Open or close the command palette                    |
| `Esc`                 | Close the foreground window, or return a level       |
| `←` / `→`             | Move through experience or the 3D project views      |
| `Home` / `End`        | First / last career step                             |
| `Enter`               | Open the selected 3D project                         |
| `S`                   | Toggle sound, except while typing or playing         |
| `F`                   | Request full screen, where browser permissions allow |
| `⌘ P` or `Ctrl P`     | Print the complete, text-based résumé                |

The project sphere supports dragging and a scroll wheel. The index is a normal scrollable list. The gallery supports swiping, scrolling, and explicit previous/next controls. Right-click the desktop for a small context menu.

## 07 — Under the glass

<img src="docs/media/spectrum.gif" width="960" height="6" alt="Animated rainbow divider" />

| Layer                                   | Choice                                          |
| :-------------------------------------- | :---------------------------------------------- |
| Static framework                        | Astro 7.4.0                                     |
| Application code                        | TypeScript                                      |
| Portrait and spatial project collection | Three.js r185                                   |
| Transitions and interaction timing      | GSAP 3.15.0                                     |
| Display type                            | Jacquard 12                                     |
| Interface type                          | DotGothic16                                     |
| Maze and fractal cartridges             | Original Canvas 2D code                         |
| Hosting                                 | Any static host; GitHub Pages workflow included |

<p align="center"><img src="docs/media/boot.gif" width="680" alt="Animated terminal showing the portfolio's local, static architecture" /></p>

No component runtime is needed for the interface. React and SwiftUI appear in the fictional project descriptions; they are **not** extra runtime dependencies of this website.

### Accessibility & practical details

- Navigation, forms, project stories, and content remain real HTML.
- Reduced-motion preferences disable animated transitions and skip startup.
- The complete project index is available without WebGL. A raster halftone backs up the portrait.
- Dialogs have focus management; background content is inert while a dialog is open.
- Keyboard shortcuts do not intercept typing in a form.
- Fonts and visual assets are local. The site has no analytics or tracking service.
- Rendering pauses when scenes are not needed or the tab is hidden.
- The print stylesheet produces a readable résumé rather than a screenshot of a canvas.

These are implemented features, **not a claim of a formal WCAG audit**. Test your own content and any modifications before shipping. See the [production and export verification record](docs/VERIFICATION.md).

## 08 — Contact without pretending

<img src="docs/media/spectrum.gif" width="960" height="6" alt="Animated rainbow divider" />

By default, the form prepares a **`mailto:` draft**. Your email app handles sending. The interface never claims a message was sent when it was not.

Before publishing:

- Replace `[email protected]` with your real address.
- Replace the generic GitHub and LinkedIn destinations.
- If you want direct form delivery, configure a compatible endpoint in `person.contactEndpoint` and test it. The optional endpoint must accept JSON `{ email, subject, message }` and return a successful HTTP response on success.
- Do not put API keys or mail-service secrets into client code. GitHub Pages is static hosting, not an email backend.

## 09 — Credits, provenance & license

<img src="docs/media/spectrum.gif" width="960" height="6" alt="Animated rainbow divider" />

Visual and interaction inspiration: **[Eddy Naboulet’s portfolio](https://eddy-naboulet.dev/)**. Its retro operating-system vocabulary, warm phosphor palette, pixel type, spatial collection, and commit-history résumé were studied before this independent implementation was written.

This is not the reference author's source code, work, branding, imagery, or identity. It is not affiliated with or endorsed by the reference author, and it is not advertised as a verified pixel-identical copy. New content, new art, independent code.

The template source and original SVG artwork are released under the [MIT License](LICENSE). The demo portrait is AI-generated and represents a fictional person. Fonts are distributed under their included **SIL Open Font License** notices. Dependencies retain their own licenses; GSAP is not relicensed by this project's MIT file. See [third-party notices](THIRD_PARTY_NOTICES.md).

<img src="docs/media/spectrum.gif" width="420" height="6" alt="Animated rainbow spectrum" />

<div align="center">
  <strong>Build something with a point of view.</strong><br />
  Keep it useful. Give it a little character.
  <br /><br />
  <img src="docs/media/spectrum.gif" width="420" height="6" alt="Animated rainbow spectrum" />
</div>

<div align="center">

## 🌟 Support the Project

If you find this template useful, please consider giving it a star! It helps others discover the repository and supports future development.

</div>

<img src="docs/media/spectrum.gif" width="420" height="6" alt="Animated rainbow spectrum" />
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.