No description
- TypeScript 98.6%
- CSS 1%
- JavaScript 0.4%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
|
||
| app | ||
| assets | ||
| components | ||
| constants | ||
| context | ||
| services | ||
| utils | ||
| .env.example | ||
| .gitignore | ||
| app.json | ||
| CLAUDE.md | ||
| eslint.config.js | ||
| global.css | ||
| metro.config.js | ||
| nativewind-env.d.ts | ||
| package.json | ||
| pnpm-lock.yaml | ||
| pnpm-workspace.yaml | ||
| postcss.config.mjs | ||
| README.md | ||
| tsconfig.json | ||
resources-relationnelles-mobile
Mobile client for the Ressources Relationnelles / CESIZen platform.
Expo (React Native) app using Expo Router, NativeWind v5, TypeScript strict, and the DSFR design tokens (French government design system).
Prerequisites
- Node.js 20+
pnpm(the repo ships apnpm-lock.yaml)- The sibling
resources-relationnelles-apirunning locally - iOS Simulator / Android Emulator / Expo Go on a physical device
Setup
pnpm install
cp .env.example .env
# Edit .env to point at your local API (see below)
pnpm start
Environment variables
Copy .env.example to .env and set:
| Variable | Required | Description |
|---|---|---|
EXPO_PUBLIC_API_URL |
Yes | Base URL of the API. The platform you run on changes what this should be, see the table below. |
EXPO_PUBLIC_* variables are inlined into the JS bundle at build time. Do not put secrets there.
Choosing EXPO_PUBLIC_API_URL
The API listens on http://localhost:5172 from the host machine. The right URL for the mobile app depends on where it runs:
| Target | URL |
|---|---|
| iOS Simulator | http://localhost:5172 |
| Android Emulator | http://10.0.2.2:5172 |
| Expo Go on a physical device | http://<your-LAN-IP>:5172 |
Web (expo start --web) |
http://localhost:5172 |
If the app boots but every request hangs or returns Network request failed, this is almost always the cause.
Scripts
pnpm start # Expo dev server (scan QR or pick a platform)
pnpm android # Launch on Android emulator
pnpm ios # Launch on iOS simulator
pnpm web # Open in a browser
pnpm lint # Run expo lint (ESLint)
Architecture
See CLAUDE.md for the full conventions reference. Quick map:
app/— file-based routes (Expo Router).(tabs)/is the bottom-nav root.app/_layout.tsx— root layout, font loading, auth/route guard.services/— API client (api.ts), auth flow (auth.ts), resources/comments (resources.ts).context/—AuthContext(JWT + SecureStore),ThemeContext(light/dark DSFR palette).components/— shared UI primitives (Tag,Footer).utils/— small helpers (formatDate).constants/colors.ts— DSFR-flavored design tokens for both themes.