A modern, full-stack mobile application for discovering and joining events — with real-time attendee updates powered by Socket.IO, GraphQL, and React Native.
Purpose of building this app was to test out my own skills and this is built in 3 days to put my consistency in test
- 🔐 Authentication — Sign up & sign in with secure JWT-based auth.
- 🧑🤝🧑 Join Events — Explore upcoming events and check in with a tap.
- 🔁 Live Updates — See attendees join in real-time using websockets.
- 📦 Persisted Auth State — Automatic session restore using Zustand.
- 🧠 Optimized Data Fetching — Done using TanStack Query.
- 🔧 Backend with GraphQL + Prisma + PostgreSQL — Strongly typed and scalable.
| Layer | Technology |
|---|---|
| 💬 Frontend | React Native (Expo) |
| 🧠 State Mgmt | Zustand + TanStack Query |
| 🧪 Language | TypeScript |
| 🛰️ Backend | Node.js, GraphQL (Pothos), Prisma ORM |
| 🗃️ Database | PostgreSQL (via Prisma) |
| 📡 Realtime | Socket.IO |
- Built with Expo App Router.
- Contains routing logic, layouts, and screens.
- Reusable UI components like buttons, etc.
- Follows atomic or feature-based design structure.
- Houses global values like:
- Color palettes
- API base URLs & and other constants
- Contains:
.tsfiles for queries/mutations
- Custom hooks including:
- TanStack Query logic (
useQuery,useMutation) - Client-side utilities (e.g.,
useAuth)
- TanStack Query logic (
- Initialization files:
- Socket.IO setup
- GraphQL Client
- Other service clients
- Global state logic using Zustand
- Shared state for user, UI themes, auth, etc.
- Connection to backend server helper functions
- Fully separate GraphQL server
- Uses Pothos/GraphQL Yoga/etc.
- Deployed independently (e.g., Vercel, Railway)
- Handles DB (Prisma), auth, and logic
- Exposes API for frontend to consume
- JWT-based access token sent via
Authorizationheader. - Tokens stored locally for session recovery.
- Backend protects GraphQL routes using JWT validation middleware.
When a user joins an event:
- A GraphQL mutation
joinEvent(eventId)is triggered. - Backend emits an event via
Socket.IO:event:attendeeAdded. - Frontend listeners (
useEffect-based) capture this and update the UI instantly.
# Backend
AFTER POPULATING ENV FILE WITH REQUIRED FIELDS,
npm install
npx prisma db push # PUSHES SCHEMA to db AND generates prisma client and pothos integration files
npm run dev # Starts GraphQL server + Socket.io
# Frontend
npm install
npx expo start # Launches the mobile appTO BE DONE (SOON)
- Made with ❤️ by Rahul N Bangera
- Connect via LinkedIn