DEV NOTESThe workflow

SETUP / FIELD NOTES 001

Built locally.
Shared simply.

An Astro development workspace with a background server and a public HTTPS preview. A few familiar tools, connected with one small process manager.

Explore the setup
BrowserTailscale FunnelAstro

THE SETUP

Three tools. One development loop.

01

The foundation

Node + npm

A compatible Node runtime runs the project. npm provides a small, consistent set of commands for the whole workflow.

02

The development server

Astro

Astro renders the pages and watches for edits. Its native background mode keeps the server running after the terminal closes.

03

The public connection

Tailscale Funnel

Funnel forwards public HTTPS traffic to the local development server, giving the project a shareable browser preview.

AT THE TERMINAL

A small command
for every step.

The project manager coordinates Astro and Funnel, selects a compatible installed Node runtime, and keeps the lifecycle commands in one place.

These are commands to run in the project’s terminal, not controls for this website.

PROJECT COMMANDS
npm run dev:start
Start the server and enable Funnel.
npm run dev:stop
Disable the managed endpoint and stop the server.
npm run dev:restart
Restart the development session.
npm run dev:status
Inspect the server and Funnel configuration.
npm run dev:logs -- --follow
Follow the development logs.

BEHIND THE PREVIEW

A little operational care.

Local server, public route

Astro listens on loopback. Funnel handles the public HTTPS connection, and Astro accepts the configured preview hostname.

Scoped permissions

The app runs as a regular user. If Tailscale requires elevated access, the manager tries noninteractive sudo for the Funnel operation.

Predictable cleanup

The manager records its endpoint and checks it before changing routes. Stop removes the managed connection and shuts down Astro.

Development by design

Background mode survives a closed terminal. Automatic recovery after a crash or reboot is not configured. Public reachability is checked separately from local server health.