Astro template

A map of the places
your people love

Friends pin their favourite spots β€” a note, their face, the odd hidden gift. Encrypted behind a password, static, free to host.

$npm create astro@latest -- --template cryling/friendmap/template

it's locked!

unlock the map with

rome
β€’ Open full screen

What you get

πŸ”’

Encrypted

Locked behind a password. DevTools sees only ciphertext.

πŸ§‘β€πŸ€β€πŸ§‘

Faces

See who recommended each spot; filter to one person.

🎁

Gifts

Hide a voucher or a note behind any pin.

πŸ—ΊοΈ

Free maps

MapLibre + OpenFreeMap. No API key.

🎨

Config-driven

Colours, copy and categories β€” each its own small file.

☁️

Static

Deploy anywhere. A free tier is plenty.

Config, not code

{ } src/content/places/giardino-degli-aranci.json GitHub β†—
{
  "name": "Giardino degli Aranci",
  "plusCode": "8FHJVFMJ+X5",
  "category": "park",
  "friends": [
    { "name": "Kian", "photo": "/friends/kian.webp" },
    { "name": "Sofia" }
  ],
  "note": "Best sunset view over the whole city.",
  "gift": { "title": "Sunset picnic πŸŒ…" }
}
TS src/config/theme.ts GitHub β†—
export const THEME = {
  colors: {
    bg: '#fdf6ee',
    ink: '#2b2630',
    accent: '#e85c5c', // change me, rebuild, done
  },
  fonts: { body: "'Nunito'", hand: "'Caveat'" },
};

Make someone a map

Get the template See it live