DEVSOC APP
PROJECTSACTIVE

DEVSOC APP

Official DevSoc mobile companion app

mobilereact nativeexpofirebase

The DevSoc App puts everything a member needs in their pocket: the events calendar, project showcases, member directory, and society announcements — all with push notifications so you never miss a workshop registration window. Built with React Native and Expo for a single codebase that targets both iOS and Android.

App Architecture

The app is structured around five main screens: Home feed, Events, Projects, Members, and Profile. Navigation uses Expo Router's file-based system, which mirrors the Next.js App Router pattern our web team already knows. State management is a combination of React Query for server state (events, projects) and Zustand for local UI state (filters, preferences). Firebase Firestore is the primary database, with Firebase Auth handling member authentication.

Push Notifications

Push notifications are handled through Expo Notifications with an Expo push token registered at app launch. The notification service is a small Node.js server that listens to Firestore changes (new events, announcements) and fans out push notifications to relevant subscribers. Members can configure their notification preferences per category — events, project updates, announcements — in the Profile screen.

Offline Support

The events and projects screens cache their last-known data with React Query's persistence plugin, so core content is readable without a network connection. The cache is invalidated on app foreground with a stale-time of 5 minutes. The member directory is not cached due to privacy considerations — it requires an active session to load.

Contributing to the App

Install Expo CLI and Expo Go on your phone. Clone the repo, run `npm install`, then `npx expo start` to launch the dev server. Scan the QR code with Expo Go and the app runs on your device with hot reload. Most contributions don't require understanding the full Firebase setup — UI components and screens can be developed with mock data defined in `__mocks__/`.

Rotating vector

JOIN US

Privacy policy

Cookie policy

Terms & Conditions

2024 DevSoc