Mobile Application Development Fundamentals
- Course
- DEV 272
- Credits
- 5
- Duration
- 12 weeks
- Taught
- Spring 2025, Fall 2026, Spring 2027 - upcoming
Cross-platform mobile development with React Native, Expo, and TypeScript. For the first six weeks every student builds one app, step by step, from the course template: core components and Flexbox, navigation with Expo Router, state with hooks and Context, forms and validation, remote data with Supabase and TanStack Query, local storage with AsyncStorage, then tests and code-quality tooling. For the last six, students join a team of about four and build a complete app over four one-week sprints, then present it to the class with a live phone demo.
Week by week
Weeks 1 to 6. One app, built step by step
Each assignment extends the one before it in the same repository.
- Week 1Mobile landscape, Expo setup, file-based routing, a JavaScript and TypeScript refresher
- Week 2Core components, Flexbox, FlatList, controlled input, platform-specific code
- Week 3Expo Router: stack, tabs, dynamic routes. State with hooks and Context
- Week 4Forms: input configuration, validation, error feedback, React Hook Form and Zod
- Week 5Remote data: loading and error states, Supabase, TanStack Query, AsyncStorage
- Week 6Testing and code quality: Jest, React Native Testing Library, ESLint, Prettier, Husky
Weeks 7 to 12. One team, four sprints, and a presentation
Teams of about four. Every change arrives by pull request, reviewed by a teammate.
- Week 7Kickoff: roles, sprint planning, GitHub Projects, definition of done
- Week 8Sprint 1: navigation skeleton and core screens
- Week 9Sprint 2: core features on real data, performance, theming
- Week 10Sprint 3: advanced features. Location, sensors, notifications, offline
- Week 11Sprint 4: acceptance testing, debugging with DevTools, final polish
- Week 12Final presentations with a live phone demo
By the end, students can
- Build responsive interfaces with React Native core components and Flexbox
- Implement stack and tab navigation and pass data between screens with Expo Router
- Manage local and shared state with hooks and Context
- Handle user input and validate forms
- Work with remote data through Supabase and TanStack Query, and persist it locally with AsyncStorage
- Use device features: camera and photos, location, sensors, notifications, and offline support
- Test, debug, and optimize an app with Jest, React Native Testing Library, ESLint, Prettier, Husky, and React Native DevTools
- Collaborate with Git branches, pull requests, code review, a GitHub Projects board, sprints, and retrospectives
- Present a finished app and its design decisions to a technical and non-technical audience
The team app
Tab and stack navigation with a dynamic route, at least four real screens, two validated forms, remote data in a team-owned Supabase project read through TanStack Query, local persistence, one advanced device feature, and the same tests and quality tooling as the solo app. All code reaches the repository through pull requests reviewed by a teammate.
Built with
- React Native
- Expo SDK 57
- TypeScript
- Expo Router
- Supabase
- TanStack Query
- AsyncStorage
- Jest
- React Native Testing Library
- ESLint
- Prettier
- Husky
- pnpm
- GitHub Projects