Compare commits

...

20 Commits

Author SHA1 Message Date
CarlosTorres
9f2a0d62e0 Fix formulario de postulación y configuración de producción
- Actualizar API_URL a jobhero-api.consultoria-as.com
- Arreglar autocomplete de dirección para sincronizar con GPS
- Corregir número interior para que sea editable y no se autollene incorrectamente
- Cambiar ionChange a ionInput para lista de sugerencias
- Agregar configuración de firma para APK release

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 08:59:38 +00:00
CarlosTorres
22e4585bb9 feat: Implementar ion-chips, bypass de pago y mejoras UI
- Implementar ion-chips para categorías y keywords en hero page
- Agregar bypass de pago en hire page para pruebas
- Mover progress bar en dashboard
- Corregir shared-components module (remover AccordionComponent eliminado)
- Corregir eventos Ionic (ionInput/ionChange)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 23:48:16 +00:00
4afaf69d10 Merge pull request 'WIP - Agregar barra de progreso para los contratos pendientes y encabezados' (#2) from dev_alex into main 2026-01-27 15:26:33 -08:00
Alextorres325
a8fcf027d0 Agregar barra de progreso para los contratos pendientes y encabezados 2026-01-27 16:43:19 -06:00
68673baf99 Merge pull request 'WIP - Actualizacion de acordeon en FAQ' (#1) from dev_alex into main 2026-01-27 14:36:16 -08:00
Alextorres325
676501e7f2 Actualizacion de acordeon en FAQ 2026-01-27 16:14:16 -06:00
CarlosTorres
e7ad9e1d26 Mejoras en solicitud de servicios y registro de proveedores
- Actualizar API key de Google Maps
- Corregir búsqueda de categorías en dashboard (ionInput + ev.detail.value)
- Limitar solicitud de servicios a máximo 2 días de anticipación
- Agregar validación de fecha y hora antes de crear postulación
- Corregir visualización de categorías en registro de héroe
- Agregar traducción select_date_time

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 04:08:01 +00:00
CarlosTorres
103f7f45a0 Integración OneSignal y configuración HTTP nativo
- Configurar OneSignal con nuevo App ID
- Agregar network_security_config.xml para permitir HTTP
- Habilitar CapacitorHttp nativo en capacitor.config.ts
- Actualizar SDK a Android 34
- Configurar API_URL fija (192.168.10.207:8080)
- Agregar onesignal.service.ts

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 05:09:51 +00:00
CarlosTorres
dfcb1168b9 Upgrade: Angular 18, Ionic 8, Capacitor 6
Modernizacion completa del frontend:

- Angular 8 -> 18.2.14
- Ionic 4 -> 8.7.17
- Capacitor 6.x (migracion desde Cordova/@ionic-native)
- TypeScript 5.4.5
- Swiper 11 con Web Components API

Cambios principales:
- Migrar NativeStorage a @capacitor/preferences
- Migrar InAppBrowser a @capacitor/browser
- Migrar Camera a @capacitor/camera
- Migrar Geolocation a @capacitor/geolocation
- Migrar StatusBar/SplashScreen a Capacitor
- Migrar Facebook/Google login a plugins Capacitor
- Actualizar lazy loading syntax (Angular 12+)
- Configurar buildOptimizer: false para Ionic 8
- Limpiar package.json de dependencias obsoletas
- Agregar README con guia de instalacion

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-17 22:03:31 +00:00
a9508bd34a Eliminar JobHero_1.0.16.apk 2026-01-13 19:10:19 -08:00
646b9dcee3 Eliminar JobHero_1.0.15.apk 2026-01-13 19:10:07 -08:00
1c91792ab0 Eliminar JobHero_1.0.14.apk 2026-01-13 19:10:02 -08:00
3caf1de467 Eliminar JobHero.apk 2026-01-13 19:09:57 -08:00
1ccef0f604 Eliminar JobHero_1.0.12.apk 2026-01-13 19:09:46 -08:00
7cfdac6f18 Eliminar JobHero_1.0.11.apk 2026-01-13 19:09:42 -08:00
32fbbbefdd Eliminar iChamba_1.0.04.apk 2026-01-13 19:09:37 -08:00
738dec7192 Eliminar iChamba_1.0.03.apk 2026-01-13 19:09:31 -08:00
858341252e Eliminar iChamba.apk 2026-01-13 19:09:25 -08:00
b70c943893 Eliminar iChamba_1.0.02.apk 2026-01-13 19:09:16 -08:00
a10d7ecada Eliminar iChamba_1.0.01.apk 2026-01-13 19:09:06 -08:00
410 changed files with 20370 additions and 23814 deletions

49
.eslintrc.json Normal file
View 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
View File

@@ -1,67 +1,72 @@
# ---> Android # Dependencies
# Gradle files /node_modules
.gradle/ package-lock.json
build/
# Local configuration file (sdk path, etc) # Build outputs
local.properties /dist
/www
/.angular
# Log/OS Files # IDE
*.log /.idea
/.vscode
# Android Studio generated files and folders *.sublime-project
captures/ *.sublime-workspace
.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
# System files
.DS_Store
Thumbs.db
*~ *~
*.sw[mnpcod] *.sw[mnpcod]
# Logs
*.log
npm-debug.log*
yarn-error.log
# Temporary files
.tmp .tmp
*.tmp *.tmp
*.tmp.* *.tmp.*
*.sublime-project
*.sublime-workspace
.DS_Store
Thumbs.db
UserInterfaceState.xcuserstate
$RECYCLE.BIN/
*.log # Ionic/Capacitor
log.txt
npm-debug.log*
/.idea
/.ionic /.ionic
/.sass-cache
/.sourcemaps /.sourcemaps
/.versions
/.vscode
/coverage
/dist
/node_modules
/platforms
/plugins /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

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

0
JobHero_1.0.16-release-unsigned.apk Normal file → Executable file
View File

Binary file not shown.

0
JobHero_1.0.17.aab Normal file → Executable file
View File

242
README.md Normal file → Executable file
View 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
View File

0
android/.idea/.gitignore generated vendored Normal file → Executable file
View File

0
android/.idea/compiler.xml generated Normal file → Executable file
View File

0
android/.idea/jarRepositories.xml generated Normal file → Executable file
View File

0
android/.idea/misc.xml generated Normal file → Executable file
View File

0
android/app/.gitignore vendored Normal file → Executable file
View File

9
android/app/build.gradle Normal file → Executable file
View File

@@ -16,8 +16,17 @@ android {
ignoreAssetsPattern '!.svn:!.git:!.ds_store:!*.scc:.*:!CVS:!thumbs.db:!picasa.ini:!*~' 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 { buildTypes {
release { release {
signingConfig signingConfigs.release
minifyEnabled false minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
} }

20
android/app/capacitor.build.gradle Normal file → Executable file
View File

@@ -9,20 +9,22 @@ android {
apply from: "../capacitor-cordova-android-plugins/cordova.variables.gradle" apply from: "../capacitor-cordova-android-plugins/cordova.variables.gradle"
dependencies { dependencies {
implementation project(':capacitor-community-facebook-login')
implementation project(':capacitor-community-http')
implementation project(':capacitor-app') 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-haptics')
implementation project(':capacitor-keyboard') implementation project(':capacitor-keyboard')
implementation project(':capacitor-preferences')
implementation project(':capacitor-splash-screen')
implementation project(':capacitor-status-bar') implementation project(':capacitor-status-bar')
implementation "com.squareup.okhttp3:okhttp-urlconnection:3.10.0" implementation project(':codetrix-studio-capacitor-google-auth')
implementation "com.android.support:support-v4:27.+" implementation "com.onesignal:OneSignal:5.1.38"
implementation "com.facebook.android:facebook-android-sdk:5.13.0" implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.7.10"
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"
} }
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" apply from: "../../node_modules/onesignal-cordova-plugin/build-extras-onesignal.gradle"
if (hasProperty('postBuildExtras')) { if (hasProperty('postBuildExtras')) {

0
android/app/proguard-rules.pro vendored Normal file → Executable file
View File

2
android/app/src/main/AndroidManifest.xml Normal file → Executable file
View File

@@ -7,6 +7,8 @@
android:label="@string/app_name" android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round" android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true" android:supportsRtl="true"
android:usesCleartextTraffic="true"
android:networkSecurityConfig="@xml/network_security_config"
android:theme="@style/AppTheme"> android:theme="@style/AppTheme">
<activity <activity

View File

0
android/app/src/main/res/drawable-land-hdpi/splash.png Normal file → Executable file
View 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
View File

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

Before

Width:  |  Height:  |  Size: 9.0 KiB

After

Width:  |  Height:  |  Size: 9.0 KiB

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View 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
View 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
View File

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

Before

Width:  |  Height:  |  Size: 9.6 KiB

After

Width:  |  Height:  |  Size: 9.6 KiB

View File

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

View File

0
android/app/src/main/res/drawable/splash.png Normal file → Executable file
View 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
View File

View File

View File

0
android/app/src/main/res/mipmap-hdpi/ic_launcher.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

View 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
View File

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

View 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
View File

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

View 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
View File

Before

Width:  |  Height:  |  Size: 6.5 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

View File

Before

Width:  |  Height:  |  Size: 9.6 KiB

After

Width:  |  Height:  |  Size: 9.6 KiB

View File

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

Before

Width:  |  Height:  |  Size: 9.2 KiB

After

Width:  |  Height:  |  Size: 9.2 KiB

View File

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View File

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

0
android/app/src/main/res/values/strings.xml Normal file → Executable file
View File

0
android/app/src/main/res/values/styles.xml Normal file → Executable file
View File

0
android/app/src/main/res/xml/file_paths.xml Normal file → Executable file
View File

View 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>

View File

0
android/build.gradle Normal file → Executable file
View File

27
android/capacitor.settings.gradle Normal file → Executable file
View File

@@ -2,14 +2,41 @@
include ':capacitor-android' include ':capacitor-android'
project(':capacitor-android').projectDir = new File('../node_modules/@capacitor/android/capacitor') 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' include ':capacitor-app'
project(':capacitor-app').projectDir = new File('../node_modules/@capacitor/app/android') 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' include ':capacitor-haptics'
project(':capacitor-haptics').projectDir = new File('../node_modules/@capacitor/haptics/android') project(':capacitor-haptics').projectDir = new File('../node_modules/@capacitor/haptics/android')
include ':capacitor-keyboard' include ':capacitor-keyboard'
project(':capacitor-keyboard').projectDir = new File('../node_modules/@capacitor/keyboard/android') 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' include ':capacitor-status-bar'
project(':capacitor-status-bar').projectDir = new File('../node_modules/@capacitor/status-bar/android') 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
View File

0
android/gradle/wrapper/gradle-wrapper.jar vendored Normal file → Executable file
View File

0
android/gradle/wrapper/gradle-wrapper.properties vendored Normal file → Executable file
View File

0
android/gradlew vendored Normal file → Executable file
View File

0
android/gradlew.bat vendored Normal file → Executable file
View File

0
android/settings.gradle Normal file → Executable file
View File

4
android/variables.gradle Normal file → Executable file
View File

@@ -1,7 +1,7 @@
ext { ext {
minSdkVersion = 22 minSdkVersion = 22
compileSdkVersion = 33 compileSdkVersion = 34
targetSdkVersion = 33 targetSdkVersion = 34
androidxActivityVersion = '1.7.0' androidxActivityVersion = '1.7.0'
androidxAppCompatVersion = '1.6.1' androidxAppCompatVersion = '1.6.1'
androidxCoordinatorLayoutVersion = '1.2.0' androidxCoordinatorLayoutVersion = '1.2.0'

31
angular.json Normal file → Executable file
View File

@@ -1,7 +1,6 @@
{ {
"$schema": "./node_modules/@angular/cli/lib/config/schema.json", "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1, "version": 1,
"defaultProject": "app",
"newProjectRoot": "projects", "newProjectRoot": "projects",
"projects": { "projects": {
"app": { "app": {
@@ -49,15 +48,21 @@
"with": "src/environments/environment.prod.ts" "with": "src/environments/environment.prod.ts"
} }
], ],
"optimization": true, "optimization": {
"scripts": true,
"styles": {
"minify": true,
"inlineCritical": false
},
"fonts": true
},
"outputHashing": "all", "outputHashing": "all",
"sourceMap": false, "sourceMap": false,
"extractCss": true,
"namedChunks": false, "namedChunks": false,
"aot": true, "aot": true,
"extractLicenses": true, "extractLicenses": true,
"vendorChunk": false, "vendorChunk": false,
"buildOptimizer": true, "buildOptimizer": false,
"budgets": [ "budgets": [
{ {
"type": "initial", "type": "initial",
@@ -74,11 +79,11 @@
"serve": { "serve": {
"builder": "@angular-devkit/build-angular:dev-server", "builder": "@angular-devkit/build-angular:dev-server",
"options": { "options": {
"browserTarget": "app:build" "buildTarget": "app:build"
}, },
"configurations": { "configurations": {
"production": { "production": {
"browserTarget": "app:build:production" "buildTarget": "app:build:production"
}, },
"ci": { "ci": {
"progress": false "progress": false
@@ -88,7 +93,7 @@
"extract-i18n": { "extract-i18n": {
"builder": "@angular-devkit/build-angular:extract-i18n", "builder": "@angular-devkit/build-angular:extract-i18n",
"options": { "options": {
"browserTarget": "app:build" "buildTarget": "app:build"
} }
}, },
"test": { "test": {
@@ -121,14 +126,12 @@
} }
}, },
"lint": { "lint": {
"builder": "@angular-devkit/build-angular:tslint", "builder": "@angular-eslint/builder:lint",
"options": { "options": {
"tsConfig": [ "lintFilePatterns": [
"tsconfig.app.json", "src/**/*.ts",
"tsconfig.spec.json", "src/**/*.html"
"e2e/tsconfig.json" ]
],
"exclude": ["**/node_modules/**"]
} }
}, },
"e2e": { "e2e": {

0
browserslist Normal file → Executable file
View File

9
capacitor.config.ts Normal file → Executable file
View File

@@ -7,6 +7,11 @@ const config: CapacitorConfig = {
server: { server: {
androidScheme: 'https' androidScheme: 'https'
}, },
plugins: {
CapacitorHttp: {
enabled: true
}
},
cordova: { cordova: {
preferences: { preferences: {
ScrollEnabled: 'false', ScrollEnabled: 'false',
@@ -18,8 +23,8 @@ const config: CapacitorConfig = {
SplashShowOnlyFirstTime: 'false', SplashShowOnlyFirstTime: 'false',
SplashScreen: 'screen', SplashScreen: 'screen',
SplashScreenDelay: '3000', SplashScreenDelay: '3000',
GOOGLE_MAPS_ANDROID_API_KEY: 'AIzaSyBmkTsg0-1VKllM_vHD6V1EhPnF0YUP-88', GOOGLE_MAPS_ANDROID_API_KEY: 'AIzaSyC_1FWK6tQ7VTPRJLxf2Mn2DEo3E28UF3k',
GOOGLE_MAPS_IOS_API_KEY: 'AIzaSyBmkTsg0-1VKllM_vHD6V1EhPnF0YUP-88' GOOGLE_MAPS_IOS_API_KEY: 'AIzaSyC_1FWK6tQ7VTPRJLxf2Mn2DEo3E28UF3k'
} }
} }
}; };

0
config.xml Normal file → Executable file
View File

0
e2e/protractor.conf.js Normal file → Executable file
View File

0
e2e/src/app.e2e-spec.ts Normal file → Executable file
View File

0
e2e/src/app.po.ts Normal file → Executable file
View File

0
e2e/tsconfig.json Normal file → Executable file
View File

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

0
ionic.config.json Normal file → Executable file
View File

0
karma.conf.js Normal file → Executable file
View File

0
my-release-key.keystore Normal file → Executable file
View File

41424
package-lock.json generated

File diff suppressed because it is too large Load Diff

191
package.json Normal file → Executable file
View File

@@ -8,147 +8,66 @@
"start": "ng serve", "start": "ng serve",
"build": "ng build", "build": "ng build",
"test": "ng test", "test": "ng test",
"lint": "ng lint", "lint": "ng lint"
"e2e": "ng e2e"
}, },
"private": true, "private": true,
"dependencies": { "dependencies": {
"@angular/animations": "^6.1.10", "@angular/animations": "~18.2.14",
"@angular/common": "~8.1.2", "@angular/common": "~18.2.14",
"@angular/compiler": "~8.1.2", "@angular/compiler": "~18.2.14",
"@angular/core": "^8.1.3", "@angular/core": "~18.2.14",
"@angular/forms": "~8.1.2", "@angular/forms": "~18.2.14",
"@angular/platform-browser": "~8.1.2", "@angular/platform-browser": "~18.2.14",
"@angular/platform-browser-dynamic": "~8.1.2", "@angular/platform-browser-dynamic": "~18.2.14",
"@angular/router": "~8.1.2", "@angular/router": "~18.2.14",
"@capacitor/android": "5.2.1", "@capacitor-community/facebook-login": "^7.0.1",
"@capacitor/app": "5.0.6", "@capacitor-community/http": "^1.4.1",
"@capacitor/core": "5.2.1", "@capacitor/android": "^6.0.0",
"@capacitor/haptics": "5.0.6", "@capacitor/app": "^6.0.0",
"@capacitor/keyboard": "5.0.6", "@capacitor/browser": "^6.0.0",
"@capacitor/status-bar": "5.0.6", "@capacitor/camera": "^6.0.0",
"@ionic-native/android-permissions": "^5.25.0", "@capacitor/core": "^6.0.0",
"@ionic-native/camera": "^5.28.0", "@capacitor/filesystem": "^6.0.0",
"@ionic-native/core": "^5.0.0", "@capacitor/geolocation": "^6.0.0",
"@ionic-native/facebook": "^5.15.0", "@capacitor/haptics": "^6.0.0",
"@ionic-native/file": "^5.28.0", "@capacitor/keyboard": "^6.0.0",
"@ionic-native/file-path": "^5.28.0", "@capacitor/preferences": "^6.0.0",
"@ionic-native/geolocation": "^5.25.0", "@capacitor/splash-screen": "^6.0.0",
"@ionic-native/google-maps": "^5.5.0", "@capacitor/status-bar": "^6.0.0",
"@ionic-native/google-plus": "^5.15.0", "@codetrix-studio/capacitor-google-auth": "^3.4.0-rc.4",
"@ionic-native/http": "^5.18.0", "@ionic/angular": "^8.7.17",
"@ionic-native/in-app-browser": "^5.31.1", "@ngx-translate/core": "~14.0.0",
"@ionic-native/ionic-webview": "^5.28.0", "@ngx-translate/http-loader": "~7.0.0",
"@ionic-native/location-accuracy": "^5.18.0", "onesignal-cordova-plugin": "^5.2.19",
"@ionic-native/native-storage": "^5.15.0", "rxjs": "~7.8.1",
"@ionic-native/onesignal": "^5.15.0", "swiper": "^11.2.10",
"@ionic-native/splash-screen": "^5.0.0", "tslib": "^2.6.0",
"@ionic-native/status-bar": "^5.0.0", "zone.js": "~0.14.10"
"@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"
}, },
"devDependencies": { "devDependencies": {
"@angular-devkit/architect": "~0.801.2", "@angular-devkit/build-angular": "~18.2.21",
"@angular-devkit/build-angular": "^0.803.21", "@angular-eslint/builder": "^21.1.0",
"@angular-devkit/core": "~8.1.2", "@angular-eslint/eslint-plugin": "^21.1.0",
"@angular-devkit/schematics": "~8.1.2", "@angular-eslint/eslint-plugin-template": "^21.1.0",
"@angular/cli": "~8.1.2", "@angular-eslint/schematics": "^21.1.0",
"@angular/compiler": "~8.1.2", "@angular-eslint/template-parser": "^21.1.0",
"@angular/compiler-cli": "~8.1.2", "@angular/cli": "~18.2.21",
"@angular/language-service": "~8.1.2", "@angular/compiler-cli": "~18.2.14",
"@angular/language-service": "~18.2.14",
"@capacitor/cli": "5.2.1", "@capacitor/cli": "5.2.1",
"@ionic/angular-toolkit": "~2.0.0", "@ionic/angular-toolkit": "^12.3.0",
"@types/jasmine": "~3.3.8", "@types/jasmine": "~4.3.0",
"@types/jasminewd2": "~2.0.3", "@types/node": "~18.18.0",
"@types/node": "~8.9.4", "@typescript-eslint/eslint-plugin": "^8.53.0",
"codelyzer": "^5.0.0", "@typescript-eslint/parser": "^8.53.0",
"cordova-plugin-device": "^2.0.2", "eslint": "^8.57.1",
"cordova-plugin-ionic-keyboard": "^2.2.0", "jasmine-core": "~4.6.0",
"cordova-plugin-ionic-webview": "^4.1.2", "karma": "~6.4.0",
"cordova-plugin-splashscreen": "^5.0.2", "karma-chrome-launcher": "~3.2.0",
"cordova-plugin-statusbar": "^2.4.2", "karma-coverage": "~2.2.0",
"cordova-plugin-whitelist": "^1.3.3", "karma-jasmine": "~5.1.0",
"jasmine-core": "~3.4.0", "karma-jasmine-html-reporter": "~2.0.0",
"jasmine-spec-reporter": "~4.2.1", "typescript": "~5.4.5"
"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"
}, },
"description": "An Ionic project", "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"
]
}
} }

0
resources/README.md Normal file → Executable file
View File

View File

0
resources/android/drawable/ic_launcher_background.xml Normal file → Executable file
View File

0
resources/android/drawable/ic_launcher_foreground.xml Normal file → Executable file
View File

0
resources/android/icon/drawable-hdpi-icon.png Normal file → Executable file
View 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
View 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
View 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
View 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
View 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
View 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
View File

View File

0
resources/android/mipmap-hdpi/ic_launcher.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Some files were not shown because too many files have changed in this diff Show More