{{ toastMsg }}
MULTI FAMILY TRIP TRACKER
PLOT EVERY JOURNEY — PAST, PRESENT & DREAMED
{{ famMgmtPendingCount }}
A new version is available v{{ latestVersion }} ready · you're on {{ appVersion }}
ACTIVITY
{{ ev.message }}
{{ ev.when }} · {{ ev.actorName }}
No activity yet.
ALL ACTIVITY
{{ sec.label }}
{{ ev.message }}
{{ ev.when }} · {{ ev.actorName }}
{{ profileName }}
{{ profileEmail }}
{{ profileRoleLabel }}
YOUR TRIPS
{{ profileOwned }}
CREATED BY YOU
{{ profileAssociated }}
YOU'RE A TRAVELER
Private{{ profilePrivate }}
Shared{{ profileShared }}
Photos on your trips · {{ profilePhotoCount }}
Remove the photo from all {{ profilePhotoCount }} of your trips? This can't be undone.
Sign out
Remove this {{ pendingDelete.noun }}?
You're about to delete {{ pendingDelete.label }} from your {{ pendingDelete.noun }} list.
{{ pendingDeleteMsg }}
CONFIGURATION
Trip details open on form
Show trip details on card
Show status on card
Show photo thumbnail on card
Debug info on trip cards
Trip card photo layout
What unauthenticated visitors see before signing in. Switch it up any time.
Pricing section on landing page
Off by default — hides pricing until you're ready to show it.
Testimonials section on landing page
Off by default — add quotes below, then turn it on. Hidden automatically if the list is empty.
Spin the globe
Cloud drift speed
{{ cloudDriftLabel }}
State / province borders
Drawn on large countries (Korea-sized and up) while the globe is still
Check for updates every
UNCLAIMED TRIPS
No unclaimed trips — every trip has an owner.
{{ unownedCount }} trip(s) have no owner. Assign one individually, or claim them all as yourself.
{{ u.place }}
{{ u.dates }}
Claim {{ unownedCount }} trip(s) as yourself?
BULK EDIT — {{ bulkCount }} trip(s){{ bulkFilterFamilyLabel }}
NARROW DOWN THE TRIPS
{{ c.label }}
{{ c.label }}
{{ c.label }}
MATCHING TRIPS — {{ bulkCount }} · click one to preview it
{{ bp.name }} {{ bp.dates }}
Owner
Notes
Visit type
{{ c.label }}
Trip type
{{ c.label }}
Travelers
{{ c.label }}
Sharing
{{ c.label }}
Apply these changes to {{ bulkCount }} trip(s)? This can't be undone.
{{ bt.name }}
SITE ADMINISTRATION
Audit log detail
{{ auditLevelHint }}
Per-family category limit
Max items a family's custom Visit Type / Trip Type / Status list can hold.
Disable all email notifications
Turning this OFF sets every family's Email toggle to off and locks it (no family can turn it back on). Turning this back ON only unlocks the toggles — it doesn't force any family's setting back on; each family keeps whatever they last had and can choose for themselves. Toasts and the Activity Log still work either way.
Default notifications for new families
Applied once, at creation time, to every brand-new family. Doesn't change existing families — those are edited per-family in My Families → Notifications.
{{ dnr.label }}
PRIMARY ADMIN(S)
{{ primaryAdminEmailsText }}
ADDITIONAL SITE ADMINS
{{ sa.email }}
SORT
YEAR
TRIP
STATUS
VISIT TYPE
TRAVELER
Applies on top of whichever theme you pick below.
🔒 An admin has locked the theme for everyone.
When on, everyone sees your current Dark/Light + theme pick and can't change it themselves.
Rename, recolour, add or remove the options used across the form, filters, and globe.
{{ grp.title }}
ACCESS REQUESTS
Where "Request access" messages from the sign-in screen are sent. Also shown there so people can email you directly.
SEND REQUESTS TO
DATA & STORAGE
App settings JSON
All trips data JSON
Local uses a separate dataset stored only in this browser — your Cloud trips won't show here. Your cloud data is not deleted; switch back to Cloud anytime to see it again.
The cloud has no trips yet, but this device has {{ cloudSeedCount }}. Upload them to the cloud, or keep the cloud empty? Nothing is sent until you choose.
Local stays on this device. Cloud syncs to Azure and requires sign-in.
CURRENTLY SAVING TO
{{ storageLabel }}
CLOUD SYNC
{{ cloudUserInitial }}
{{ cloudUser }}
{{ cloudRoleLabel }}
{{ cloudAuthLabel }} {{ cloudAuthAction }}
Fetched {{ reloadCount }} trip{{ reloadCountPlural }} from the cloud. You currently have {{ reloadLocalCount }} in view.
Merge keeps both (cloud wins on duplicates). Overwrite replaces your view. Cancel to export or review first.
{{ cloudMsg }}
Not connected — the /api backend isn't responding. If you've deployed to Azure, the Functions API may not be linked (set api_location: "api" in the deploy workflow). See the Deploy guide.
Diagnostic: {{ cloudDiag }}
Delete all destinations? A dated backup file downloads automatically first.
INCLUDE
Data
↳ Include photos · .zip
Settings
INCLUDE THESE USERS · everyone on by default
{{ storageMsg }}
A linked file auto-saves on every change. Export/Restore works anywhere.
MY BACKUP
Just your own trips, photos and settings — never touches anyone else's data.
This backup has {{ myBackupTotal }} trip{{ myBackupTotalPlural }}{{ myBackupNewCount }} new, {{ myBackupDupeCount }} already here.
Overwrite deletes all your current trips first, then restores from this file. Merge adds the new ones and asks about each duplicate.
This deletes all {{ myBackupCurrentMineCount }} of your current trips and replaces them with this backup's {{ myBackupTotal }}. Other users' trips are never touched. This can't be undone.
{{ myBackupNewCount }} new trip{{ myBackupTotalPlural }} will be added. For each duplicate below, choose which version to keep:
{{ d.label }}
PEOPLE & FAMILIES
My Family Management
Site Management
Pending Actions {{ famMgmtPendingCount }}
MY FAMILIES
{{ f.name }}
{{ f.roleLabel }} · pending
You're not in a family yet. Create one below, or ask someone to invite you.
Site User Management
Site Family Management
Site User Management
Everyone you can tag on a trip. Give a person an email to let them sign in — then a role and presence appear. People without an email are just names you can pick.
FAMILY
{{ p.headerLabel }}
{{ p.label }}
{{ p.emailText }}
{{ p.statusLabel }} {{ p.roleLabel }}
Trips owned{{ p.statsOwned }}
Countries visited{{ p.statsCountries }}
Thumbnails{{ p.statsPhotos }}
Tagged in other trips{{ p.statsTagged }}
{{ p.statsTaggedText }}
By year: {{ p.statsByYearText }}
ROLE
FAMILY
OWNED BY
This is the last active admin — can't be deactivated or deleted.
{{ p.deleteBlockedMsg }}
Pending Actions
ACCESS REQUESTS · {{ accessRequestCount }}
{{ r.email }} {{ r.whenText }}
No access requests pending.
PENDING FAMILY APPROVAL
{{ pf.name }}
No family requests pending.
{{ activeFamilyName }}
{{ activeFamilyName }}
WELCOME — LET'S GET YOU SET UP
We created this family for you and made you its admin. Give it a name above, then add the rest of your family below — invite by email or share an invite link.
A family owns its own trips and travelers. Members share access at reader, editor or admin level.
ATTACHMENTS & STORAGE
{{ attachStorageCount }}
files
{{ attachStorageSize }}
used, 25MB max per file
{{ a.name }} · {{ a.place }} {{ a.sizeLabel }}
COLOR
LOGO
Photo uploads for this family
{{ familyImageUploadsHint }}
OWNER · {{ ownerLabel }}
TRIP PERMISSIONS
Who can edit this family's trips
Owner/admin always can. Only this family's editors — shared families never get edit rights.
Who can manage attachments
Uploading/removing tickets & docs on this family's trips.
Attachments visible to shared families
Turn off to keep tickets & docs private to this family only.
Who can comment
Applies to this family's own members only — shared families can still comment.
Shared families can edit itinerary
Itinerary always follows the trip's own sharing tier and is never public — this only controls whether shared families may edit it, not just view it.
Any family member can delete this family's trips
By default only admins can delete any trip; editors can only delete trips they created. Off by default.
Shared families can delete this family's trips
Off by default — shared families never get delete rights unless explicitly turned on here.
{{ deletePermSummary }}
Give this family its own Visit Type, Trip Type, or Status lists — otherwise they inherit the site-wide defaults.
"{{ catRemoveWarnLabel }}" is used on {{ catRemoveWarnCount }} trip(s). Reassign them first, or remove anyway and those trips will just show the raw value.
{{ rt.place }}
Reassign to
{{ catRevertWarnHeadline }}
"{{ ci.label }}" — used on {{ ci.count }} trip(s):
{{ ct.place }}
Reassign to
{{ cs.title }}
{{ cs.itemCountLabel }}
Inheriting the site default ({{ cs.siteCount }} items).
Choose how this family hears about its own events — a live toast for whoever's online, a persisted entry in the Audit tab, and/or a courtesy email to the family's admins. All three default to on.
{{ nr.label }}
{{ nr.desc }}
Bulk-edit this family's own trips only — tick the fields to change, then confirm.
{{ bulkCount }} trip(s) in {{ activeFamilyName }}
NARROW DOWN THE TRIPS
{{ c.label }}
{{ c.label }}
{{ c.label }}
MATCHING TRIPS — {{ bulkCount }} · click one to preview it
{{ bp.name }} {{ bp.dates }}
Owner
Notes
Visit type
{{ c.label }}
Trip type
{{ c.label }}
Travelers
{{ c.label }}
Sharing
{{ c.label }}
Apply these changes to {{ bulkCount }} trip(s)? This can't be undone.
{{ bt.name }}
ACTIVITY LOG — {{ activeFamilyName }}
No activity recorded yet.
{{ a.message }}
{{ a.when }} · {{ a.actorName }}
TRANSFER OWNERSHIP
Invite another member first to be able to transfer ownership to them.
PEOPLE IN {{ activeFamilyName }}
{{ p.label }}
{{ p.emailText }}
{{ p.statusLabel }} {{ p.roleLabel }}
ROLE
FAMILY
OWNED BY
This is the last active admin — can't be deactivated or deleted.
{{ p.deleteBlockedMsg }}
INVITE SOMEONE
Role applies to both options below
By email
Grants access the moment they sign in with this email — no email is actually sent.
Requires an email service configured on the server (Resend). Access is granted either way.
By shareable link
Expires in 7 days · single use · grants {{ inviteRole }} when opened.
Share this with anyone — no email address needed up front. 7-day expiry, single use.
DANGER ZONE
Share this family's trips with another family, or see who's shared with you.
FAMILIES THAT CAN SEE OURS
{{ sh.label }}
No other family can see ours yet.
FAMILIES WE CAN SEE
Granted by them — only they can revoke it.
{{ sh.label }}
No other family has shared with us yet.
Site Family Management
Auto-approve new families
Photo uploads (site-wide default)
Families can still override this for themselves below.
"Public" sharing tier (everyone signed in)
Off hides the Public option in every trip's permissions and quietly downgrades any trip currently set to it.
ALL FAMILIES
{{ af.label }}
ASSIGN A PERSON TO A FAMILY
{{ travelersMigratedBadgeLabel }}
Safe to click more than once. {{ travelersMigratedHint }}
FAMILIES BACKUP (JSON)
Exports every family, membership, share, invite link, and additional site admin as one JSON file. Importing replaces all of it — you'll be asked to confirm first.
Add a person
To {{ addPersonFamilyName }}. Give them an email to let them sign in, or leave it blank for a name-only entry (a kid, a pet…).
WELCOME — LET'S GET YOU SET UP
Create a new family
{{ newFamilyIntroText }}
New families are auto-approved right now.
New families need site-admin approval before they can be used.
👋
Thanks for registering!
Your request has been submitted and is awaiting site-admin approval. You'll get access as soon as it's reviewed.
Transfer ownership?
{{ pendingOwnerTransfer.toEmail }} will become the owner of {{ pendingOwnerTransfer.familyName }} (promoted to admin if they weren't already). You'll keep your existing role.
DESTINATIONS
{{ totalsText }}
OWNER
STATUS
VISIT TYPE
TRAVELER
TRIP TYPE
{{ grp.chevron }} {{ grp.familyName }} MINE
{{ grp.count }}
{{ loc.city }}
{{ loc.sub }}
{{ loc.dateRange }}
{{ loc.statusShort }}
{{ loc.city }}
{{ loc.sub }}
{{ loc.dateRange }}
{{ loc.statusShort }}
{{ emptyMsg }}
ONLINE
{{ u.name }}
{{ selected.statusLabel }}
{{ selected.city }}
{{ selected.sub }}
{{ selected.ownerBadge.label }} {{ selected.visBadge.label }} {{ selected.familyBadge.label }} {{ selected.hiddenFromSharesBadge.label }}
{{ selected.statusLabel }}
{{ selected.city }}
{{ selected.sub }}
{{ selected.ownerBadge.label }} {{ selected.visBadge.label }} {{ selected.familyBadge.label }} {{ selected.hiddenFromSharesBadge.label }}
{{ selected.statusLabel }}
{{ selected.city }}
{{ selected.sub }}
{{ selected.ownerBadge.label }} {{ selected.visBadge.label }} {{ selected.familyBadge.label }} {{ selected.hiddenFromSharesBadge.label }}
{{ selected.statusLabel }}
{{ selected.city }}
{{ selected.sub }}
{{ selected.ownerBadge.label }} {{ selected.visBadge.label }} {{ selected.familyBadge.label }} {{ selected.hiddenFromSharesBadge.label }}
{{ selected.coordsLabel }}
{{ selected.coordsText }}
DATES
{{ selected.dateText }}
{{ chip.label }}
TRAVELERS
{{ chip.label }}
{{ selected.notes }}
Shared with you · view only
{{ debugJsonHeaderLabel }}
Review before saving — removed lines in red, added lines in green.
{{ d.prefix }}{{ d.text }}
No saved versions yet — edits you confirm will appear here.
{{ h.label }}
{{ d.prefix }}{{ d.text }}
{{ debugJsonLineNumbers }}
{{ debugJsonError }}
{{ debugJsonText }}
Delete this trip?
You're about to delete this trip to {{ pendingTripDelete.place }} ({{ pendingTripDelete.dateText }}) from your trips.
This removes the trip, its marker from the globe and the associated thumbnail. This can't be undone.
Delete your account?
You're the sole admin of {{ pendingAccountDelete.blockedNamesText }}. Transfer ownership or promote another admin there first — otherwise that family would be left with no one able to administer it.
This removes your membership from every family below, your person/traveler record, and your tag on any trip you don't own. It never deletes your sign-in itself.
Families you'll leave: {{ pendingAccountDelete.families }} ({{ pendingAccountDelete.familyNamesText }})
Trips you own: {{ pendingAccountDelete.trips }} ({{ pendingAccountDelete.images }} with photos)
Other trips you're tagged on: {{ pendingAccountDelete.tagged }} — your tag is removed, trip stays
Non-account people you added: {{ pendingAccountDelete.nonAccountsCreated }} — untouched
Delete {{ pendingUserDelete.name }}?
This removes {{ pendingUserDelete.name }} from the People list and revokes their access.
{{ pendingUserDelete.owned }} trips owned by them — at risk of deletion.
{{ pendingUserDelete.tagged }} trips will be disassociated (tag removed).
{{ fb.name }} — {{ fb.count }} trip{{ fb.plural }}
Delete {{ pendingFamilyDelete.name }}?
Choose exactly what to remove. Only the checked categories are deleted — nothing else is touched.
Check Images first — deleting trips deletes their photos too.
{{ pendingFamilyDelete.nonAccountNamesText }}
{{ pendingFamilyDelete.userAccountNamesText }}
⚠ This removes the association between these accounts and this family only — it does NOT delete the accounts, their sign-in, or their membership in any other family.
TRIP METRICS
{{ metricsSubtitle }}
FILTER TRIPS
YEAR
STATUS
VISIT TYPE
TRIP TYPE
TRAVELER
No trips yet — add some destinations and your stats will appear here.
{{ t.value }}
{{ t.label }}
{{ t.sub }}
MOST-VISITED COUNTRY
{{ metrics.mostCountry }}
{{ metrics.mostCountryCount }} trips
MOST-VISITED CITY
{{ metrics.mostCity }}
{{ metrics.mostCityCount }} trips
TOP TRAVELER
{{ metrics.topTraveler }}
{{ metrics.topTravelerDays }} days away
BY STATUS
{{ r.label }}{{ r.sub }}
BY TRIP TYPE
{{ r.label }}{{ r.sub }}
BY VISIT TYPE
{{ r.label }}{{ r.sub }}
TRAVELERS · BY TRIPS
{{ r.label }}{{ r.sub }}
TRAVELERS · BY DAYS
{{ r.label }}{{ r.sub }}
COUNTRIES · BY TRAVELER
{{ r.label }}{{ r.sub }}
TOP COUNTRIES
{{ r.label }}{{ r.sub }}
TOP CITIES
{{ r.label }}{{ r.sub }}
TRIPS BY YEAR
{{ y.count }}
{{ y.label }}
TRAVEL HEAT MAP
{{ heatCountLabel }}
Filtering: {{ activeCountryLabel }}
fewer more
{{ tile.country }}
{{ tile.countLabel }}
No destinations match the current filters.
🔒
{{ cloudBlockTitle }}
{{ cloudBlockMsg }}
Sign out
{{ reqSentMsg }}
YOUR EMAIL
🔒 Permissions
Applies instantly, and becomes the default for your next new trip.
Additive — these people can always see it, on top of whichever tier you picked under Visibility.
Greyed names have no email yet — add one in ⚙ → Settings → Travelers to share with them.
ITINERARY
{{ itineraryModalPlace }}
This itinerary follows the trip's own sharing settings — it is never made public.
{{ d.label }}
{{ d.label }}
{{ d.text }}
COMMENTS
{{ selected.city }} · {{ selected.commentCount }}
{{ c.initial }}
{{ c.authorName }} {{ c.when }}
{{ c.text }}
No comments yet.
This family only allows admins to comment on their trips.
ATTACHMENTS
{{ selected.city }} · {{ selected.attachmentCount }}
{{ a.ext }}
{{ a.name }} {{ a.sizeLabel }}
No attachments yet.
{{ selected.attachmentError }}
{{ lightboxPosLabel }}
TRIPS CALENDAR
{{ calMonthTripCount }} TRIPS THIS MONTH
{{ calViewLabel }}
{{ dw }}
{{ day.label }}
+{{ day.moreCount }} more
HELP & GUIDE
↗ Open / PDF
{{ helpError }}
{{ helpNode }}
VERSION
{{ appVersion }}
UPDATED
{{ appUpdated }}
by {{ authorName }}  · {{ authorEmail }}
Stripeman/TripTracker
{{ formMode }}
{{ formTitle }}
{{ formPendingFamilyBanner }}
Or leave coordinates blank — they're fetched automatically on save.
This trip already exists — add anyway?
START
END ·opt
S
M
T
W
T
F
S
{{ mon.label }}
{{ day.label }}
Type a date above (any year), or click a start day then an end day
VISIT TYPE
TRAVELER
TRIP TYPE
A small thumbnail shown on the trip card. Resized automatically — nothing huge gets stored.
Reuse your photo from {{ photoSuggestionLabel }}?
Extra photos beyond the cover — shown in a gallery on the trip detail. Pick several at once.
📷 Photo uploads are turned off for this family right now. A family admin can re-enable them in People & Family Management.
{{ d.label }}
Pick a trip date above to add day-by-day notes.
Permissions apply once this family is synced to Cloud storage. In Local/Demo mode, trips are only ever visible on this device.
{{ createdText }}
{{ modifiedText }}
Duplicate this Trip · clears date
{{ formError }}