Compare commits
20 Commits
fd27b42c63
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9f2a0d62e0 | ||
|
|
22e4585bb9 | ||
| 4afaf69d10 | |||
|
|
a8fcf027d0 | ||
| 68673baf99 | |||
|
|
676501e7f2 | ||
|
|
e7ad9e1d26 | ||
|
|
103f7f45a0 | ||
|
|
dfcb1168b9 | ||
| a9508bd34a | |||
| 646b9dcee3 | |||
| 1c91792ab0 | |||
| 3caf1de467 | |||
| 1ccef0f604 | |||
| 7cfdac6f18 | |||
| 32fbbbefdd | |||
| 738dec7192 | |||
| 858341252e | |||
| b70c943893 | |||
| a10d7ecada |
49
.eslintrc.json
Normal file
@@ -0,0 +1,49 @@
|
||||
{
|
||||
"root": true,
|
||||
"ignorePatterns": ["projects/**/*"],
|
||||
"overrides": [
|
||||
{
|
||||
"files": ["*.ts"],
|
||||
"parserOptions": {
|
||||
"project": ["tsconfig.json"],
|
||||
"createDefaultProgram": true
|
||||
},
|
||||
"extends": [
|
||||
"plugin:@angular-eslint/recommended",
|
||||
"plugin:@angular-eslint/template/process-inline-templates"
|
||||
],
|
||||
"rules": {
|
||||
"@angular-eslint/directive-selector": [
|
||||
"error",
|
||||
{
|
||||
"type": "attribute",
|
||||
"prefix": "app",
|
||||
"style": "camelCase"
|
||||
}
|
||||
],
|
||||
"@angular-eslint/component-selector": [
|
||||
"error",
|
||||
{
|
||||
"type": "element",
|
||||
"prefix": ["app", "page"],
|
||||
"style": "kebab-case"
|
||||
}
|
||||
],
|
||||
"@angular-eslint/component-class-suffix": [
|
||||
"error",
|
||||
{
|
||||
"suffixes": ["Component", "Page"]
|
||||
}
|
||||
],
|
||||
"@typescript-eslint/no-empty-function": "off",
|
||||
"@typescript-eslint/no-explicit-any": "off",
|
||||
"no-console": ["warn", { "allow": ["warn", "error"] }]
|
||||
}
|
||||
},
|
||||
{
|
||||
"files": ["*.html"],
|
||||
"extends": ["plugin:@angular-eslint/template/recommended"],
|
||||
"rules": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
115
.gitignore
vendored
Normal file → Executable file
@@ -1,67 +1,72 @@
|
||||
# ---> Android
|
||||
# Gradle files
|
||||
.gradle/
|
||||
build/
|
||||
# Dependencies
|
||||
/node_modules
|
||||
package-lock.json
|
||||
|
||||
# Local configuration file (sdk path, etc)
|
||||
local.properties
|
||||
# Build outputs
|
||||
/dist
|
||||
/www
|
||||
/.angular
|
||||
|
||||
# Log/OS Files
|
||||
*.log
|
||||
|
||||
# Android Studio generated files and folders
|
||||
captures/
|
||||
.externalNativeBuild/
|
||||
.cxx/
|
||||
*.apk
|
||||
output.json
|
||||
|
||||
# IntelliJ
|
||||
*.iml
|
||||
.idea/
|
||||
misc.xml
|
||||
deploymentTargetDropDown.xml
|
||||
render.experimental.xml
|
||||
|
||||
# Keystore files
|
||||
*.jks
|
||||
*.keystore
|
||||
|
||||
# Google Services (e.g. APIs or Firebase)
|
||||
google-services.json
|
||||
|
||||
# Android Profiling
|
||||
*.hprof
|
||||
|
||||
>>>>>>> 3ee11a07d80dfc9282f1d03d24ee562d84852742
|
||||
# Specifies intentionally untracked files to ignore when using Git
|
||||
# http://git-scm.com/docs/gitignore
|
||||
# IDE
|
||||
/.idea
|
||||
/.vscode
|
||||
*.sublime-project
|
||||
*.sublime-workspace
|
||||
|
||||
# System files
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
*~
|
||||
*.sw[mnpcod]
|
||||
|
||||
# Logs
|
||||
*.log
|
||||
npm-debug.log*
|
||||
yarn-error.log
|
||||
|
||||
# Temporary files
|
||||
.tmp
|
||||
*.tmp
|
||||
*.tmp.*
|
||||
*.sublime-project
|
||||
*.sublime-workspace
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
UserInterfaceState.xcuserstate
|
||||
$RECYCLE.BIN/
|
||||
|
||||
*.log
|
||||
log.txt
|
||||
npm-debug.log*
|
||||
|
||||
/.idea
|
||||
# Ionic/Capacitor
|
||||
/.ionic
|
||||
/.sass-cache
|
||||
/.sourcemaps
|
||||
/.versions
|
||||
/.vscode
|
||||
/coverage
|
||||
/dist
|
||||
/node_modules
|
||||
/platforms
|
||||
/plugins
|
||||
/www
|
||||
/platforms
|
||||
|
||||
# Android
|
||||
android/.gradle/
|
||||
android/build/
|
||||
android/app/build/
|
||||
android/local.properties
|
||||
android/captures/
|
||||
android/.externalNativeBuild/
|
||||
android/.cxx/
|
||||
*.apk
|
||||
*.aab
|
||||
*.jks
|
||||
*.keystore
|
||||
google-services.json
|
||||
*.hprof
|
||||
|
||||
# iOS
|
||||
ios/App/Pods/
|
||||
*.xcworkspace
|
||||
*.xcuserstate
|
||||
|
||||
# Environment
|
||||
.env
|
||||
.env.local
|
||||
.env.*.local
|
||||
|
||||
# Test
|
||||
/coverage
|
||||
.phpunit.result.cache
|
||||
|
||||
# Sass
|
||||
/.sass-cache
|
||||
|
||||
# Misc
|
||||
*.iml
|
||||
output.json
|
||||
|
||||
BIN
JobHero.apk
0
JobHero_1.0.16-release-unsigned.apk
Normal file → Executable file
0
JobHero_1.0.17.aab
Normal file → Executable file
242
README.md
Normal file → Executable file
@@ -1,2 +1,242 @@
|
||||
# Jobhero_front
|
||||
# JobHero Frontend
|
||||
|
||||
Aplicacion movil y web para conectar usuarios con proveedores de servicios.
|
||||
|
||||
## Stack Tecnologico
|
||||
|
||||
| Tecnologia | Version |
|
||||
|------------|---------|
|
||||
| Angular | 18.2.14 |
|
||||
| Ionic | 8.7.17 |
|
||||
| Capacitor | 6.0.0 |
|
||||
| TypeScript | 5.4.5 |
|
||||
| Node.js | 20.x (requerido) |
|
||||
|
||||
## Requisitos Previos
|
||||
|
||||
- **Node.js 20.x** o superior
|
||||
- **npm** o **yarn**
|
||||
- **Android Studio** (para compilar APK)
|
||||
- **Xcode** (solo macOS, para iOS)
|
||||
|
||||
## Instalacion
|
||||
|
||||
### 1. Clonar el repositorio
|
||||
|
||||
```bash
|
||||
git clone <url-del-repositorio>
|
||||
cd jobhero-frontend
|
||||
```
|
||||
|
||||
### 2. Instalar Node.js 20 (si no esta instalado)
|
||||
|
||||
```bash
|
||||
# Usando nvm (recomendado)
|
||||
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
|
||||
source ~/.bashrc
|
||||
nvm install 20
|
||||
nvm use 20
|
||||
```
|
||||
|
||||
### 3. Instalar dependencias
|
||||
|
||||
```bash
|
||||
npm install --legacy-peer-deps
|
||||
```
|
||||
|
||||
### 4. Configurar variables de entorno
|
||||
|
||||
Crear archivo `src/environments/environment.ts`:
|
||||
|
||||
```typescript
|
||||
export const environment = {
|
||||
production: false,
|
||||
apiUrl: 'http://localhost:8000/api',
|
||||
googleMapsApiKey: 'TU_API_KEY_DE_GOOGLE_MAPS',
|
||||
facebookAppId: 'TU_FACEBOOK_APP_ID',
|
||||
googleClientId: 'TU_GOOGLE_CLIENT_ID'
|
||||
};
|
||||
```
|
||||
|
||||
Crear archivo `src/environments/environment.prod.ts`:
|
||||
|
||||
```typescript
|
||||
export const environment = {
|
||||
production: true,
|
||||
apiUrl: 'https://tu-dominio.com/api',
|
||||
googleMapsApiKey: 'TU_API_KEY_DE_GOOGLE_MAPS',
|
||||
facebookAppId: 'TU_FACEBOOK_APP_ID',
|
||||
googleClientId: 'TU_GOOGLE_CLIENT_ID'
|
||||
};
|
||||
```
|
||||
|
||||
## Desarrollo
|
||||
|
||||
### Ejecutar en modo desarrollo (navegador)
|
||||
|
||||
```bash
|
||||
npm start
|
||||
# o
|
||||
ng serve
|
||||
```
|
||||
|
||||
La aplicacion estara disponible en `http://localhost:4200`
|
||||
|
||||
### Build de produccion
|
||||
|
||||
```bash
|
||||
npm run build
|
||||
# o
|
||||
ng build --configuration=production
|
||||
```
|
||||
|
||||
Los archivos compilados estaran en `/www`
|
||||
|
||||
## Compilacion Android
|
||||
|
||||
### 1. Configurar Android
|
||||
|
||||
```bash
|
||||
# Sincronizar Capacitor
|
||||
npx cap sync android
|
||||
|
||||
# Abrir en Android Studio
|
||||
npx cap open android
|
||||
```
|
||||
|
||||
### 2. Configurar google-services.json
|
||||
|
||||
Descargar `google-services.json` desde Firebase Console y colocarlo en:
|
||||
```
|
||||
android/app/google-services.json
|
||||
```
|
||||
|
||||
### 3. Generar APK
|
||||
|
||||
Desde Android Studio:
|
||||
- Build > Build Bundle(s) / APK(s) > Build APK(s)
|
||||
|
||||
O desde terminal:
|
||||
```bash
|
||||
cd android
|
||||
./gradlew assembleRelease
|
||||
```
|
||||
|
||||
El APK estara en: `android/app/build/outputs/apk/release/`
|
||||
|
||||
### 4. Firmar APK para produccion
|
||||
|
||||
```bash
|
||||
# Generar keystore (solo primera vez)
|
||||
keytool -genkey -v -keystore jobhero.keystore -alias jobhero -keyalg RSA -keysize 2048 -validity 10000
|
||||
|
||||
# Firmar APK
|
||||
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore jobhero.keystore app-release-unsigned.apk jobhero
|
||||
|
||||
# Optimizar APK
|
||||
zipalign -v 4 app-release-unsigned.apk jobhero-release.apk
|
||||
```
|
||||
|
||||
## Estructura del Proyecto
|
||||
|
||||
```
|
||||
src/
|
||||
├── app/
|
||||
│ ├── models/ # Interfaces y modelos
|
||||
│ ├── pages/ # Paginas de la aplicacion
|
||||
│ │ ├── landing/ # Pagina inicial
|
||||
│ │ ├── login/ # Login
|
||||
│ │ ├── register/ # Registro
|
||||
│ │ ├── dashboard/ # Panel principal
|
||||
│ │ ├── contracts/ # Gestion de contratos
|
||||
│ │ ├── postulations/ # Postulaciones
|
||||
│ │ └── ...
|
||||
│ ├── services/ # Servicios (API, auth, etc.)
|
||||
│ └── app-routing.module.ts
|
||||
├── assets/ # Imagenes, iconos, traducciones
|
||||
├── environments/ # Configuracion por entorno
|
||||
└── theme/ # Estilos globales
|
||||
```
|
||||
|
||||
## Plugins de Capacitor
|
||||
|
||||
| Plugin | Uso |
|
||||
|--------|-----|
|
||||
| @capacitor/camera | Captura de fotos |
|
||||
| @capacitor/geolocation | Ubicacion GPS |
|
||||
| @capacitor/preferences | Almacenamiento local |
|
||||
| @capacitor/browser | Navegador in-app |
|
||||
| @capacitor/status-bar | Barra de estado |
|
||||
| @capacitor/splash-screen | Pantalla de carga |
|
||||
| @capacitor-community/facebook-login | Login con Facebook |
|
||||
| @codetrix-studio/capacitor-google-auth | Login con Google |
|
||||
|
||||
## Comandos Utiles
|
||||
|
||||
```bash
|
||||
# Desarrollo
|
||||
npm start # Iniciar servidor de desarrollo
|
||||
npm run build # Build de produccion
|
||||
npm run lint # Verificar codigo
|
||||
|
||||
# Capacitor
|
||||
npx cap sync # Sincronizar con plataformas nativas
|
||||
npx cap sync android # Solo Android
|
||||
npx cap open android # Abrir en Android Studio
|
||||
npx cap run android # Ejecutar en dispositivo/emulador
|
||||
|
||||
# Testing
|
||||
npm test # Ejecutar tests
|
||||
```
|
||||
|
||||
## Solucion de Problemas
|
||||
|
||||
### Error: "Cannot access 'x' before initialization"
|
||||
|
||||
Este error ocurre con Ionic 8 y build optimization. Ya esta configurado en `angular.json`:
|
||||
|
||||
```json
|
||||
"buildOptimizer": false
|
||||
```
|
||||
|
||||
### Error de permisos en Android
|
||||
|
||||
Verificar que `AndroidManifest.xml` tenga los permisos necesarios:
|
||||
- `INTERNET`
|
||||
- `ACCESS_FINE_LOCATION`
|
||||
- `ACCESS_COARSE_LOCATION`
|
||||
- `CAMERA`
|
||||
- `READ_EXTERNAL_STORAGE`
|
||||
|
||||
### Error de dependencias
|
||||
|
||||
```bash
|
||||
# Limpiar cache y reinstalar
|
||||
rm -rf node_modules package-lock.json
|
||||
npm cache clean --force
|
||||
npm install --legacy-peer-deps
|
||||
```
|
||||
|
||||
## Configuracion de APIs Externas
|
||||
|
||||
### Google Maps
|
||||
1. Ir a Google Cloud Console
|
||||
2. Habilitar Maps JavaScript API
|
||||
3. Crear API Key
|
||||
4. Agregar restricciones por dominio
|
||||
|
||||
### Facebook Login
|
||||
1. Ir a Facebook Developers
|
||||
2. Crear aplicacion
|
||||
3. Configurar OAuth redirect URIs
|
||||
4. Obtener App ID
|
||||
|
||||
### Google Sign-In
|
||||
1. Ir a Google Cloud Console
|
||||
2. Crear credenciales OAuth 2.0
|
||||
3. Configurar pantalla de consentimiento
|
||||
4. Obtener Client ID
|
||||
|
||||
## Licencia
|
||||
|
||||
Proyecto privado - Todos los derechos reservados
|
||||
|
||||
0
android/.gitignore
vendored
Normal file → Executable file
0
android/.idea/.gitignore
generated
vendored
Normal file → Executable file
0
android/.idea/compiler.xml
generated
Normal file → Executable file
0
android/.idea/jarRepositories.xml
generated
Normal file → Executable file
0
android/.idea/misc.xml
generated
Normal file → Executable file
0
android/app/.gitignore
vendored
Normal file → Executable file
9
android/app/build.gradle
Normal file → Executable file
@@ -16,8 +16,17 @@ android {
|
||||
ignoreAssetsPattern '!.svn:!.git:!.ds_store:!*.scc:.*:!CVS:!thumbs.db:!picasa.ini:!*~'
|
||||
}
|
||||
}
|
||||
signingConfigs {
|
||||
release {
|
||||
storeFile file('../../jobhero-release.keystore')
|
||||
storePassword 'JobHero2024!'
|
||||
keyAlias 'jobhero'
|
||||
keyPassword 'JobHero2024!'
|
||||
}
|
||||
}
|
||||
buildTypes {
|
||||
release {
|
||||
signingConfig signingConfigs.release
|
||||
minifyEnabled false
|
||||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
||||
}
|
||||
|
||||
20
android/app/capacitor.build.gradle
Normal file → Executable file
@@ -9,20 +9,22 @@ android {
|
||||
|
||||
apply from: "../capacitor-cordova-android-plugins/cordova.variables.gradle"
|
||||
dependencies {
|
||||
implementation project(':capacitor-community-facebook-login')
|
||||
implementation project(':capacitor-community-http')
|
||||
implementation project(':capacitor-app')
|
||||
implementation project(':capacitor-browser')
|
||||
implementation project(':capacitor-camera')
|
||||
implementation project(':capacitor-filesystem')
|
||||
implementation project(':capacitor-geolocation')
|
||||
implementation project(':capacitor-haptics')
|
||||
implementation project(':capacitor-keyboard')
|
||||
implementation project(':capacitor-preferences')
|
||||
implementation project(':capacitor-splash-screen')
|
||||
implementation project(':capacitor-status-bar')
|
||||
implementation "com.squareup.okhttp3:okhttp-urlconnection:3.10.0"
|
||||
implementation "com.android.support:support-v4:27.+"
|
||||
implementation "com.facebook.android:facebook-android-sdk:5.13.0"
|
||||
implementation "com.google.android.gms:play-services-auth:15.0.1"
|
||||
implementation "com.google.android.gms:play-services-identity:15.0.1"
|
||||
implementation "com.google.android.gms:play-services-location:16.+"
|
||||
implementation "com.onesignal:OneSignal:3.16.0"
|
||||
implementation project(':codetrix-studio-capacitor-google-auth')
|
||||
implementation "com.onesignal:OneSignal:5.1.38"
|
||||
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.7.10"
|
||||
}
|
||||
apply from: "../../node_modules/cordova-plugin-googlemaps/src/android/frameworks/tbxml-android.gradle"
|
||||
apply from: "../../node_modules/cordova-plugin-googlemaps/src/android/frameworks/pgm-custom.gradle"
|
||||
apply from: "../../node_modules/onesignal-cordova-plugin/build-extras-onesignal.gradle"
|
||||
|
||||
if (hasProperty('postBuildExtras')) {
|
||||
|
||||
0
android/app/proguard-rules.pro
vendored
Normal file → Executable file
0
android/app/src/androidTest/java/com/getcapacitor/myapp/ExampleInstrumentedTest.java
Normal file → Executable file
2
android/app/src/main/AndroidManifest.xml
Normal file → Executable file
@@ -7,6 +7,8 @@
|
||||
android:label="@string/app_name"
|
||||
android:roundIcon="@mipmap/ic_launcher_round"
|
||||
android:supportsRtl="true"
|
||||
android:usesCleartextTraffic="true"
|
||||
android:networkSecurityConfig="@xml/network_security_config"
|
||||
android:theme="@style/AppTheme">
|
||||
|
||||
<activity
|
||||
|
||||
0
android/app/src/main/java/io/ionic/starter/MainActivity.java
Normal file → Executable file
0
android/app/src/main/res/drawable-land-hdpi/splash.png
Normal file → Executable file
|
Before Width: | Height: | Size: 7.5 KiB After Width: | Height: | Size: 7.5 KiB |
0
android/app/src/main/res/drawable-land-mdpi/splash.png
Normal file → Executable file
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.9 KiB |
0
android/app/src/main/res/drawable-land-xhdpi/splash.png
Normal file → Executable file
|
Before Width: | Height: | Size: 9.0 KiB After Width: | Height: | Size: 9.0 KiB |
0
android/app/src/main/res/drawable-land-xxhdpi/splash.png
Normal file → Executable file
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
0
android/app/src/main/res/drawable-land-xxxhdpi/splash.png
Normal file → Executable file
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
0
android/app/src/main/res/drawable-port-hdpi/splash.png
Normal file → Executable file
|
Before Width: | Height: | Size: 7.7 KiB After Width: | Height: | Size: 7.7 KiB |
0
android/app/src/main/res/drawable-port-mdpi/splash.png
Normal file → Executable file
|
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 4.0 KiB |
0
android/app/src/main/res/drawable-port-xhdpi/splash.png
Normal file → Executable file
|
Before Width: | Height: | Size: 9.6 KiB After Width: | Height: | Size: 9.6 KiB |
0
android/app/src/main/res/drawable-port-xxhdpi/splash.png
Normal file → Executable file
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
0
android/app/src/main/res/drawable-port-xxxhdpi/splash.png
Normal file → Executable file
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
0
android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
Normal file → Executable file
0
android/app/src/main/res/drawable/ic_launcher_background.xml
Normal file → Executable file
0
android/app/src/main/res/drawable/splash.png
Normal file → Executable file
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.9 KiB |
0
android/app/src/main/res/layout/activity_main.xml
Normal file → Executable file
0
android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
Normal file → Executable file
0
android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
Normal file → Executable file
0
android/app/src/main/res/mipmap-hdpi/ic_launcher.png
Normal file → Executable file
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB |
0
android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
Normal file → Executable file
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 3.4 KiB |
0
android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
Normal file → Executable file
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB |
0
android/app/src/main/res/mipmap-mdpi/ic_launcher.png
Normal file → Executable file
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
0
android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
Normal file → Executable file
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
0
android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
Normal file → Executable file
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB |
0
android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
Normal file → Executable file
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.9 KiB |
0
android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
Normal file → Executable file
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 4.9 KiB |
0
android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
Normal file → Executable file
|
Before Width: | Height: | Size: 6.4 KiB After Width: | Height: | Size: 6.4 KiB |
0
android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
Normal file → Executable file
|
Before Width: | Height: | Size: 6.5 KiB After Width: | Height: | Size: 6.5 KiB |
0
android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
Normal file → Executable file
|
Before Width: | Height: | Size: 9.6 KiB After Width: | Height: | Size: 9.6 KiB |
0
android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
Normal file → Executable file
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
0
android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
Normal file → Executable file
|
Before Width: | Height: | Size: 9.2 KiB After Width: | Height: | Size: 9.2 KiB |
0
android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
Normal file → Executable file
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
0
android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
Normal file → Executable file
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
0
android/app/src/main/res/values/ic_launcher_background.xml
Normal file → Executable file
0
android/app/src/main/res/values/strings.xml
Normal file → Executable file
0
android/app/src/main/res/values/styles.xml
Normal file → Executable file
0
android/app/src/main/res/xml/file_paths.xml
Normal file → Executable file
11
android/app/src/main/res/xml/network_security_config.xml
Normal file
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<network-security-config>
|
||||
<base-config cleartextTrafficPermitted="true">
|
||||
<trust-anchors>
|
||||
<certificates src="system" />
|
||||
</trust-anchors>
|
||||
</base-config>
|
||||
<domain-config cleartextTrafficPermitted="true">
|
||||
<domain includeSubdomains="true">192.168.10.207</domain>
|
||||
</domain-config>
|
||||
</network-security-config>
|
||||
0
android/app/src/test/java/com/getcapacitor/myapp/ExampleUnitTest.java
Normal file → Executable file
0
android/build.gradle
Normal file → Executable file
27
android/capacitor.settings.gradle
Normal file → Executable file
@@ -2,14 +2,41 @@
|
||||
include ':capacitor-android'
|
||||
project(':capacitor-android').projectDir = new File('../node_modules/@capacitor/android/capacitor')
|
||||
|
||||
include ':capacitor-community-facebook-login'
|
||||
project(':capacitor-community-facebook-login').projectDir = new File('../node_modules/@capacitor-community/facebook-login/android')
|
||||
|
||||
include ':capacitor-community-http'
|
||||
project(':capacitor-community-http').projectDir = new File('../node_modules/@capacitor-community/http/android')
|
||||
|
||||
include ':capacitor-app'
|
||||
project(':capacitor-app').projectDir = new File('../node_modules/@capacitor/app/android')
|
||||
|
||||
include ':capacitor-browser'
|
||||
project(':capacitor-browser').projectDir = new File('../node_modules/@capacitor/browser/android')
|
||||
|
||||
include ':capacitor-camera'
|
||||
project(':capacitor-camera').projectDir = new File('../node_modules/@capacitor/camera/android')
|
||||
|
||||
include ':capacitor-filesystem'
|
||||
project(':capacitor-filesystem').projectDir = new File('../node_modules/@capacitor/filesystem/android')
|
||||
|
||||
include ':capacitor-geolocation'
|
||||
project(':capacitor-geolocation').projectDir = new File('../node_modules/@capacitor/geolocation/android')
|
||||
|
||||
include ':capacitor-haptics'
|
||||
project(':capacitor-haptics').projectDir = new File('../node_modules/@capacitor/haptics/android')
|
||||
|
||||
include ':capacitor-keyboard'
|
||||
project(':capacitor-keyboard').projectDir = new File('../node_modules/@capacitor/keyboard/android')
|
||||
|
||||
include ':capacitor-preferences'
|
||||
project(':capacitor-preferences').projectDir = new File('../node_modules/@capacitor/preferences/android')
|
||||
|
||||
include ':capacitor-splash-screen'
|
||||
project(':capacitor-splash-screen').projectDir = new File('../node_modules/@capacitor/splash-screen/android')
|
||||
|
||||
include ':capacitor-status-bar'
|
||||
project(':capacitor-status-bar').projectDir = new File('../node_modules/@capacitor/status-bar/android')
|
||||
|
||||
include ':codetrix-studio-capacitor-google-auth'
|
||||
project(':codetrix-studio-capacitor-google-auth').projectDir = new File('../node_modules/@codetrix-studio/capacitor-google-auth/android')
|
||||
|
||||
0
android/gradle.properties
Normal file → Executable file
0
android/gradle/wrapper/gradle-wrapper.jar
vendored
Normal file → Executable file
0
android/gradle/wrapper/gradle-wrapper.properties
vendored
Normal file → Executable file
0
android/gradlew
vendored
Normal file → Executable file
0
android/gradlew.bat
vendored
Normal file → Executable file
0
android/settings.gradle
Normal file → Executable file
4
android/variables.gradle
Normal file → Executable file
@@ -1,7 +1,7 @@
|
||||
ext {
|
||||
minSdkVersion = 22
|
||||
compileSdkVersion = 33
|
||||
targetSdkVersion = 33
|
||||
compileSdkVersion = 34
|
||||
targetSdkVersion = 34
|
||||
androidxActivityVersion = '1.7.0'
|
||||
androidxAppCompatVersion = '1.6.1'
|
||||
androidxCoordinatorLayoutVersion = '1.2.0'
|
||||
|
||||
31
angular.json
Normal file → Executable file
@@ -1,7 +1,6 @@
|
||||
{
|
||||
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
|
||||
"version": 1,
|
||||
"defaultProject": "app",
|
||||
"newProjectRoot": "projects",
|
||||
"projects": {
|
||||
"app": {
|
||||
@@ -49,15 +48,21 @@
|
||||
"with": "src/environments/environment.prod.ts"
|
||||
}
|
||||
],
|
||||
"optimization": true,
|
||||
"optimization": {
|
||||
"scripts": true,
|
||||
"styles": {
|
||||
"minify": true,
|
||||
"inlineCritical": false
|
||||
},
|
||||
"fonts": true
|
||||
},
|
||||
"outputHashing": "all",
|
||||
"sourceMap": false,
|
||||
"extractCss": true,
|
||||
"namedChunks": false,
|
||||
"aot": true,
|
||||
"extractLicenses": true,
|
||||
"vendorChunk": false,
|
||||
"buildOptimizer": true,
|
||||
"buildOptimizer": false,
|
||||
"budgets": [
|
||||
{
|
||||
"type": "initial",
|
||||
@@ -74,11 +79,11 @@
|
||||
"serve": {
|
||||
"builder": "@angular-devkit/build-angular:dev-server",
|
||||
"options": {
|
||||
"browserTarget": "app:build"
|
||||
"buildTarget": "app:build"
|
||||
},
|
||||
"configurations": {
|
||||
"production": {
|
||||
"browserTarget": "app:build:production"
|
||||
"buildTarget": "app:build:production"
|
||||
},
|
||||
"ci": {
|
||||
"progress": false
|
||||
@@ -88,7 +93,7 @@
|
||||
"extract-i18n": {
|
||||
"builder": "@angular-devkit/build-angular:extract-i18n",
|
||||
"options": {
|
||||
"browserTarget": "app:build"
|
||||
"buildTarget": "app:build"
|
||||
}
|
||||
},
|
||||
"test": {
|
||||
@@ -121,14 +126,12 @@
|
||||
}
|
||||
},
|
||||
"lint": {
|
||||
"builder": "@angular-devkit/build-angular:tslint",
|
||||
"builder": "@angular-eslint/builder:lint",
|
||||
"options": {
|
||||
"tsConfig": [
|
||||
"tsconfig.app.json",
|
||||
"tsconfig.spec.json",
|
||||
"e2e/tsconfig.json"
|
||||
],
|
||||
"exclude": ["**/node_modules/**"]
|
||||
"lintFilePatterns": [
|
||||
"src/**/*.ts",
|
||||
"src/**/*.html"
|
||||
]
|
||||
}
|
||||
},
|
||||
"e2e": {
|
||||
|
||||
0
browserslist
Normal file → Executable file
9
capacitor.config.ts
Normal file → Executable file
@@ -7,6 +7,11 @@ const config: CapacitorConfig = {
|
||||
server: {
|
||||
androidScheme: 'https'
|
||||
},
|
||||
plugins: {
|
||||
CapacitorHttp: {
|
||||
enabled: true
|
||||
}
|
||||
},
|
||||
cordova: {
|
||||
preferences: {
|
||||
ScrollEnabled: 'false',
|
||||
@@ -18,8 +23,8 @@ const config: CapacitorConfig = {
|
||||
SplashShowOnlyFirstTime: 'false',
|
||||
SplashScreen: 'screen',
|
||||
SplashScreenDelay: '3000',
|
||||
GOOGLE_MAPS_ANDROID_API_KEY: 'AIzaSyBmkTsg0-1VKllM_vHD6V1EhPnF0YUP-88',
|
||||
GOOGLE_MAPS_IOS_API_KEY: 'AIzaSyBmkTsg0-1VKllM_vHD6V1EhPnF0YUP-88'
|
||||
GOOGLE_MAPS_ANDROID_API_KEY: 'AIzaSyC_1FWK6tQ7VTPRJLxf2Mn2DEo3E28UF3k',
|
||||
GOOGLE_MAPS_IOS_API_KEY: 'AIzaSyC_1FWK6tQ7VTPRJLxf2Mn2DEo3E28UF3k'
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
0
config.xml
Normal file → Executable file
0
e2e/protractor.conf.js
Normal file → Executable file
0
e2e/src/app.e2e-spec.ts
Normal file → Executable file
0
e2e/src/app.po.ts
Normal file → Executable file
0
e2e/tsconfig.json
Normal file → Executable file
BIN
iChamba.apk
0
ionic.config.json
Normal file → Executable file
0
karma.conf.js
Normal file → Executable file
0
my-release-key.keystore
Normal file → Executable file
41398
package-lock.json
generated
191
package.json
Normal file → Executable file
@@ -8,147 +8,66 @@
|
||||
"start": "ng serve",
|
||||
"build": "ng build",
|
||||
"test": "ng test",
|
||||
"lint": "ng lint",
|
||||
"e2e": "ng e2e"
|
||||
"lint": "ng lint"
|
||||
},
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
"@angular/animations": "^6.1.10",
|
||||
"@angular/common": "~8.1.2",
|
||||
"@angular/compiler": "~8.1.2",
|
||||
"@angular/core": "^8.1.3",
|
||||
"@angular/forms": "~8.1.2",
|
||||
"@angular/platform-browser": "~8.1.2",
|
||||
"@angular/platform-browser-dynamic": "~8.1.2",
|
||||
"@angular/router": "~8.1.2",
|
||||
"@capacitor/android": "5.2.1",
|
||||
"@capacitor/app": "5.0.6",
|
||||
"@capacitor/core": "5.2.1",
|
||||
"@capacitor/haptics": "5.0.6",
|
||||
"@capacitor/keyboard": "5.0.6",
|
||||
"@capacitor/status-bar": "5.0.6",
|
||||
"@ionic-native/android-permissions": "^5.25.0",
|
||||
"@ionic-native/camera": "^5.28.0",
|
||||
"@ionic-native/core": "^5.0.0",
|
||||
"@ionic-native/facebook": "^5.15.0",
|
||||
"@ionic-native/file": "^5.28.0",
|
||||
"@ionic-native/file-path": "^5.28.0",
|
||||
"@ionic-native/geolocation": "^5.25.0",
|
||||
"@ionic-native/google-maps": "^5.5.0",
|
||||
"@ionic-native/google-plus": "^5.15.0",
|
||||
"@ionic-native/http": "^5.18.0",
|
||||
"@ionic-native/in-app-browser": "^5.31.1",
|
||||
"@ionic-native/ionic-webview": "^5.28.0",
|
||||
"@ionic-native/location-accuracy": "^5.18.0",
|
||||
"@ionic-native/native-storage": "^5.15.0",
|
||||
"@ionic-native/onesignal": "^5.15.0",
|
||||
"@ionic-native/splash-screen": "^5.0.0",
|
||||
"@ionic-native/status-bar": "^5.0.0",
|
||||
"@ionic/angular": "^4.7.1",
|
||||
"@ngx-translate/core": "^12.1.2",
|
||||
"@ngx-translate/http-loader": "^7.0.0",
|
||||
"br-mask": "0.0.8",
|
||||
"cordova-android": "^8.1.0",
|
||||
"cordova-ios": "^5.0.1",
|
||||
"cordova-plugin-advanced-http": "^2.3.1",
|
||||
"cordova-plugin-android-permissions": "^1.0.2",
|
||||
"cordova-plugin-camera": "^4.1.0",
|
||||
"cordova-plugin-facebook4": "^6.2.0",
|
||||
"cordova-plugin-file": "^6.0.2",
|
||||
"cordova-plugin-geolocation": "^4.0.2",
|
||||
"cordova-plugin-googlemaps": "^2.6.2",
|
||||
"cordova-plugin-googleplus": "^8.1.2",
|
||||
"cordova-plugin-inappbrowser": "^4.1.0",
|
||||
"cordova-plugin-nativestorage": "^2.3.2",
|
||||
"cordova-plugin-request-location-accuracy": "^2.3.0",
|
||||
"core-js": "^2.5.4",
|
||||
"ionic4-rating": "^1.0.9",
|
||||
"ngx-chips": "^3.0.0",
|
||||
"onesignal-cordova-plugin": "^2.6.0",
|
||||
"remove": "^0.1.5",
|
||||
"rxjs": "~6.5.1",
|
||||
"rxjs-compat": "^6.6.7",
|
||||
"tslib": "^1.9.0",
|
||||
"zone.js": "~0.9.1"
|
||||
"@angular/animations": "~18.2.14",
|
||||
"@angular/common": "~18.2.14",
|
||||
"@angular/compiler": "~18.2.14",
|
||||
"@angular/core": "~18.2.14",
|
||||
"@angular/forms": "~18.2.14",
|
||||
"@angular/platform-browser": "~18.2.14",
|
||||
"@angular/platform-browser-dynamic": "~18.2.14",
|
||||
"@angular/router": "~18.2.14",
|
||||
"@capacitor-community/facebook-login": "^7.0.1",
|
||||
"@capacitor-community/http": "^1.4.1",
|
||||
"@capacitor/android": "^6.0.0",
|
||||
"@capacitor/app": "^6.0.0",
|
||||
"@capacitor/browser": "^6.0.0",
|
||||
"@capacitor/camera": "^6.0.0",
|
||||
"@capacitor/core": "^6.0.0",
|
||||
"@capacitor/filesystem": "^6.0.0",
|
||||
"@capacitor/geolocation": "^6.0.0",
|
||||
"@capacitor/haptics": "^6.0.0",
|
||||
"@capacitor/keyboard": "^6.0.0",
|
||||
"@capacitor/preferences": "^6.0.0",
|
||||
"@capacitor/splash-screen": "^6.0.0",
|
||||
"@capacitor/status-bar": "^6.0.0",
|
||||
"@codetrix-studio/capacitor-google-auth": "^3.4.0-rc.4",
|
||||
"@ionic/angular": "^8.7.17",
|
||||
"@ngx-translate/core": "~14.0.0",
|
||||
"@ngx-translate/http-loader": "~7.0.0",
|
||||
"onesignal-cordova-plugin": "^5.2.19",
|
||||
"rxjs": "~7.8.1",
|
||||
"swiper": "^11.2.10",
|
||||
"tslib": "^2.6.0",
|
||||
"zone.js": "~0.14.10"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@angular-devkit/architect": "~0.801.2",
|
||||
"@angular-devkit/build-angular": "^0.803.21",
|
||||
"@angular-devkit/core": "~8.1.2",
|
||||
"@angular-devkit/schematics": "~8.1.2",
|
||||
"@angular/cli": "~8.1.2",
|
||||
"@angular/compiler": "~8.1.2",
|
||||
"@angular/compiler-cli": "~8.1.2",
|
||||
"@angular/language-service": "~8.1.2",
|
||||
"@angular-devkit/build-angular": "~18.2.21",
|
||||
"@angular-eslint/builder": "^21.1.0",
|
||||
"@angular-eslint/eslint-plugin": "^21.1.0",
|
||||
"@angular-eslint/eslint-plugin-template": "^21.1.0",
|
||||
"@angular-eslint/schematics": "^21.1.0",
|
||||
"@angular-eslint/template-parser": "^21.1.0",
|
||||
"@angular/cli": "~18.2.21",
|
||||
"@angular/compiler-cli": "~18.2.14",
|
||||
"@angular/language-service": "~18.2.14",
|
||||
"@capacitor/cli": "5.2.1",
|
||||
"@ionic/angular-toolkit": "~2.0.0",
|
||||
"@types/jasmine": "~3.3.8",
|
||||
"@types/jasminewd2": "~2.0.3",
|
||||
"@types/node": "~8.9.4",
|
||||
"codelyzer": "^5.0.0",
|
||||
"cordova-plugin-device": "^2.0.2",
|
||||
"cordova-plugin-ionic-keyboard": "^2.2.0",
|
||||
"cordova-plugin-ionic-webview": "^4.1.2",
|
||||
"cordova-plugin-splashscreen": "^5.0.2",
|
||||
"cordova-plugin-statusbar": "^2.4.2",
|
||||
"cordova-plugin-whitelist": "^1.3.3",
|
||||
"jasmine-core": "~3.4.0",
|
||||
"jasmine-spec-reporter": "~4.2.1",
|
||||
"karma": "~4.1.0",
|
||||
"karma-chrome-launcher": "~2.2.0",
|
||||
"karma-coverage-istanbul-reporter": "~2.0.1",
|
||||
"karma-jasmine": "~2.0.1",
|
||||
"karma-jasmine-html-reporter": "^1.4.0",
|
||||
"protractor": "~5.4.0",
|
||||
"ts-node": "~7.0.0",
|
||||
"tslint": "~5.15.0",
|
||||
"typescript": "~3.4.3"
|
||||
"@ionic/angular-toolkit": "^12.3.0",
|
||||
"@types/jasmine": "~4.3.0",
|
||||
"@types/node": "~18.18.0",
|
||||
"@typescript-eslint/eslint-plugin": "^8.53.0",
|
||||
"@typescript-eslint/parser": "^8.53.0",
|
||||
"eslint": "^8.57.1",
|
||||
"jasmine-core": "~4.6.0",
|
||||
"karma": "~6.4.0",
|
||||
"karma-chrome-launcher": "~3.2.0",
|
||||
"karma-coverage": "~2.2.0",
|
||||
"karma-jasmine": "~5.1.0",
|
||||
"karma-jasmine-html-reporter": "~2.0.0",
|
||||
"typescript": "~5.4.5"
|
||||
},
|
||||
"description": "An Ionic project",
|
||||
"cordova": {
|
||||
"plugins": {
|
||||
"cordova-plugin-whitelist": {},
|
||||
"cordova-plugin-statusbar": {},
|
||||
"cordova-plugin-device": {},
|
||||
"cordova-plugin-splashscreen": {},
|
||||
"cordova-plugin-ionic-webview": {},
|
||||
"cordova-plugin-ionic-keyboard": {},
|
||||
"cordova-plugin-facebook4": {
|
||||
"APP_ID": "342718733071161",
|
||||
"APP_NAME": "ichamba",
|
||||
"FACEBOOK_HYBRID_APP_EVENTS": "false",
|
||||
"FACEBOOK_ANDROID_SDK_VERSION": "5.5.2"
|
||||
},
|
||||
"cordova-plugin-googleplus": {
|
||||
"REVERSED_CLIENT_ID": "679874302148-dc2f35s9f50ci17houd36bcosvocso2v.apps.googleusercontent.com",
|
||||
"PLAY_SERVICES_VERSION": "15.0.1"
|
||||
},
|
||||
"onesignal-cordova-plugin": {},
|
||||
"cordova-plugin-googlemaps": {
|
||||
"API_KEY_FOR_ANDROID": "AIzaSyBmkTsg0-1VKllM_vHD6V1EhPnF0YUP-88",
|
||||
"API_KEY_FOR_IOS": "AIzaSyBmkTsg0-1VKllM_vHD6V1EhPnF0YUP-88",
|
||||
"PLAY_SERVICES_VERSION": "15.0.1",
|
||||
"ANDROID_SUPPORT_V4_VERSION": "27.+",
|
||||
"LOCATION_WHEN_IN_USE_DESCRIPTION": "This app wants to get your location while this app runs only.",
|
||||
"LOCATION_ALWAYS_USAGE_DESCRIPTION": "This app wants to get your location always, even this app runs in background."
|
||||
},
|
||||
"cordova-plugin-nativestorage": {},
|
||||
"cordova-plugin-advanced-http": {
|
||||
"OKHTTP_VERSION": "3.10.0"
|
||||
},
|
||||
"cordova-plugin-request-location-accuracy": {},
|
||||
"cordova-plugin-geolocation": {},
|
||||
"cordova-plugin-android-permissions": {},
|
||||
"cordova-plugin-camera": {
|
||||
"ANDROID_SUPPORT_V4_VERSION": "27.+"
|
||||
},
|
||||
"cordova-plugin-file": {},
|
||||
"cordova-plugin-filepath": {},
|
||||
"cordova-plugin-inappbrowser": {}
|
||||
},
|
||||
"platforms": [
|
||||
"android",
|
||||
"ios"
|
||||
]
|
||||
}
|
||||
"description": "An Ionic project"
|
||||
}
|
||||
|
||||
0
resources/README.md
Normal file → Executable file
0
resources/android/drawable-v24/ic_launcher_foreground.xml
Normal file → Executable file
0
resources/android/drawable/ic_launcher_background.xml
Normal file → Executable file
0
resources/android/drawable/ic_launcher_foreground.xml
Normal file → Executable file
0
resources/android/icon/drawable-hdpi-icon.png
Normal file → Executable file
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB |
0
resources/android/icon/drawable-ldpi-icon.png
Normal file → Executable file
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
0
resources/android/icon/drawable-mdpi-icon.png
Normal file → Executable file
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
0
resources/android/icon/drawable-xhdpi-icon.png
Normal file → Executable file
|
Before Width: | Height: | Size: 6.4 KiB After Width: | Height: | Size: 6.4 KiB |
0
resources/android/icon/drawable-xxhdpi-icon.png
Normal file → Executable file
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
0
resources/android/icon/drawable-xxxhdpi-icon.png
Normal file → Executable file
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
0
resources/android/mipmap-anydpi-v26/ic_launcher.xml
Normal file → Executable file
0
resources/android/mipmap-anydpi-v26/ic_launcher_round.xml
Normal file → Executable file
0
resources/android/mipmap-hdpi/ic_launcher.png
Normal file → Executable file
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |