An Expo app built with Expo Router, TypeScript, and file-based routing. It ships with a bottom tab bar (Home, Explore, Profile), a nested profile stack, light/dark theming, and no placeholder screens left to delete.
npm install
npm startThen open the app on a device with Expo Go, or press a for Android, i
for iOS, or w for web in the Metro terminal.
Other scripts:
| Command | Description |
|---|---|
npm start |
Start the dev server |
npm run android |
Start and open on Android |
npm run ios |
Start and open on iOS (macOS only) |
npm run web |
Start and open in a browser |
npm run typecheck |
Run TypeScript with no emit |
app/
├── _layout.tsx Root stack, theme provider, font loading
├── modal.tsx About screen, presented as a modal
├── +not-found.tsx 404 route
├── (tabs)/
│ ├── _layout.tsx Bottom tab navigator
│ ├── index.tsx Home
│ ├── explore.tsx Explore / search
│ └── profile.tsx Profile
└── profile/
├── edit.tsx Edit profile form (pushed from Profile)
└── settings.tsx Settings with toggles (pushed from Profile)
components/ Button, Card, MenuRow, Themed primitives
constants/Colors.ts Light and dark color tokens
assets/ Icons, splash image, fonts
Every file under app/ is a route. Add a screen by adding a file — app/(tabs)/activity.tsx
becomes /activity and shows up as a tab once you register it in app/(tabs)/_layout.tsx.
- Colors and theming — edit
constants/Colors.ts. Screens read tokens throughuseThemeColor()fromcomponents/Themed.tsx, so both themes stay in sync. - Tabs — add or remove
<Tabs.Screen>entries inapp/(tabs)/_layout.tsx. Icons useexpo-symbolswith per-platform names. - Data —
app/(tabs)/explore.tsxfilters a localTOPICSarray andapp/(tabs)/profile.tsxrenders a localUSERobject. Both are marked in the code as the place to swap in your API. - App name, icon, and splash —
app.jsonandassets/images/.
- Typed routes are enabled (
experiments.typedRoutesinapp.json), sorouter.push()and<Link href>are checked against the real routes at build time. LICENSEis the MIT license that ships with the Expo template. Replace it with your own.