Skip to main content

All courses

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.

  1. Week 1
    Mobile landscape, Expo setup, file-based routing, a JavaScript and TypeScript refresher
  2. Week 2
    Core components, Flexbox, FlatList, controlled input, platform-specific code
  3. Week 3
    Expo Router: stack, tabs, dynamic routes. State with hooks and Context
  4. Week 4
    Forms: input configuration, validation, error feedback, React Hook Form and Zod
  5. Week 5
    Remote data: loading and error states, Supabase, TanStack Query, AsyncStorage
  6. Week 6
    Testing 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.

  1. Week 7
    Kickoff: roles, sprint planning, GitHub Projects, definition of done
  2. Week 8
    Sprint 1: navigation skeleton and core screens
  3. Week 9
    Sprint 2: core features on real data, performance, theming
  4. Week 10
    Sprint 3: advanced features. Location, sensors, notifications, offline
  5. Week 11
    Sprint 4: acceptance testing, debugging with DevTools, final polish
  6. Week 12
    Final 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

© - Zak Brinlee