Easy-to-manage touch screens
Free, open-source touch screens. Guided USB setup, a drag-and-drop editor and local control. Made for Home Assistant.
翻訳待ち
whitelabel app for walking tours
翻訳待ち
Loading the full README. The saved excerpt is shown below.
Deploy your own location-aware heritage walking guide.
Nearmark is an open-source platform for building a mobile, map-based history guide to a
place – a queer-history trail, an arts walk, a pub crawl, an architecture tour, anything
tied to locations in a city. Visitors open it in their phone browser (or install it as an
app), explore a live map, and unlock illustrated, narrated stories as they walk – either
following a guided tour or wandering in discovery mode, where stories pop up when
they get near a site.Read the full README ↗Deploy your own location-aware heritage walking guide.
Nearmark is an open-source platform for building a mobile, map-based history guide to a place – a queer-history trail, an arts walk, a pub crawl, an architecture tour, anything tied to locations in a city. Visitors open it in their phone browser (or install it as an app), explore a live map, and unlock illustrated, narrated stories as they walk – either following a guided tour or wandering in discovery mode, where stories pop up when they get near a site.
It comes with a simple admin backoffice so a non-technical team can manage all the content themselves – no code, no spreadsheets.
/admin) – add and edit locations and tours, upload photos
and audio, drag-to-reorder stops, publish/draft, manage editors. Fully keyboard- and
screen-reader-accessible (WCAG 2.1 AA)./place/<slug>) and
tour (/tour/<slug>) with Open Graph + JSON-LD, plus a live /sitemap.xml and /robots.txt.
Verify the domain in Google Search Console (set VITE_GSC_VERIFICATION) and submit the sitemap.Built with Vue 3 + Vite. Hosted free on Vercel. One codebase serves two pages:
the public app (index.html) and the admin (admin.html, served at /admin).
This repository is the platform. The branding, copy, content and integrations all come from configuration – so you can stand up your own instance without editing component code.
Deeper reference:
docs/FSD.mdis the functional specification – features, data model, and architecture in one place.
You'll need (all have free tiers):
You do not need to be a senior engineer. If you can copy files, paste values into a form, and run a couple of commands, you can deploy this. The steps below assume you're a developer setting it up on behalf of an organisation.
Fork this repository to your own GitHub account, then clone your fork:
git clone https://github.com/YOUR-USERNAME/nearmark-app.git
cd nearmark-app
npm install
In the Supabase dashboard, open the SQL Editor, then paste-and-run, in order:
schema.sql – tables, security policies, the media storage bucketseed.sql – (optional) example rows; skip it if you'll add your own contentmigration-*.sql file in numerical order – migration-002-… through the
highest-numbered one. Each is small, additive and idempotent (add column if not exists), so run them all to bring the schema up to date; re-running is harmless. The
last one, migration-041-data-api-grants.sql, grants the Data API roles access to the
tables (required: since 2026-10-30 Supabase no longer does this automatically).Running a client on the shared core? Any time you
git pullnew features, check for newmigration-*.sqlfiles and run them in each Supabase project – a missing column shows up as a "Save failed" in the admin.
Adding a new table in a migration? Grant it, or the Data API can't reach it (since 2026-10-30).
schema.sqlsetsalter default privilegesso tables created after it inherit the grants automatically; if a project predates that, add explicit grants in the migration (grant select on public.your_table to anon;+ full CRUD toauthenticated, service_role) — seemigration-041-data-api-grants.sqlfor the pattern.
Then create your first admin user: Authentication → Users → Add user → Create new user, set an email + password, and tick Auto Confirm User. Keep "Allow new users to sign up" turned off so only people you invite can reach the admin.
Branded invite emails (optional). By default invites come from "Supabase Auth". To send them from your app instead, paste the branded templates and configure custom SMTP — see
supabase/email-templates/.
.envCopy the example and fill it in:
cp .env.example .env
At minimum set VITE_SUPABASE_URL and VITE_SUPABASE_ANON_KEY (from step 2). Everything
else is optional – set VITE_APP_NAME, colours and copy to brand the app for your
organisation. See the Configuration reference below. Run it
locally to check:
npm run dev # public app → http://localhost:5173/ admin → /admin.html
npm run size # build, then check the JS bundle against its size budget (gzipped)
npm run size fails if the bundle grows past the budget in scripts/check-bundle-size.mjs
— a guard against a heavy dependency or a lost code-split creeping in. Wire it into CI to
enforce it automatically.
This is the beginning of the README. Read the rest at the original. Read the full README ↗