01phuket-tourist.tsxMobile App

Travel Discovery & Planner

Phuket Tourist

A travel-discovery app for Phuket connecting tourists with local events, restaurants and businesses. Discover places on an interactive Mapbox map, save favourites and build a day-by-day itinerary, while a multi-provider ingestion pipeline scrapes, dedupes, geocodes and AI-enriches events from across the web — all backed by a type-safe Fastify API.

React NativeExpoExpo RouterTypeScriptReact 19ZustandReact Hook FormZodBetter AuthMapboxSocket.IOExpo NotificationsFastifyTypeBoxDrizzle ORMKyselyPostgreSQLBunAnthropic ClaudePlaywrightCheerioSharpCloudflare R2Supabase
// key_features
Interactive Map Discovery
A Mapbox map with custom markers for events and businesses, category filtering and clustering to explore what’s nearby.
Multi-source Event Ingestion
A scheduled pipeline pulling events from Eventbrite, Phuket101, SoftEvents and local news sites with deduplication, geocoding and venue resolution.
AI Event Extraction
Anthropic Claude reads Facebook Smart News posters and unstructured listings to extract structured event data automatically.
Business Directory
Restaurants, bars and attractions enriched from Google Places and OpenStreetMap with photos, opening hours and locations.
Saved & Favourites
Save events and businesses to a personal collection, synced to the account across sessions.
Day-by-day Planner
Build an itinerary from saved items, grouped and timelined into a date-by-date agenda.
Editorial Design System
A cream/teal editorial theme with custom typography (Newsreader / Hanken Grotesk) and a polished, content-first UI.
Authentication
Email + password and Google sign-in via Better Auth, shared across the Expo client and Fastify server.
Push Notifications
Expo Notifications for new events and itinerary reminders.
Server-side Image Pipeline
Uploads optimized with Sharp and delivered via Cloudflare R2 and Supabase storage.
Type-safe API
Fastify with TypeBox schemas validating every request/response over Drizzle + Kysely on PostgreSQL.
© 2026 marius mariakinas · all rights reserved · built from scratch