Aplicación con frontend en React y backend en FastAPI.
- Ajuste de dependencias del frontend para evitar conflictos de instalación (
react18 +date-fns3). - Ajuste de dependencias del frontend para evitar conflictos de instalación (
react18 +date-fns3 +react-leaflet4 compatible). - Fallback de
REACT_APP_BACKEND_URLen frontend para que no falle cuando la variable no esté definida. - Limpieza de
index.htmlpara uso de app móvil (sin badge/scripts externos). - Se añadió
manifest.jsonpara dejar la web lista para empaquetar como APK (PWA/WebView).
Variables recomendadas:
AEMET_API_KEY: API key de AEMET (si no está definida, el backend usa Open-Meteo como fallback automático para/api/conditions).
cd backend
pip install -r requirements.txt
```bash
cd backend
pip install -r requirements.txt
# opcional: export MONGO_URL="mongodb://localhost:27017" (o MONGODB_URI) y DB_NAME="paraweather"
uvicorn server:app --host 0.0.0.0 --port 8001cd frontend
npm install
npm startcd frontend
npm run buildcd frontend
npm install @capacitor/core @capacitor/cli @capacitor/android
npx cap init Paraweather com.paraweather.app --web-dir=build
npm run build
npx cap add android
npx cap sync android
npx cap open androidGithub token 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 (expira en 31/1/2027) Con eso se abre Android Studio para generar el APK/AAB. Con eso se abre Android Studio para generar el APK/AAB.
Para generar un ZIP importable directamente en Android Studio:
cd frontend
npm run apk:zipSalida esperada:
frontend/dist/paraweather-android-studio.zip
Qué incluye el ZIP:
- Carpeta
android/lista para abrir en Android Studio capacitor.config.*package.jsonypackage-lock.json
Importación:
- Descomprime el ZIP.
- En Android Studio: File > Open.
- Selecciona la carpeta descomprimida y abre
android/. - Espera a que Gradle sincronice y compila APK/AAB desde Android Studio.
Nota: el script crea/sincroniza Capacitor automáticamente y reconstruye el frontend antes de empaquetar.
Sí: ahora el repo incluye un workflow de GitHub Actions que compila la APK y la sube a GitHub.
- Archivo:
.github/workflows/android-apk.yml - Evento manual: Actions > Build Android APK > Run workflow
- Evento por release: al crear un tag
v*(ejemplo:v1.0.0) también compila.
Dónde descargar la APK:
- Artifacts de Actions: descarga
paraweather-debug-apkdesde la ejecución. - Releases: si disparas con tag
v*, se adjuntaapp-debug.apkal release.
Comandos recomendados para publicar una APK en Releases:
git tag v1.0.0
git push origin v1.0.0- Ve a GitHub > Actions > Build Android APK.
- Pulsa Run workflow sobre
main. - Espera a que termine
build-apk. - Descarga el artifact
paraweather-debug-apk.
Ventajas:
- Reproducible para todo el equipo.
- No depende de tu SDK local.
Si creas un tag v*, el workflow adjunta automáticamente app-debug.apk al release.
git tag v1.0.0
git push origin v1.0.0Luego descarga la APK desde GitHub > Releases.
cd frontend
npm install
npm run build
npx cap add android # solo la primera vez
npx cap sync android
npx cap open androidEn Android Studio:
- Build > Build Bundle(s) / APK(s) > Build APK(s).
- Ruta típica de salida:
frontend/android/app/build/outputs/apk/debug/app-debug.apk.
cd frontend
npm run apk:zipGenera frontend/dist/paraweather-android-studio.zip para compartir/importar proyecto Android rápidamente.
Ese error suele ocurrir cuando Gradle se ejecuta con Java muy nuevo/incompatible.
Solución recomendada (Linux/macOS):
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export PATH="$JAVA_HOME/bin:$PATH"
cd frontend/android
./gradlew --no-daemon assembleDebugEn Windows PowerShell:
$env:JAVA_HOME="C:\Program Files\Java\jdk-17"
$env:Path="$env:JAVA_HOME\bin;$env:Path"
cd frontend\android
.\gradlew.bat assembleDebugUsa npm run apk:trigger:github para lanzar la compilación remota (ver sección siguiente con ejemplos completos).
Sí, técnicamente se puede, pero no es recomendable para un repo de código:
- Aumenta mucho el peso y el historial de Git.
- Cada build binaria ensucia los diffs.
- Es mejor publicar APK en Releases o en Artifacts.
Si igualmente quieres versionar binarios en Git, usa Git LFS y una carpeta dedicada (artifacts/), pero para este proyecto se recomienda Releases.
Si quieres ejecutarlo ya en GitHub (sin entrar al panel web), usa este script:
cd frontend
export GITHUB_TOKEN="<token_con_repo_y_actions>"
export GITHUB_REPO="tu-usuario/tu-repo"
export GITHUB_REF="main" # opcional
npm run apk:trigger:githubEn Windows PowerShell usa esto (cada línea por separado):
cd frontend
$env:GITHUB_TOKEN="<token_con_repo_y_actions>"
$env:GITHUB_REPO="tu-usuario/tu-repo"
$env:GITHUB_REF="main" # opcional
npm run apk:trigger:githubTambién puedes lanzarlo en una sola línea en PowerShell:
cd frontend; $env:GITHUB_TOKEN="<token>"; $env:GITHUB_REPO="tu-usuario/tu-repo"; $env:GITHUB_REF="main"; npm run apk:trigger:githubSi te aparece:
cd : ... \Desktop\frontend no existenpm error Missing script: "apk:trigger:github"
significa que no estás dentro del repositorio correcto (o tienes una copia vieja).
Pasos correctos desde cero:
cd $HOME\Desktop
git clone https://github.com/Capybla/Paraweather.git
cd Paraweather
git pull
cd frontend
$env:GITHUB_TOKEN="<token_con_repo_y_actions>"
$env:GITHUB_REPO="Capybla/Paraweather"
$env:GITHUB_REF="main"
npm install
npm run apk:trigger:githubSi ya tienes el repo clonado en otra ruta, entra a esa carpeta primero:
cd "C:\ruta\donde\tengas\Paraweather\frontend"
npm runEn la salida de npm run debe aparecer apk:trigger:github.
Qué hace:
- Llama a la API de GitHub (
workflow_dispatch) del workflow.github/workflows/android-apk.yml. - Inicia la build en GitHub Actions para generar la APK.
Alternativa sin npm (disparo directo de API desde PowerShell):
$headers = @{
Authorization = "Bearer $env:GITHUB_TOKEN"
Accept = "application/vnd.github+json"
"X-GitHub-Api-Version" = "2022-11-28"
}
$body = @{ ref = "main" } | ConvertTo-Json
Invoke-RestMethod -Method POST -Uri "https://api.github.com/repos/Capybla/Paraweather/actions/workflows/android-apk.yml/dispatches" -Headers $headers -Body $bodySi todo va bien, GitHub responde sin contenido (HTTP 204) y la ejecución aparece en Actions.
Luego descárgala desde:
- Actions artifacts:
paraweather-debug-apk - Releases (si disparas por tag
v*)
- La app guarda el último parte meteorológico y lo muestra cuando no hay red.
- Se muestra alerta de desconexión y se mantiene navegación con GPS local.
- En build de producción se registra un service worker para cachear recursos base.
frontend/src/App.js: UI principal y lógica de widgets.frontend/src/config.js: valores por defecto de páginas/widgets y claves de almacenamiento (punto recomendado para personalización).frontend/src/serviceWorkerRegistration.js+frontend/public/sw.js: estrategia offline/cache.backend/server.py: API y lógica de reglas de vuelo.
- Haz cambios pequeños y atómicos por PR.
- Mantén configuraciones editables en archivos de configuración (ejemplo:
frontend/src/config.js) en lugar de hardcodear en componentes. - Verifica siempre con:
cd frontend && node --check src/App.jscd frontend && npm run build
- Puedes definir
REACT_APP_REPO_URLpara que el panel Open Source de la UI apunte a tu repositorio real en GitHub/GitLab. - El diseño está pensado para ser profesional y reusable: componentes visuales y configuración separada en
frontend/src/App.js+frontend/src/config.js.
XCSoar is a tactical glide computer for glider pilots. Free and open-source. No ads. No tracking. Runs on Android, iOS, Linux, macOS, and Windows. Developed with love by the open-source community.
XCSoar includes the tools most glider pilots need for cross-country flying:
- Moving map with terrain, airspace, airports, and task navigation
- Context-sensitive infoboxes with altitude, navigation, glide calculations, wind, weather, and task data
- Traffic display and glide computer calculations
- Task planning/declaration with support for many vario and logger devices
- Flight analysis tools such as barograph, polar view, and OLC optimization
- Thermal centering and support for online thermal sources
- Import support for common waypoint, airspace, and map formats (including CUP, CUPX, OpenAir, and XCM)
XCSoar is built for pilots, by pilots:
- No ads, no tracking, no data collection, and no account required
- Works offline; your flight data stays on your device
- Multi-platform: phone, tablet, PC, Kobo, and single-board/embedded computers (Raspberry Pi, OpenVario)
- Open-source alternative to commercial glide computers
- Supports a wide range of hardware
- Supported device drivers include:
- Collision avoidance: FLARM, Stratux
- Varios: XCVario, CAI 302, OpenVario, Borgelt B50, Flymaster, Flytec, XCTracer, LXNAV Vario S* and V7 series, LXNAVIGATION ERA variometer, Loefgren vario
- Radios: AIR Avionics ACD-57, TQ-Aviation (KRT2), XCOM 760, ATR833
- Simulator: Condor 3 flight simulator
Give XCSoar a try!
- User manual (latest release): xcsoar.org/discover/manual.html
- Developer's Manual: xcsoar.readthedocs.io/en/latest/build.html
If you want to build the project, see the Developer's Manual. If you want to help the project, see the writing patches policy. Patches should be submitted as GitHub pull requests, and general discussion can happen on GitHub Discussions.
- Report bugs or request features: GitHub Issues
- Discuss: GitHub Discussions
The code is licensed under the GPL-2.0-or-later. See COPYING for details. Privacy policy: PRIVACY.md.