chris/marioadrion
publicClone
Push over the same URL. A password will not work: create a token under access tokens and use it in place of one.
- .devcontainer
- .github
- app
- bench
- cloud
- config
- content
- database
- docs
- locales
- public
- resources
- routes
- storage
- tests
- .dockerignore 161 B
- .editorconfig 147 B
- .env.example 4.2 KB
- .env.production 3.9 KB
- .gitattributes 922 B
- .gitignore 6.1 KB
- AGENTS.md 25.5 KB
- bootstrap 4.1 KB
- buddy 8.7 KB
- bun.lock 63.0 KB
- bunfig.toml 1.9 KB
- CHANGELOG.md 1.1 MB
- deps.yml 203 B
- LICENSE.md 1.1 KB
- package.json 5.4 KB
- README.md 2.3 KB
- tsconfig.json 1.5 KB

marioadrion.com
The website of Mario Adrion, stand-up comedian: tour dates, his debut special My Struggle, and the one thing the old site asked and never collected, which city he should play next.
Built on Stacks with stx templates and Crosswind.
What it does
- Tour dates, server-rendered. Read from the Bandsintown API on the server
(
resources/data/shows.ts), cached for 15 minutes, grouped into venue runs under sticky month labels. The old site's widget was an iframe that search engines never saw. If Bandsintown is down the page serves the last good copy, then a committed snapshot, never an empty tour. - Right times everywhere. Bandsintown publishes the time on the ticket with
no zone. Each show is pinned to its venue's zone (
resources/data/zones.ts) and converted withzonedTimeToUtcfrom@stacksjs/datetime, so the schema.orgstartDateand the calendar feed carry real instants. - Search. A
ComedyEventin JSON-LD for every show, plus thePersongraph, a social card, a sitemap androbots.txt. - Calendar feed.
/tour.ics, every date as one subscribable calendar (@stacksjs/calendar-api). - "Tell me where to perform." A
@stacksjs/formsform with the framework's honeypot, minimum fill time and rate limit. Answers land inform_submissionsand export as CSV. - The special, without YouTube on every visit. A poster facade that loads the privacy-enhanced embed only when someone presses play.
- No third-party requests on load. Fonts and photos are served from this origin.
Develop
./buddy dev # http://localhost:3410
./buddy migrate # creates the forms tables
./buddy lint
./buddy typecheckPhotos and generated images
Originals live in resources/images; nothing in public/images is edited by
hand.
./buddy images:build # responsive WebP + fallbacks, via @stacksjs/image
./buddy generate:images # social cards, favicons, web manifest (config/images.ts)resources/data/photos.ts lists every photo with its widths and alt text, and
the <Photo> component renders from the manifest the build writes.
Content
Copy, links and photography come from Mario's own site and channels. Tour dates come from Bandsintown and are managed there.