$ cd ./projects/weather-now/
← cd ../ (retour aux projets)

$ cat weather-now.md

WeatherNow

Application météo full-stack (API OpenWeatherMap) : backend FastAPI + PostgreSQL avec auth JWT et villes favorites, client Next.js typé, i18n, auto-hébergée et en ligne.

date: 12/04/2026

#météo #full-stack #dashboard

stack: Next.js · TypeScript · shadcn/ui · FastAPI · Python · SQLAlchemy async · PostgreSQL · Docker

$ cat README.md

Application full-stack qui sépare proprement la couche d’agrégation (backend FastAPI + httpx) du client (Next.js App Router + shadcn/ui). Le backend masque la clé OpenWeatherMap, valide les réponses via des modèles Pydantic et expose un schéma stable au front, le client ne dépend pas de la forme de l’API externe.

Backend complet

  • Bien plus qu’une façade d’API, PostgreSQL + SQLAlchemy async + Alembic.
  • Auth JWT, avec rotation des refresh-tokens.
  • Villes favorites, sauvegardées par utilisateur, i18n et back-office admin.

Frontend typé

  • Typé de bout en bout, types TypeScript partagés entre back et front.
  • Composants domain-driven, regroupés dans components/weather/.
  • Thème dark/light cohérent via shadcn/ui.

Packagée en Docker Compose (frontend + backend + base), documentation Swagger auto-générée. CI/CD GitHub Actions qui auto-déploie en continu sur mon serveur auto-hébergé, en ligne sur meteo.gautierchuinard.com (API séparée).

Full-stack application that cleanly separates the aggregation layer (FastAPI backend + httpx) from the client (Next.js App Router + shadcn/ui). The backend hides the OpenWeatherMap key, validates responses through Pydantic models and exposes a stable schema to the front end, so the client does not depend on the shape of the external API.

Complete backend

  • Far more than an API façade, PostgreSQL + SQLAlchemy async + Alembic.
  • JWT auth, with refresh-token rotation.
  • Saved cities, stored per user, i18n and an admin back-office.

Typed frontend

  • Typed end to end, TypeScript types shared between back and front.
  • Domain-driven components, grouped in components/weather/.
  • Dark/light theme, kept consistent by shadcn/ui.

Packaged as Docker Compose (frontend + backend + database), auto-generated Swagger documentation. GitHub Actions CI/CD that continuously auto-deploys to my self-hosted server, online at meteo.gautierchuinard.com (separate API).