Skip to content

Repository files navigation

SOS TOILETTES

Application mobile communautaire pour localiser, filtrer et consulter les toilettes publiques à Paris et en Île-de-France.

SOS TOILETTES privilégie une expérience cartographique native, rapide et accessible. Les données structurelles proviennent exclusivement de l'open data; Firebase ne stocke que les profils et contributions communautaires.

Fonctionnalités

  • Carte native: Apple Maps sur iOS, Google Maps sur Android
  • Localisation, recentrage et recherche d'adresse limitée à l'Île-de-France
  • Clustering et marqueurs personnalisés
  • Filtres persistants: disponibilité, gratuité, PMR, relais bébé, 24 h/24 et type
  • Liste des toilettes proches et mode urgence
  • Fiche détaillée, itinéraire, favoris, avis et signalements
  • Profil anonyme avec avatar, XP, niveaux et badges
  • Thèmes clair, sombre ou système
  • Français, anglais et espagnol
  • Cache local des données publiques et des préférences

Stack

  • React Native 0.81 et Expo SDK 54
  • TypeScript strict
  • react-native-maps
  • React Navigation
  • Zustand et AsyncStorage
  • Firebase Authentication anonyme et Firestore
  • i18next
  • Reanimated et Gorhom Bottom Sheet

Architecture

src/
├── components/       composants partagés, feedback et navigation
├── config/           constantes produit, Firebase et gamification
├── core/             providers, navigation et stores globaux
├── features/         explorer, favoris, filtres, onboarding, profil, réglages
├── hooks/            bootstrap, localisation et utilitaires React
├── i18n/             traductions FR, EN et ES
├── motion/           animations partagées
├── repositories/     données open data et communautaires
├── services/         Firebase, géocodage, haptics et journalisation
├── theme/            tokens et thèmes clair/sombre
├── types/            modèles métier et navigation
└── utils/            distance, toilettes, préférences et XP

Les deux domaines de données restent séparés:

  • Open data: définition et localisation des toilettes
  • Firestore: utilisateurs, favoris, avis, signalements, XP, badges et overrides communautaires

Prérequis

  • Node.js 22 LTS
  • npm
  • Xcode et CocoaPods pour iOS
  • Android Studio et un JDK compatible pour Android
  • Un projet Firebase avec Authentication anonyme et Firestore
  • Une clé Google Maps SDK for Android restreinte au package et au SHA-1

Installation

git clone https://github.com/BFMIX/SOS-TOILETTES.git
cd SOS-TOILETTES
npm ci
cp .env.example .env

Renseigner ensuite les variables locales sans jamais versionner .env:

EXPO_PUBLIC_FIREBASE_API_KEY=
EXPO_PUBLIC_FIREBASE_AUTH_DOMAIN=
EXPO_PUBLIC_FIREBASE_PROJECT_ID=
EXPO_PUBLIC_FIREBASE_STORAGE_BUCKET=
EXPO_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=
EXPO_PUBLIC_FIREBASE_APP_ID=
EXPO_PUBLIC_FIREBASE_MEASUREMENT_ID=
EXPO_PUBLIC_GOOGLE_MAPS_API_KEY=

Lancement

# Expo standard
npm start

# Development build distinct: DEV SOS TOILETTES
npm run ios:dev
npm run start:dev

# Build de production local
npm run ios:prod
npm run android:prod

Les identifiants natifs sont séparés:

Variante Nom iOS Bundle / package
Développement DEV SOS TOILETTES com.sostoilettes.app.dev
Production SOS TOILETTES com.sostoilettes.app

Le dossier natif est généré. La compatibilité de cycle de vie UIScene et la cible iOS minimale sont appliquées automatiquement par le config-plugin du projet:

npm run prebuild:dev -- --clean
cd ios && pod install

Firebase

  1. Activer Authentication > Anonymous.
  2. Créer Firestore en mode production.
  3. Installer la CLI Firebase si nécessaire.
  4. Associer ce dépôt au bon projet Firebase.
  5. Déployer les règles et index après validation:
firebase deploy --only firestore:rules,firestore:indexes

Collections utilisées: users, toilet_overrides, reviews, reports.

Les règles actuelles correspondent au MVP. Le renforcement serveur des XP, badges et statuts communautaires est une priorité avant une publication publique à grande échelle.

Sources publiques

Aucune copie du dataset public n'est stockée dans Firestore.

Qualité

npm run check
npx expo-doctor

npm run check exécute TypeScript et ESLint. Les tests automatisés et le crash reporting font partie du chantier de stabilisation en cours.

Sécurité

  • Ne jamais committer .env, certificats, profils ou clés privées.
  • Restreindre la clé Google Maps au package Android et aux SHA-1 autorisés.
  • Considérer les clés Firebase clientes comme publiques et protéger les données avec des règles Firestore strictes.
  • Signaler une vulnérabilité en privé au propriétaire du dépôt plutôt que dans une issue publique.

État du projet

Le MVP est en stabilisation. Les fonctionnalités produit actuelles sont conservées pendant les travaux de fiabilité, performance, accessibilité et sécurisation communautaire.

Conçu et maintenu par BFMIX.

About

Application mobile communautaire pour localiser et signaler les toilettes publiques à Paris et en Île-de-France.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages