https://github.com/sysadmindoc/sysadmindoc.github.io
Personal portfolio and project showcase site hosted on GitHub Pages.
https://github.com/sysadmindoc/sysadmindoc.github.io
github-pages html portfolio
Last synced: 3 months ago
JSON representation
Personal portfolio and project showcase site hosted on GitHub Pages.
- Host: GitHub
- URL: https://github.com/sysadmindoc/sysadmindoc.github.io
- Owner: SysAdminDoc
- License: mit
- Created: 2025-08-27T04:50:26.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2026-04-13T16:59:40.000Z (3 months ago)
- Last Synced: 2026-04-13T17:44:10.123Z (3 months ago)
- Topics: github-pages, html, portfolio
- Language: HTML
- Homepage: https://sysadmindoc.github.io/
- Size: 57.1 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# sysadmindoc.github.io
[](CHANGELOG.md)
[](LICENSE)
[](https://sysadmindoc.github.io)
[](https://astro.build)
Personal portfolio and project showcase at [sysadmindoc.github.io](https://sysadmindoc.github.io).
## Stack
- **Astro 5** — static site generator with focused client-side enhancements for the homepage experience
- **TypeScript** data layer ([src/data/projects.ts](src/data/projects.ts))
- **Content collections**: featured (9), live apps (22), catalog (138), skills (8)
- **Build-time GitHub API** — stars, repo metadata, release summaries, and cached READMEs
- **GitHub Pages + GH Actions** — scheduled data refresh, type checking, build, and deploy
## Develop
```bash
npm install
npm run fetch-stars # optional: refresh star cache from GitHub
npm run check # Astro + TypeScript validation
npm run dev # http://localhost:4321
npm run build # output to dist/
npm run preview # serve dist/
```
`npm run fetch-stars` works best with `GITHUB_TOKEN` set; without it, local runs preserve the existing README cache instead of exhausting the anonymous GitHub rate limit.
## Edit content
All project entries live in **[src/data/projects.ts](src/data/projects.ts)**. Add an entry → `npm run build` → deploy. No hardcoded HTML.
- Featured: show on the bento grid at the top
- Live Apps: for GitHub Pages demos
- Catalog: full searchable repo list (categories: `ps|py|web|ext|kt|sec|media|cs|guide`)
- Skills: animated ring charts in the Stack section
Category filter counts auto-compute from the catalog array.
## Deploy
Pushes to `main` trigger [.github/workflows/deploy.yml](.github/workflows/deploy.yml) which:
1. Refreshes generated GitHub data
2. Runs `npm run check`
3. Builds the Astro site
4. Publishes to GitHub Pages
A cron also runs daily to keep the generated GitHub data fresh without needing a push.
## Layout
```
src/
├── components/ # cards, tag cloud, dividers, greatest-hits modules
├── data/
│ ├── types.ts # TypeScript schemas
│ ├── projects.ts # all content (EDIT THIS)
│ └── _*.json # generated GitHub cache files (gitignored)
├── layouts/Base.astro
├── pages/
│ ├── index.astro
│ ├── now.astro
│ ├── releases.astro
│ ├── rss.xml.ts
│ ├── lang/[slug].astro
│ ├── og/[slug].png.ts
│ └── projects/[slug].astro
└── styles/global.css
public/
├── manifest.json
├── robots.txt
├── sw.js
├── screenshots/ # captured live-app thumbnails
└── scripts/ # theme.js, main.js, cmdk.js
scripts/
├── fetch-stars.mjs # GitHub data refresh (build-time)
├── capture-screenshots.mjs
└── generate-data.mjs # one-off migration helper
legacy.html # backup of pre-Astro single-file site
```
## Roadmap
See [ROADMAP.md](ROADMAP.md) for planned work — Tier A/B/C ideas, tech debt, and already-shipped releases.
## License
MIT — see [LICENSE](LICENSE).