Files
turbostarter/apps/mobile/package.json
Alejandro Gutiérrez 3527e732d4 feat: turbostarter boilerplate
Production-ready Next.js boilerplate with:
- Runtime env validation (fail-fast on missing vars)
- Feature-gated config (S3, Stripe, email, OAuth)
- Docker + Coolify deployment pipeline
- PostgreSQL + pgvector, MinIO S3, Better Auth
- TypeScript strict mode (no ignoreBuildErrors)
- i18n (en/es), AI modules, billing, monitoring

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 01:01:55 +01:00

106 lines
3.7 KiB
JSON

{
"name": "mobile",
"version": "1.1.0",
"private": true,
"main": "expo-router/entry",
"scripts": {
"android": "expo run:android",
"clean": "git clean -xdf .cache .expo .turbo android ios node_modules",
"dev": "expo start --clear",
"dev:android": "expo start --android",
"dev:ios": "expo start --ios",
"format": "prettier --check . --ignore-path ../../.gitignore",
"ios": "expo run:ios",
"lint": "eslint",
"typecheck": "tsc --noEmit"
},
"prettier": "@turbostarter/prettier-config",
"dependencies": {
"@dev-plugins/react-navigation": "~0.4.0",
"@dev-plugins/react-query": "~0.4.0",
"@expo-google-fonts/geist": "0.4.1",
"@expo-google-fonts/geist-mono": "0.4.1",
"@expo/metro-runtime": "~6.1.2",
"@hookform/resolvers": "5.2.2",
"@react-native-async-storage/async-storage": "2.2.0",
"@react-native-google-signin/google-signin": "16.0.0",
"@shopify/react-native-skia": "2.2.12",
"@stardazed/streams-text-encoding": "1.0.2",
"@tanstack/react-query": "catalog:",
"@turbostarter/analytics-mobile": "workspace:*",
"@turbostarter/api": "workspace:*",
"@turbostarter/auth": "workspace:*",
"@turbostarter/billing": "workspace:*",
"@turbostarter/cms": "workspace:*",
"@turbostarter/db": "workspace:*",
"@turbostarter/i18n": "workspace:*",
"@turbostarter/monitoring-mobile": "workspace:*",
"@turbostarter/shared": "workspace:*",
"@turbostarter/ui": "workspace:*",
"@turbostarter/ui-mobile": "workspace:*",
"@ungap/structured-clone": "1.3.0",
"envin": "catalog:",
"expo": "~54.0.27",
"expo-apple-authentication": "~8.0.8",
"expo-application": "~7.0.8",
"expo-auth-session": "~7.0.10",
"expo-blur": "~15.0.8",
"expo-build-properties": "~1.0.10",
"expo-clipboard": "~8.0.8",
"expo-constants": "~18.0.11",
"expo-crypto": "~15.0.8",
"expo-dev-client": "~6.0.20",
"expo-font": "~14.0.10",
"expo-glass-effect": "~0.1.8",
"expo-image": "~3.0.11",
"expo-image-picker": "~17.0.9",
"expo-linking": "~8.0.10",
"expo-localization": "~17.0.8",
"expo-navigation-bar": "~5.0.10",
"expo-network": "~8.0.8",
"expo-router": "~6.0.17",
"expo-secure-store": "^15.0.8",
"expo-splash-screen": "~31.0.12",
"expo-status-bar": "~3.0.9",
"expo-store-review": "~9.0.9",
"expo-system-ui": "~6.0.9",
"expo-tracking-transparency": "~6.0.8",
"expo-updates": "~29.0.15",
"expo-web-browser": "~15.0.10",
"metro-react-native-babel-transformer": "0.77.0",
"react": "catalog:react19",
"react-dom": "catalog:react19",
"react-hook-form": "catalog:",
"react-native": "catalog:",
"react-native-gesture-handler": "~2.29.1",
"react-native-keyboard-controller": "1.18.5",
"react-native-marked": "7.0.2",
"react-native-reanimated": "~4.1.5",
"react-native-safe-area-context": "5.6.2",
"react-native-screens": "~4.16.0",
"react-native-svg": "15.15.1",
"react-native-svg-transformer": "1.5.2",
"react-native-web": "~0.21.2",
"react-native-webview": "13.15.0",
"react-native-worklets": "0.5.1",
"uniwind": "1.2.2",
"victory-native": "41.20.1",
"zod": "catalog:",
"zustand": "5.0.8"
},
"devDependencies": {
"@babel/core": "^7.28.5",
"@babel/preset-env": "^7.28.5",
"@babel/runtime": "^7.28.4",
"@turbostarter/eslint-config": "workspace:*",
"@turbostarter/prettier-config": "workspace:*",
"@turbostarter/tsconfig": "workspace:*",
"@types/babel__core": "^7.20.5",
"@types/react": "catalog:react19",
"@types/ungap__structured-clone": "1.2.0",
"eslint": "catalog:",
"prettier": "catalog:",
"typescript": "catalog:"
}
}