Personal site of Glency Tirao — Astro 7 rebuild (was Nuxt 2 / Vue 2).
- Framework: Astro 7 (Tailwind v4, React islands, shadcn/ui)
- Content: git-based, editable via Sveltia CMS at
/admin - Source of truth: GitLab
glncy/glncy→ push-mirrored to GitHubglncy/glncy.github.io - Hosting: GitHub Pages at glncy.is-a.dev (
public/CNAME) - Media: images in git (
public/img), videos via YouTube embeds
bun install
bun run dev # http://localhost:4321
bun run build # -> dist/| Type | Location | Edited as |
|---|---|---|
| Profile / bio | src/data/profile.json |
Sveltia file |
| Skills | src/data/skills.json |
Sveltia file |
| Site settings + lofi videos | src/data/settings.json |
Sveltia file |
| Job history | src/content/jobs/*.md |
Sveltia folder |
| Projects | src/content/projects/*.md |
Sveltia folder |
Live at https://glncy.is-a.dev/admin/. Auth is GitLab PKCE — no backend server.
There is no API/CLI to create a user OAuth app on gitlab.com — do it in the UI:
- Go to GitLab → User Settings → Applications
(
https://gitlab.com/-/user_settings/applications) - Name:
Sveltia CMS — glncy - Redirect URI (add both):
https://glncy.is-a.dev/admin/http://localhost:4321/admin/(local dev)
- Confidential: unchecked (PKCE public client)
- Scopes:
api - Save, copy the Application ID, and set it in
public/admin/config.yml:backend: app_id: <your Application ID>
Push to GitLab main -> mirror to GitHub -> GitHub Actions (.github/workflows/deploy.yml)
builds with Bun and deploys to Pages.
GitHub repo setting required: Settings -> Pages -> Source = GitHub Actions.
Content bodies are .mdx (src/content/**), powered by astro-embed:
- Images natively:
 - Auto-embed — paste a bare link on its own line -> embeds automatically: YouTube, Vimeo, Tweet/X, Bluesky, Gist, and generic link previews.
- Manual components (optional, for power use):
import { YouTube } from 'astro-embed'then<YouTube id="..." />.
Astro 7 note: astro-embed's remark plugin needs the unified pipeline, so
astro.config.mjssetsmarkdown: { processor: unified() }and installs@astrojs/markdown-remark. Without that, Astro 7's default (Sätteri) processor ignores remark/rehype plugins and auto-embed silently no-ops.