Update Guide

How to edit and deploy victorgalvez.dev

The site is an Astro static site served from /var/www/stdout/ on the VPS. Source lives at ~/Documents/me/stdout/ locally. Every update is: edit file → build → rsync.

Quick deploy

After any edit, run this from the stdout/site directory:

terminal
# 1. Build
cd ~/Documents/me/stdout/site
npm run build

# 2. Sync to VPS
rsync -avz --delete dist/ root@204.168.213.63:/var/www/stdout/

# Verify
curl -sI https://victorgalvez.dev | head -3

Caddy serves from /var/www/stdout/ — no restart needed. Changes are live immediately after rsync.

Site map

Every route and where its data lives:

RouteEdit this fileContent
/uses site/src/pages/uses.astro Hardware, dev tools, AI workflow, terminal setup
/now content/now.md Current focus, projects, reading, obsessions
/writing content/writing/*.md Blog posts, essays, notes
/ content/hero.json Name, role, tagline, stack chips, links
/repos content/repos.json Curated GitHub repos (manual or synced)
/about content/about.md Bio, background, contact
/books site/src/pages/books.astro Reading list (inline in page)
/bookmarks site/src/pages/bookmarks.astro Saved links (inline in page)
/radar site/src/pages/radar/ Tech radar — adopt/trial/assess/hold

Uses page /uses

File: site/src/pages/uses.astro — data is in arrays at the top of the file.

Each section is an array of objects. To add or update a tool, edit the relevant array. Sections: hardware, dev, ai, design, terminal.

uses.astro — add a tool
// Example: add a new item to the dev array
const dev = [
  // ... existing items ...
  {
    name: 'New Tool',
    desc: 'What it does and why I use it',
    tag: 'category',
    tagColor: '#2DD4BF',
    // Optional: link: 'https://...' — makes the card clickable
  },
];
Tag colors: hardware #4ADE80 · dev #2DD4BF · ai #A78BFA · design #F472B6 · terminal #FACC15

Now page /now

File: content/now.md — plain Markdown, rendered automatically.

content/now.md
# Now

*Last updated: Month DD, YYYY*

## Building

What you're working on right now.

## Learning

- Item one
- Item two

## Reading

- *Book Title* by Author — short note

## Obsessed with

The idea or thing consuming your mental bandwidth.
H2 headings (## Section) become sidebar entries automatically.

Writing /writing

Directory: content/writing/ — one .md file per post.

content/writing/my-post.md
---
title: Post Title
date: "2026-04-05"
readingTime: 5          # minutes, estimate manually
tags: [technical]       # technical | life | philosophy | ship-log
draft: false            # true = hidden from listing
---

Full post content in Markdown.

## Section heading

Paragraphs, lists, code blocks — standard Markdown.
Posts with draft: true are built but not listed. The homepage shows the 2 most recent non-draft posts.

Home / Hero /

File: content/hero.json — controls the homepage intro block.

content/hero.json
{
  "name": "Victor Galvez",
  "role": "Software Engineer",
  "tagline": "I build things and ship them. Currently building in public.",
  "stack": ["TypeScript", "React Native", "Next.js", "NestJS", "Node.js"],
  "links": {
    "github": "https://github.com/victorgalvez56",
    "email": "hello@victorgalvez.dev"
  }
}
Stack items render as pill chips on the homepage. Keep it to 5-6 items.

Repos /repos

File: content/repos.json — curated GitHub repos shown on the repos page.

content/repos.json
{
  "curatedRepos": [
    {
      "name": "repo-name",
      "description": "What it does",
      "url": "https://github.com/victorgalvez56/repo-name",
      "stars": 0,
      "language": "TypeScript",
      "topics": ["tag1", "tag2"]
    }
  ],
  "publicRepos": [],   // auto-synced by bot (do not edit manually)
  "lastSync": null
}

About /about

File: content/about.md — plain Markdown, rendered as the about page.

Just edit the Markdown. H2 headings become sidebar entries automatically.

Claude workflow

Tell Claude what to add or change — it knows the file structure and will edit, build, and deploy.

Examples you can say to Claude
uses"Add Warp to my terminal tools in uses"
uses"Update the Neovim description in uses to mention the new plugin"
now"Update my now page — I'm currently learning Rust and reading Dune"
post"Create a new post about what I learned this month"
hero"Add Expo to my stack in the homepage"
repos"Add dotfiles to my curated repos"

Claude will edit the right file, run npm run build, sync with rsync, and confirm the live URL.