- PHP 49.3%
- JavaScript 16.2%
- Python 15%
- TypeScript 9.1%
- Twig 6.7%
- Other 3.6%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
Add bounded hourly ECMWF refresh and global nodata-aware layers, preserve immutable frames, queue browser tile bursts, and document verified domain-test behavior. |
||
| .forgejo/workflows | ||
| assets | ||
| bin | ||
| compute | ||
| config | ||
| contracts | ||
| deploy | ||
| docker | ||
| docs | ||
| e2e | ||
| fixtures | ||
| migrations | ||
| public | ||
| scripts | ||
| src | ||
| templates | ||
| tests | ||
| translations | ||
| .dockerignore | ||
| .env | ||
| .env.docker.example | ||
| .gitattributes | ||
| .gitignore | ||
| AGENTS.md | ||
| CHANGELOG.md | ||
| compose.domain.yaml | ||
| compose.yaml | ||
| composer.json | ||
| composer.lock | ||
| LICENSE | ||
| package-lock.json | ||
| package.json | ||
| phpstan.neon | ||
| phpunit.xml.dist | ||
| README.md | ||
| tsconfig.json | ||
| VERSION | ||
| vite.config.ts | ||
WHATHER
Weather map and private solar-generation forecasts. Symfony 7.4/PHP 8.4, MySQL 8.4, two Redis instances, Twig/Stimulus/TypeScript/Vite, MapLibre and ECharts; bounded Python 3.12/pvlib grid and PV compute. Windows source root: D:\projects\whather. Local runtime is Docker; production targets native FASTPANEL.
P27 handoff: production acceptance blocked_external. Real regional ECMWF layers and point/PV workflows have local evidence. Global coverage / a continuously refreshed >=72h grid horizon, native deployment, provider usage approval and other release gates remain open. Read final acceptance before calling the product ready.
Local quick start
Use PowerShell 7 and Docker Desktop Linux containers. Verify ports 8014/5173 are available and inspect Git status first. For an occupied checkout, preserve its .env.docker, .local secrets and volumes. No Windows PHP/Python installation is needed.
Set-Location D:\projects\whather
git remote -v
git status --short
.\scripts\dev.ps1 init-local
.\scripts\dev.ps1 up
.\scripts\dev.ps1 migrate
.\scripts\dev.ps1 status
.\scripts\dev.ps1 console doctrine:schema:validate
.\scripts\check.ps1
Open http://127.0.0.1:8014/map. init-local generates missing local-only random secrets; never regenerate passwords for an existing database. up installs locked dependencies but does not migrate or download grids. Fresh schema migration must finish before workers can operate. down preserves volumes. Startup health does not prove weather freshness.
If bind-mount changes do not reach Vite, set VITE_USE_POLLING=1 in ignored .env.docker. Application dependencies/builds run inside Docker. Existing installed Edge plus host Node can run optional browser QA; this does not move application runtime to Windows.
Verification and operation
.\scripts\dev.ps1 console app:weather:doctor
.\scripts\dev.ps1 console whather:operations:diagnostics
.\scripts\dev.ps1 console app:jobs:status
.\scripts\dev.ps1 console app:jobs:failed
node e2e/p27-public.mjs
# Disposable accounts/PV forecasts and labeled synthetic CSV imports; dev environment only.
$env:WHATHER_E2E_OUT='var/p27-smoke/pv'
node e2e/p14-live.mjs
$env:WHATHER_E2E_OUT='var/p27-smoke/imports'
node e2e/p17-live.mjs
Remove-Item Env:WHATHER_E2E_OUT
Public grid smoke requires genuine retained frames around 50N/30E; it does not download them or claim they are current. Grid ingest gives bounded preview/enqueue commands. Private smoke creates and deletes its own disposable accounts; it requires dev registration and live weather access. Do not run it against production. Local development explains startup, checks and storage; P27 report distinguishes current results from earlier evidence.
Owner and server handoff
- Owner guide: journeys, units, limitations and troubleshooting.
- Requirement traceability, final manifest, follow-up backlog.
- Native deployment, release build, rollback, backup/restore.
- Provider inventory, prerequisites, security/advisories, incidents.
Production target, credentials, paid services, system installation and release publication require separate authorization. No default operator password, release tag or live deployment is supplied. Historical acceptance is evidence with its recorded scope, not a current uptime or accuracy guarantee. Optional X01–X03 are not started.