Getting Started
Puedes iniciar de manera automatica con el script que automatiza todos los pasos. O puedes seguir paso a paso donde se describen manualmente.
Script automaticamente
1. Crear nueva aplicación
Suponiendo que estas en un directorio por ejemplo: /Users/Pepito/Projects/Mobile
git clone git@github.com:CrisangerA/react-native-clean-architecture.git
npx @react-native-community/cli@15.0.1 init AwesomeProject --version 0.78.0
2. Extraer script
Extrae el script rnca.sh
del repositorio y copialo dentro de la carpeta de tu proyecto
cp ./react-native-clean-architecture/rnca.sh ./AwesomeProject
cd AwesomeProject
3. Inicializar plantilla
- Ejecutar script
chmod +x ./rnca.sh
./rnca.sh init --name AwesomeProject
- Despues de inicializar el proyecto comprueba que se ejecuta correctamente.
bun start
-
2.1 Compilar para Android
bun android
-
2.2 Compilar para iOS. Te recomiendo que antes de ejecutar en ios abras el proyecto .xcworkspace con Xcode y selecciones un grupo para la firma de la aplicacion en Signing & Capabilities -> Signin -> Team.
bun ios
- Una vez que compruebes que tu aplicacion se ejecuta tanto en iOS como en Android puedes continuar con el comando:
./rnca.sh scaffold
Este comando agregara la plantilla base al proyecto. Es equivalente a terminar la configuración manual en el punto 5. Para ejecutar la app nuevamente es necesario que completes la configuración adicional.
Configuración adicional
Firebase y GCloud
Crear un nuevo proyecto de firebase o utiliza uno existente. En la consola de Gcloud asegurate de seleccionar el mismo proyecto de firebase.
Te recomiendo seguir los siguientes pasos:
- Crear proyecto de firebase.
- Agregar aplicación de iOS y Android.
- Solo en Firebase ya que en el codigo lo hace el
script
- (No descargar aún google-services.json, GoogleService-Info.plist).
- Configurar autenticación en Gcloud. Android y iOS
- En la consola de Gcloud en Apis y servicios -> Credenciales -> agrega una nueva credencial de cliente OAuth para Android y iOS. A veces firebase crea automaticamente la de iOS.
- Habilitar autenticación con Google.
- En Firebase Autenticación -> Metodos de acceso -> habilitar el proveedor de autenticación de Google.
- Descargar archivos de configuración.
- Android -> android/app/google-services.json
- iOS -> agregar desde Xcode ios/GoogleService-Info.plist.
- Agregar el scheme de iOS.
- En Xcode. YourAppName Info -> URL Types -> Agregar URL Scheme.
- El esquema esta en la consola de Google.
- Agregar las credenciales en codigo
src/config/secure-store.json
.
- Para android ve al archivo google-services.json client -> oauth_client -> client_id. Copia client_id donde client_type sea igual a 3.
Guardar estos datos de forma segura. Para ejemplos practicos se hace un mock en el archivo src/config/secure-store.json
desde donde se pueden establecer los secretos
Finalmente ejecuta nuevamente la aplicación con toda la plantilla implementada.
bun start
Compilar para en Android
bun android
Compilar para en iOS
bun ios
Manualmente
Paso a paso:
- Copiar archivos de configuracion inicial
- Actualizar package.json
- Instalar dependencias y preparar git hooks
- Instalar iconos en iOS
react-native-vector-icons
- Configurar Podfile para utilizar firebase en iOS
- Instalar dependencias iOS.
- Ejecutar la aplicacion
1. Configuración
1. Archivos de configuracion
cp ../react-native-clean-architecture/package.json ./
cp ../react-native-clean-architecture/.prettierrc.js ./
cp ../react-native-clean-architecture/.eslintignore ./
cp ../react-native-clean-architecture/babel.config.js ./
cp ../react-native-clean-architecture/tsconfig.json ./
cp ../react-native-clean-architecture/ReactotronConfig.js ./
cp ../react-native-clean-architecture/index.js ./
cp -r ../react-native-clean-architecture/.trae ./
cp -r ../react-native-clean-architecture/.vscode ./
mkdir src
cp -r ../react-native-clean-architecture/src/config ./src
2. Actualizar package.json
name: "NameOfYourApplication",
3. instalar dependencias y preparar git hooks
bun install && bun prepare
4. Instalar iconos en iOS react-native-vector-icons
npx rnvi-update-plist package.json ios/[Your-App-Name]/Info.plist
5. Configurar Podfile para utilizar firebase en iOS
use_frameworks! :linkage => :static
$RNFirebaseAsStaticFramework = true
6. Instalar dependencias iOS.
bun pod-cocoa
bun pod-install
7. Ejecutar la aplicacion
bun start
Compilar para en Android
bun android
Compilar para en iOS
bun ios
2. Scaffold base
cp -r ../react-native-clean-architecture/.husky ./
cp -r ../react-native-clean-architecture/App.tsx ./
cp -r ../react-native-clean-architecture/src/components ./src
cp -r ../react-native-clean-architecture/src/containers ./src
cp -r ../react-native-clean-architecture/src/theme ./src
3. Modulos
mkdir src/modules
cp -r ../react-native-clean-architecture/src/modules/authentication ./src/modules
cp -r ../react-native-clean-architecture/src/modules/navigation ./src/modules
cp -r ../react-native-clean-architecture/src/modules/user ./src/modules
4. Firebase en iOS
Agrega las siguientes lineas para tu aplicación de iOS
import Firebase
FirebaseApp.configure()
5. Firebase en Android
Agrega las siguientes lineas para tu aplicacion de Android En las dependencias agrega
classpath 'com.google.gms:google-services:4.4.2'
Al final agrega
apply plugin: 'com.google.gms.google-services'
6. Configuración adicional
Si hiciste toda la configuración manual el ultimo paso es configurar firebase y gcloud