← Back to Portfolio

Paphos Community

A cross-platform community app that connects people in Paphos, Cyprus through local events and 55+ WhatsApp groups. Single Expo codebase for iOS, Android, and web, powered by a serverless Cloudflare Workers backend.

Expo React Native TypeScript Hono Cloudflare Workers Cloudflare D1 Drizzle ORM NativeWind TanStack Query Zod
Paphos Community

The Problem

Paphos has a growing international community — expats, remote workers, retirees — but no central place to find out what’s happening locally. Event info was scattered across dozens of WhatsApp groups, Facebook posts, and word of mouth. People kept asking the same question: “Where do I find events and meet people?”

I built Paphos Community to answer that. One app where you can browse upcoming meetups, RSVP with your guests, and discover the 55+ WhatsApp groups that already exist for everything from business networking to arts and crafts.

How It Works

The home screen shows upcoming events at a glance. Each event card displays the date, time, venue, participant count vs. capacity, and a status badge — Confirmed when the minimum number of people have joined, Needs people when it still needs RSVPs. Two primary actions sit at the top: jump to the WhatsApp directory or create a new event.

Event Details & RSVP

Tapping an event opens the full details: description, Google Maps link, and the participant list. Users can join with one tap, optionally bringing guests with a +/- counter. Event creators and admins get Edit and Cancel controls. A comments section at the bottom lets participants coordinate logistics.

Event details page showing date, time, location with Google Maps link, about section, and participant list
Event interaction view with participant list, join button with guest counter, and threaded comments section

Passwordless Authentication

No passwords to remember. Users sign in with a 6-digit OTP sent to their email. Behind the scenes, JWTs handle sessions with automatic token refresh, and a Cloudflare KV-backed blacklist ensures clean logouts.

OTP verification screen with 6-digit code input

WhatsApp Groups Directory

The directory is one of the most-used features. It lists 55+ community WhatsApp groups — searchable and sorted by popularity (tracked via click analytics). Each group has a description and a one-tap “Join on WhatsApp” button that deep-links directly into the app. Admins can add and edit groups from the same interface.

WhatsApp community groups directory with search bar showing groups like Accounting & Taxes, Beach Walk, and Arts & Crafts

Architecture

The project is a TypeScript monorepo with two main packages: a cross-platform frontend and a serverless backend.

Frontend — A single Expo codebase that compiles to iOS, Android, and web. File-based routing via Expo Router, styled with NativeWind (TailwindCSS for React Native) with full dark mode support. Server state is managed by TanStack Query for caching and optimistic updates. Forms use React Hook Form with Zod schemas shared between frontend validation and backend API contracts.

Backend — A Hono REST API running on Cloudflare Workers, with Cloudflare D1 (edge SQLite) as the database and Drizzle ORM for type-safe queries and migrations. Authentication uses JWTs with refresh token rotation, OTP codes stored in Cloudflare KV, and transactional emails via Resend. The entire backend is serverless — no servers to manage, globally distributed at the edge.

Role-based access control — Three roles (admin, moderator, user) govern who can create events, manage groups, and moderate content. Admins get a dedicated user management interface.

Interested in working together?

Let's discuss your project and bring it to life.