Skip to content

antoinnneee/FloraPin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

416 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🌸 FloraPin

FloraPin est une application Android (Kotlin / Jetpack Compose) pour capturer des photos de fleurs géolocalisées, les revoir dans une galerie et sur une carte, puis — via un backend optionnel — les sauvegarder dans le cloud et les partager entre amis.

L'app fonctionne 100 % hors-ligne pour le cœur (capture, galerie, carte locale) ; le backend ajoute comptes, stockage cloud, partage et identification.

Fonctionnalités

  • 📷 Capture photo (CameraX) avec position GPS et précision
  • 🖼️ Galerie locale + écran détail (photo, coordonnées, mini-carte, notes)
  • 🗺️ Carte des fleurs (MapLibre + tuiles MapTiler/OSM), marqueurs + clustering, filtre par période
  • ☁️ Backend : comptes (JWT), upload cloud (MinIO), synchronisation, partage configurable (toutes mes fleurs / une fleur, avec ou sans GPS)
  • 👥 Amis, feed, notifications in-app
  • 🌿 Identification d'espèce (Pl@ntNet) + identification collaborative entre amis
  • 🏷️ Espèce & tags sur les fleurs, recherche

Structure du dépôt

FloraPin/
├─ app/                  # Application Android (Kotlin + Jetpack Compose)
│  └─ src/main/java/com/florapin/app/
│     ├─ capture/        # CameraX : capture + enregistrement
│     ├─ location/       # FusedLocationProvider (GPS)
│     ├─ data/           # Room (FlowerEntity, DAO, repository)
│     ├─ gallery/        # Galerie (liste + ViewModel)
│     ├─ detail/         # Écran détail d'une fleur
│     ├─ albums/         # Albums (regroupements de fleurs)
│     ├─ map/            # Carte MapLibre, clustering, filtres
│     ├─ auth/           # Connexion / inscription / compte
│     ├─ network/        # Client Retrofit + API backend
│     ├─ sync/           # Synchronisation locale ↔ cloud
│     ├─ feed/           # Feed des amis
│     ├─ friends/        # Amis (demandes, relations)
│     ├─ share/          # Partage de fleurs / albums
│     ├─ identify/       # Identification d'espèce (Pl@ntNet + collaborative)
│     ├─ likes/          # Cœurs sur les fleurs
│     ├─ push/           # Notifications push (FCM)
│     ├─ profile/        # Profil utilisateur
│     ├─ permission/     # Permissions runtime
│     ├─ navigation/     # Graphe de navigation
│     ├─ util/           # Utilitaires partagés
│     └─ ui/theme/       # Thème Compose
├─ backend/              # API NestJS (TypeScript)
│  ├─ src/               # modules auth, users, flowers, albums, friendships,
│  │                     #   shares, feed, comments, likes, proposals,
│  │                     #   identification, identification-requests, species,
│  │                     #   notifications, push, mail, sync, storage,
│  │                     #   observability
│  ├─ db/schema.sql      # schéma PostgreSQL + PostGIS de référence
│  ├─ docs/API.md        # contrats REST
│  └─ ARCHITECTURE.md    # architecture backend
└─ .github/workflows/    # CI (build/test Android)

Prérequis

Outil Version Pour
JDK 17 Build Android (Gradle)
Android SDK API 35 (min 26) App
Node.js ≥ 20 (testé 22) Backend
Docker récent Postgres/PostGIS + MinIO (backend)

Lancer l'application Android

# Configurer l'emplacement du SDK (une fois)
echo "sdk.dir=/chemin/vers/Android/Sdk" > local.properties

# (Optionnel) carte : clé MapTiler gratuite
echo "MAPTILER_API_KEY=VOTRE_CLE" >> local.properties

# Build + tests + APK debug
./gradlew testDebugUnitTest assembleDebug
# APK : app/build/outputs/apk/debug/app-debug.apk

Ouvrir le projet dans Android Studio pour lancer sur un émulateur/appareil. Sans clé MapTiler, l'app fonctionne mais l'écran carte affiche un message d'aide.

Lancer le backend

cd backend
cp .env.example .env        # puis adapter les secrets
npm install
npm run start:dev           # API sur http://localhost:3000
  • Doc interactive (Swagger) : http://localhost:3000/api/docs
  • Base API : http://localhost:3000/api/v1
  • Tests : npm test

Le backend a besoin de PostgreSQL + PostGIS et MinIO. Pour le dev sans MinIO, mettre STORAGE_DRIVER=stub dans .env. Le schéma de référence est dans backend/db/schema.sql (en prod : migrations TypeORM).

Stack technique

  • App : Kotlin, Jetpack Compose, CameraX, Room, MapLibre GL, Coil, Navigation Compose, Play Services Location
  • Backend : NestJS, TypeORM, PostgreSQL + PostGIS, MinIO (S3), JWT + refresh tokens, Swagger
  • CI : GitHub Actions (lint + tests + assembleDebug)

Détails d'architecture : backend/ARCHITECTURE.md. Contribuer : voir CONTRIBUTING.md.

About

No description, website, or topics provided.

Resources

Contributing

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages