Built with Astro, outputs static HTML and CSS after build
shoebox — Astro Portfolio Template
By radicazz
shoebox is a lightweight personal portfolio template built with Astro, featuring an author introduction and a responsive grid of six projects, with light and dark themes, and outputs static HTML and CSS after build.
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 2
Screenshots show visual appearance; interactive behavior may differ.
What stands out
A quick read of the recorded project description.
Author introduction and six projects form a responsive grid, with projects ordered by source data
Offers light and dark themes
Content and links remain functional without JavaScript
Project images are optimized locally
Content is configured centrally in src/data/gallery.json, and images are mapped by project ID for light and dark imports
Template Details
shoebox is a personal portfolio website template based on Astro. The page consists of an author introduction and six projects arranged in a responsive grid, with projects displayed row by row in the order of the source data. The site offers light and dark themes, and project images are optimized locally. The build output is static HTML and CSS, and content and links remain functional without JavaScript.
Content is configured centrally in src/data/gallery.json, including author information, gallery title, project descriptions, tags, and repository links. Project images are placed under src/assets/gallery/ and mapped by project ID in src/pages/index.astro for both light and dark imports. The repository provides docs/IMPLEMENTATION.md, docs/FEATURES.md, and docs/STACK.md explaining content conventions, site behavior, and architectural constraints.
The development environment requires Bash; Windows users must use WSL. Node and pnpm versions are pinned in .nvmrc and package.json respectively, only pnpm is supported as the package manager, and pnpm-lock.yaml is kept as the sole lockfile. The development server defaults to http://localhost:4321/shoebox/. The repository provides commands such as dev, build, preview, check, validate:data, test, check:output, and helper scripts in the scripts directory: ci-test, setup, dev, doctor, clean. CI runs frozen-install quality checks on pull requests and pushes to main; publishing only occurs when pushing v* tags, and merging to main does not deploy.
The template 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 original author's copyright notice and the full MIT license notice must be retained. Third-party assets such as demo images, fonts, and icons must be checked separately under their respective licenses, and external services such as domains and hosting may incur additional charges.
Is it right for your project?
Use Cases
- Building a personal portfolio or project showcase page
- Needing a static site where content and links remain accessible without JavaScript
- Wanting to manage author information and project entries centrally via a JSON data file
- Needing a showcase website with light and dark theme switching
Suitable For
- Portfolio sites for individual developers or designers
- Showcase pages with a small number of project entries
- Developers who prefer Astro and static export
- Projects using pnpm and accepting a pinned Node version workflow
Getting started & customization
Use these recorded setup notes alongside the repository instructions for your chosen version.
- 1
Requires a Bash environment; Windows users should use WSL
- 2
Node and pnpm versions are pinned in .nvmrc and package.json respectively; only pnpm is supported and pnpm-lock.yaml is kept as the sole lockfile
- 3
After cloning the repository, run nvm install, nvm use, corepack enable pnpm, pnpm install --frozen-lockfile, pnpm dev; the development server address is http://localhost:4321/shoebox/
- 4
To modify content, edit src/data/gallery.json; project images go in src/assets/gallery/ and are mapped by project ID in src/pages/index.astro for light and dark imports
- 5
Publishing is triggered only when pushing v* tags; merging to main does not deploy
License & source material
Usage conditions & limitations
Free to use · keep license noticeThis 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 imply that 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 under their respective licenses; they cannot be assumed free solely based on the code's MIT license.
- External services such as domains, hosting, databases, payments, or AI may incur additional charges.
- Using this template requires a Bash environment; Windows users must run it via WSL and cannot develop directly in a native Windows environment.
- Only pnpm is supported as the package manager, and pnpm-lock.yaml must be kept as the sole lockfile; npm or yarn cannot be used instead.
- Runtime scripts rely on nvm to install and activate the pinned Node version; if nvm is not installed, the Node version matching .nvmrc must be manually activated in advance.
- Publishing is triggered only when pushing v* tags; merging to the main branch does not automatically deploy, and manual publishing via the tag process is required.
View Original Text Basis
Permission is hereby granted, free of charge
Original License Text
Use Bash and install [nvm](https://github.com/nvm-sh/nvm#installing-and-updating) once. On Windows, use WSL.
Original README
pnpm is the only supported package manager; keep `pnpm-lock.yaml` as the single lockfile.
Original README
Runtime scripts use nvm to install and activate the pinned Node version when a different version is active. Without nvm, the pinned Node version must already be active.
Original README
https://github.com/radicazz/shoebox/blob/main/LICENSEhttps://github.com/radicazz/shoebox/blob/main/README.mdPublishing happens only when a `v*` tag is pushed; merging to `main` does not deploy.
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
- Partly documented · 72 / 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-12
- 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: 768c873de0178288ff7d7ddc0cf25b1aa57df741df25484e827335d903019ee5
2026-10-13T00:13:26.646Z
Source file / repository# shoebox [](https://radicazz.github.io/shoebox/) [](./.nvmrc) [](https://github.com/radicazz/shoebox/actions/workflows/ci.yml) A lightweight personal portfolio built with Astro. An author introduction and six projects sit in a responsive grid, with light and dark themes and locally optimized artwork. The site exports static HTML and CSS; its content and links work without JavaScript. [View the site](https://radicazz.github.io/shoebox/). ## Quickstart Use Bash and install [nvm](https://github.com/nvm-sh/nvm#installing-and-updating) once. On Windows, use WSL. Node and pnpm versions are pinned in [`.nvmrc`](./.nvmrc) and [`package.json`](./package.json). ```bash git clone https://github.com/radicazz/shoebox.git cd shoebox nvm install nvm use corepack enable pnpm pnpm install --frozen-lockfile pnpm dev ``` Open **http://localhost:4321/shoebox/**. pnpm is the only supported package manager; keep `pnpm-lock.yaml` as the single lockfile. ## Commands | Command | Purpose | | --- | --- | | `pnpm dev` | Start the development server | | `pnpm build` | Export the site to `dist/` | | `pnpm preview` | Serve the production build at `/shoebox/` | | `pnpm check` | Check shell syntax, validate content, run tests, build, and validate output | | `pnpm validate:data` | Validate profile and gallery content | | `pnpm test` | Run the built-in Node test suite | | `pnpm check:output` | Check an existing build for missing local assets and the 16 MiB limit | | `./scripts/ci-test` | Install with a frozen lockfile, then run `pnpm check` | | `./scripts/setup` | Install dependencies and build | | `./scripts/dev` | Start development with tool-version checks | | `./scripts/doctor` | Check tools, dependencies, content, build, and output | | `./scripts/clean` | Remove this checkout's dependencies and generated build files | Runtime scripts use nvm to install and activate the pinned Node version when a different version is active. Without nvm, the pinned Node version must already be active. Setup, dev, doctor, and quality helpers also verify the exact pnpm version. Helpers resolve paths from the checkout, even when invoked from another directory. ## Customize the portfolio Edit [`src/data/gallery.json`](./src/data/gallery.json) for the author, gallery heading, descriptions, tags, and repository links. Projects appear in source order across rows. Add project artwork under `src/assets/gallery/` and map its light/dark imports to the project ID in [`src/pages/index.astro`](./src/pages/index.astro). See [implementation guidance](./docs/IMPLEMENTATION.md) for the content contract and image workflow, [features](./docs/FEATURES.md) for site behavior, and [stack](./docs/STACK.md) for architecture and constraints. ## CI and publishing Pull requests and pushes to `main` run the same frozen-install quality checks. Publishing happens only when a `v*` tag is pushed; merging to `main` does not deploy. See [GitHub Pages deployment](./.github/DEPLOYMENT.md) for setup, release steps, and troubleshooting. Keep changes in focused Conventional Commits such as `fix:`, `feat:`, `ci:`, and `docs:`. Contributor instructions are in [AGENTS.md](./AGENTS.md). ## License [MIT](./LICENSE).
Explore similar templates
Compare previews and descriptions within the same stack and category.

astro-theme-cactus
Astro Cactus is an Astro-based blog and portfolio theme that uses Markdown/MDX content collections to manage posts, notes, and tags, with frontmatter type-checked by a schema.
Astro · Portfolio

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

astro-nano
Astro Nano is a static, minimalist portfolio and blog template built with Astro, Tailwind, and TypeScript without frontend frameworks. It includes light/dark themes, animated UI, automatic sitemap and RSS feed generation, and Markdown/MDX support with component imports.
Astro · Portfolio

astro-erudite
astro-erudite is an opinionated, unstyled static blog template built with Astro and native CSS, with no UI or CSS framework and minimal dependencies.
Astro · Portfolio

astro-sphere
Astro Sphere is a static, minimalist portfolio and blog theme maintained by markhorn-dev, built mainly with Astro, Tailwind, and TypeScript, with a small amount of SolidJS for stateful components.
Astro · Portfolio

astro-micro
Astro Micro is a framework-free blog and portfolio theme for Astro, forked from Astro Nano. It adds Pagefind search and Giscus comments while retaining type safety, sitemap, RSS, Markdown and MDX support, and TailwindCSS with system, light, and dark themes.
Astro · Portfolio
