Meet2go is a cross-platform mobile application built by Emmanuel Martínez with React Native and Expo, designed to help people discover others with similar interests and organise group events together. Beyond simple event listings, Meet2go goes a step further with a real-time group chat system powered by a dedicated Express microservice running Socket.IO and deployed on Heroku — so every event gets its own live conversation thread. Supabase handles authentication and the PostgreSQL database, giving the app a secure, scalable backend without managing a custom auth server.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/Emmanuel-Mtz-777/My-Personal-Portfolio/llms.txt
Use this file to discover all available pages before exploring further.
Project Metadata
| Field | Details |
|---|---|
| GitHub Repository | Emmanuel-Mtz-777/meet2Go |
| Primary Language / Framework | TypeScript / React Native + Expo |
| Status | Open Source |
Tech Stack
| Technology | Purpose |
|---|---|
| React Native + Expo | Cross-platform mobile framework targeting both iOS and Android from a single codebase |
| TypeScript | Compile-time type safety across all components, hooks, and API integrations |
| Supabase | Backend-as-a-Service providing authentication, PostgreSQL database, and storage |
| Express + Node.js | Standalone chat microservice managing Socket.IO connections and room logic |
| Socket.IO | Real-time bidirectional messaging for event-specific group chat rooms |
| Heroku | Cloud platform hosting the Express chat microservice as a persistent dyno |
Overview
Meet2go addresses a common social friction point: it can be hard to find and coordinate with people who share niche interests, especially for one-off or recurring group events. The app lets users build a personal profile, browse or create events, and join events that match their interests. Once inside an event, participants have immediate access to a real-time group chat where coordination happens live. The data model is built on Supabase’s PostgreSQL backend: user profiles, events, and attendance records are all stored as relational tables with row-level security policies enforced at the database layer. Supabase’s built-in auth handles sign-up, sign-in, and session management, issuing JWTs that the React Native app attaches to every API request. This eliminates the need for a separate authentication microservice. Real-time chat is intentionally separated into its own Express microservice, running independently from the Supabase layer. This separation means the chat service can be scaled, restarted, or replaced without touching the main data store. Socket.IO rooms map one-to-one with event IDs, so joining an event automatically subscribes the user to the correct chat room. The microservice is deployed on Heroku as a long-running dyno, maintaining persistent WebSocket connections with all active clients.Key Features
User Profiles
Each user maintains a personal profile listing their interests and the events they have joined or created, forming the social identity layer of the app.
Event Creation & Management
Hosts can create events with titles, descriptions, dates, and interest tags; attendees can browse, search, and join events that match their preferences.
Real-Time Group Chat
Every event includes a Socket.IO-powered group chat room — messages are delivered instantly to all connected participants via the Heroku-hosted microservice.
Cross-Platform iOS & Android
Built with React Native and Expo, Meet2go runs natively on both iOS and Android from a single TypeScript codebase, with Expo handling the build pipeline.
Supabase Authentication
Supabase Auth manages secure sign-up, sign-in, and JWT session handling, with row-level security policies protecting user data at the database layer.
Microservice Architecture
The chat service is fully decoupled from the main backend, enabling independent scaling and deployment of the Socket.IO layer without impacting app data.
Technical Details
The React Native frontend is developed with TypeScript and organised around a feature-based directory structure. Expo provides the development toolchain —expo start launches the Metro bundler and opens a tunnel to physical or simulated devices, while eas build produces production-ready IPA and APK artefacts without requiring a local Xcode or Android Studio setup.
Supabase is consumed via the @supabase/supabase-js client, which wraps the PostgREST auto-generated API and the GoTrue auth endpoints. Database queries are written as typed JavaScript calls that map directly to Supabase table rows, with TypeScript interfaces generated from the database schema to catch mismatches at compile time. Row-level security policies ensure users can only read and write data they are authorised to access.
The Express chat microservice listens for Socket.IO connections over WebSocket (with long-polling fallback). On connection, clients emit a join-room event with the event ID; the server places them in the corresponding Socket.IO room and relays subsequent message events to all room members. Heroku’s persistent dyno keeps the Node.js process alive between requests, maintaining active WebSocket connections across the user base. The microservice is stateless beyond in-memory room membership, meaning a restart cleanly resets rooms and clients reconnect automatically.