An Expo React Native mobile application that helps disabled students have more accessibility around UT Campus on an interactive map, powered by Expo and Cloudflare Workers.
-
Clone the repository
git clone https://github.com/Longhorn-Developers/Mobilize.git cd Mobilize -
Install mobile app dependencies
pnpm install
-
Install server dependencies
cd server pnpm install -
Setup environment variables
.env.local
EXPO_PUBLIC_API_URL=http://localhost:54321
server/.env (you can find these in cloudflare dashboard)
CLOUDFLARE_ACCOUNT_ID= CLOUDFLARE_DATABASE_ID=
Run on iOS:
pnpm iosRun on Android:
pnpm androidStart local development server:
cd server
pnpm devGenerate database migrations (from updated server/src/db/schema.ts):
cd server
pnpm genApply database migrations:
cd server
pnpm migrateRegenerate types:
cd server
pnpm typesSeed the database with test profiles, avoidance_areas, and POIs:
cd server
pnpm seedLint code:
pnpm lintFormat code:
pnpm formatPrebuild native projects:
pnpm prebuildThis generates native iOS and Android projects from your Expo configuration.
.
├── app/ # Expo Router pages
│ ├── (tabs)/ # Tab navigation screens
│ ├── _layout.tsx # Root layout
│ └── +not-found.tsx # 404 page
├── components/ # Reusable React components
├── assets/ # Images, fonts, and other static assets
├── types/ # TypeScript type definitions
├── utils/ # Utility functions and custom hooks
├── server/ # Cloudflare Workers backend
│ ├── src/ # Server source code
│ ├── migrations/ # Database migrations
│ └── test/ # Server tests
├── android/ # Native Android project
├── ios/ # Native iOS project
└── package.json # Project dependencies
Build for iOS:
expo build:iosBuild for Android:
expo build:androidDeploy to Cloudflare:
cd server
pnpm deploy- App Configuration:
app.json - TypeScript:
tsconfig.json - Tailwind:
tailwind.config.js - ESLint:
eslint.config.js - Prettier:
prettier.config.js - Server:
server/wrangler.jsonc - Database:
server/drizzle.config.ts
- Framework: React Native with Expo SDK 54
- Navigation: Expo Router v6
- Styling: NativeWind (TailwindCSS for React Native)
- Maps: Expo Maps (Apple Maps for iOS, Google Maps for Android)
- State Management: TanStack Query (React Query)
- UI Components:
- React Native Gesture Handler
- React Native Reanimated
- Gorhom Bottom Sheet
- Phosphor React Native (Icons)
- Geospatial: Turf.js
- Forms: React Hook Form with Zod validation
- Runtime: Cloudflare Workers
- Framework: Hono
- Database: Cloudflare D1 (SQLite)
- ORM: Drizzle ORM
- Testing: Vitest with Cloudflare Workers pool
- Node.js (v18 or higher recommended)
- pnpm (package manager)
- Expo CLI
- iOS Simulator (for iOS development) or Android Studio (for Android development)
- Cloudflare account (for backend deployment)
- Create a feature branch i.e.
astrol99/feat-thing - Make your changes
- Run linting and formatting:
pnpm format - Submit a pull request
Longhorn Developers
Built with ❤️ using Expo and Cloudflare Workers