- Vue d'ensemble
- Architecture
- Prérequis
- Installation
- Configuration
- Démarrage
- API Documentation
- Développement
- Base de données
- Tests
- Déploiement
- Contribution
- Support
AREA est une plateforme d'automatisation qui permet de créer des workflows connectant différents services web. Inspiré par IFTTT (If This Then That), AREA permet aux utilisateurs de définir des Actions qui déclenchent des REActions automatiques.
- 🔗 Intégration multi-services : Connectez Spotify, Gmail, Discord, Notion et plus
- 🔄 Workflows automatisés : Créez des automatisations personnalisées
- 📱 Multi-plateforme : Interface web et application mobile Android
- 🔐 Authentification sécurisée : OAuth2 et authentification par email
- 🎨 Interface intuitive : Design moderne et responsive
- 📊 API RESTful : API complète et documentée
- Recevoir un email quand une nouvelle musique est jouée sur Spotify
- Poster un message Discord quand un nouveau projet Notion est créé
- Sauvegarder automatiquement les musiques aimées dans une playlist
graph TB
subgraph "Frontend"
WEB["Interface Web<br/>(React + Ionic)"]
MOB["Application Mobile<br/>(Ionic + Capacitor)"]
end
subgraph "Backend"
API["API REST<br/>(Flask)"]
AUTH["Module Auth<br/>(Supabase Auth)"]
WORK["Gestionnaire Workflows"]
SERV["Connecteurs Services"]
end
subgraph "Base de données"
DB["Supabase<br/>(PostgreSQL)"]
end
subgraph "Services externes"
SPOT["Spotify API"]
YOUTUBE["Youtube API"]
DISC["Discord API"]
TELEGRAM["Telegram API"]
end
WEB --> API
MOB --> API
API --> AUTH
API --> WORK
API --> SERV
AUTH --> DB
WORK --> DB
SERV --> SPOT
SERV --> YOUTUBE
SERV --> DISC
SERV --> TELEGRAM
AREA/
├── server/ # Backend Flask
│ ├── app.py # Point d'entrée principal
│ ├── auth/ # Module d'authentification
│ ├── spotify/ # Intégration Spotify
│ ├── database/ # Gestion base de données
│ ├── workflows/ # Gestion des workflows
│ └── requirements.txt # Dépendances Python
├── mobile/ # Application mobile Ionic
│ ├── src/ # Code source TypeScript/React
│ ├── android/ # Projet Android natif
│ └── package.json # Dépendances Node.js
├── docker-compose.yml # Configuration Docker
└── docs/ # Documentation
- Node.js >= 18.0.0
- Python >= 3.8
- Docker et Docker Compose
- Git
- Java JDK >= 17
- Android SDK avec command-line tools
- Android Debug Bridge (ADB)
- Compte Supabase (base de données et authentification)
- Compte Spotify Developer (pour l'intégration Spotify)
- Comptes optionnels : Youtube API, Discord Developer, Telegram bot
git clone https://github.com/EpitechPGE3-2025/G-DEV-500-MAR-5-1-area-1.git
cd G-DEV-500-MAR-5-1-area-1cd server
pip install -r requirements.txtcd mobile
npm install# Configurer les variables d'environnement
export ANDROID_HOME="$HOME/android-sdk"
export PATH="$PATH:$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools"
# Installer les outils SDK nécessaires
sdkmanager "platform-tools" "platforms;android-33" "build-tools;33.0.0"
sdkmanager --licensesCréez un fichier .env à la racine du projet :
# Supabase Configuration
SUPABASE_URL=your_supabase_project_url
SUPABASE_KEY=your_supabase_anon_key
SUPABASE_SERVICE_KEY=your_supabase_service_key
# Flask Configuration
SECRET_KEY=your_flask_secret_key
FLASK_ENV=development
# Spotify API
SPOTIFY_CLIENT_ID=your_spotify_client_id
SPOTIFY_CLIENT_SECRET=your_spotify_client_secret
SPOTIFY_REDIRECT_URI=http://localhost:8080/spotify/callback
# Frontend URL
FRONTEND_URL=http://localhost:8081
# Email Configuration
SMTP_SERVER=smtp.gmail.com
SMTP_PORT=587
EMAIL_ADDRESS=your_email@gmail.com
EMAIL_PASSWORD=your_app_password
WEATHER_CLIENT_SECRET=your_api_openweather- Créez un projet sur Supabase
- Exécutez le script SQL
shema.sqlpour créer les tables - Configurez l'authentification OAuth pour GitHub
- Récupérez les clés API et URL du projet
# Démarrer tous les services
./run.sh
# Ou manuellement
docker-compose up --buildcd server
python app.pycd mobile
npm run dev- API Backend : http://localhost:8080
- Interface Web : http://localhost:8081
- API Documentation : http://localhost:8080/about.json
# Build complet (première fois)
./build-mobile.sh
# Build rapide (développement)
./rebuild-mobile.sh
# Installation sur device Android
./install-mobile-apk.shGET /about.jsonRetourne les informations sur le serveur et les services disponibles.
POST /auth/signup # Inscription
POST /auth/login # Connexion
GET /auth/github # OAuth GitHub
POST /auth/logout # Déconnexion
GET /auth/me # Informations utilisateurGET /workflows/list # Liste des workflows
POST /workflows/create # Créer un workflow
GET /workflows/{id} # Détails d'un workflow
PUT /workflows/{id} # Modifier un workflow
DELETE /workflows/{id} # Supprimer un workflow
PUT /workflows/{id}/toggle # Activer/désactiverGET /database/services # Liste des services
GET /spotify/me # Profil Spotify
GET /spotify/currently-playing # Musique en cours
GET /weather/marseille # Météo de marseille actuel
GET /weather/too-cold # M'informe si j'ai besoin de me couvrir
GET /weather/marseille. # M'informe de si je peux m'habiller légerTous les endpoints retournent du JSON avec la structure suivante :
{
"success": true,
"data": {},
"message": "Opération réussie",
"error": null
}L'API utilise des sessions Flask pour l'authentification. Les tokens OAuth sont gérés automatiquement.
200: Succès201: Ressource créée400: Requête invalide401: Non authentifié403: Accès refusé404: Ressource non trouvée500: Erreur serveur
# app.py - Point d'entrée principal
from flask import Flask
from auth.routes import auth
from spotify.routes import spotify
from workflows.routes import workflows
app = Flask(__name__)
app.register_blueprint(auth)
app.register_blueprint(spotify)
app.register_blueprint(workflows)Voir le guide détaillé dans HOWTOCONTRIBUTE.md
-- Utilisateurs gérés par Supabase Auth
-- Workflows utilisateur
CREATE TABLE Workflows (
id BIGINT PRIMARY KEY,
user_id UUID REFERENCES auth.users(id),
name TEXT NOT NULL,
description TEXT,
is_active BOOLEAN DEFAULT true
);
-- Services disponibles
CREATE TABLE Services (
id SERIAL PRIMARY KEY,
name TEXT UNIQUE NOT NULL,
description TEXT,
actions_list TEXT[],
reactions_list TEXT[]
);- Code Style : Suivre PEP 8 pour Python, ESLint pour TypeScript
- Tests : Écrire des tests unitaires pour chaque nouvelle fonctionnalité
- Documentation : Documenter les nouvelles API et fonctionnalités
- Commits : Utiliser des messages de commit descriptifs
AREA utilise PostgreSQL via Supabase avec une architecture en 3 tables principales :
- auth.users : Gestion des utilisateurs (Supabase Auth)
- Users_credentials : Stockage des tokens OAuth pour chaque service
- Workflows : Workflows d'automatisation des utilisateurs
- Services : Catalogue des services disponibles
Pour une documentation complète de la base de données, incluant le diagramme UML, les relations entre tables, les exemples de requêtes et les politiques de sécurité, consultez :
Cette documentation inclut :
- 📊 Diagramme UML complet avec relations
- 📋 Description détaillée de chaque table et colonne
- 🔑 Contraintes, clés étrangères et index
- 🔄 Flux de données et cas d'usage
- 🔒 Row Level Security (RLS) et politiques de sécurité
- 📊 Requêtes SQL utiles pour les statistiques
- 🚀 Scripts de migration et évolutions futures
erDiagram
auth_users ||--o{ Users_credentials : "possède"
auth_users ||--o{ Workflows : "crée"
Services ||--o{ Workflows : "utilisé dans"
Users_credentials {
uuid uuid PK
jsonb spotify
jsonb github
jsonb discord
jsonb telegram
jsonb youtube
}
Workflows {
bigint id PK
uuid user_id FK
text name
jsonb actions
jsonb reactions
boolean is_active
}
Services {
bigint id PK
text name
array actions_list
array reactions_list
}
cd server
python -m pytest tests/cd mobile
npm test# Démarrer les services
docker-compose up -d
# Exécuter les tests E2E
cd mobile
npm run e2e# Build des images de production
docker-compose -f docker-compose.prod.yml build
# Démarrage en production
docker-compose -f docker-compose.prod.yml up -dFLASK_ENV=production
SECRET_KEY=your_secure_secret_key
SUPABASE_URL=your_production_supabase_url
# ... autres variables# Build de production Android
cd mobile
npx cap build android --prod
# Génération de l'APK signé
cd android
./gradlew assembleReleaseNous accueillons les contributions ! Consultez HOWTOCONTRIBUTE.md pour les guidelines détaillées.
- Fork le projet
- Créez une branche feature (
git checkout -b feature/nouvelle-fonctionnalite) - Commitez vos changements (
git commit -m 'Ajout nouvelle fonctionnalité') - Push sur la branche (
git push origin feature/nouvelle-fonctionnalite) - Ouvrez une Pull Request
- ADB unauthorized : Accepter la clé RSA sur l'appareil
- Gradle build failed : Vérifier la version JDK (>= 17)
- SDK licenses : Exécuter
sdkmanager --licenses
- Supabase connection failed : Vérifier les variables d'environnement
- Spotify OAuth error : Vérifier l'URL de callback
- CORS issues : Vérifier la configuration FRONTEND_URL
# Logs du backend
docker-compose logs server
# Logs du frontend
docker-compose logs client_mobile
# Logs Android
adb logcat | grep Area- Issues GitHub : Créer un issue
- Discussions : GitHub Discussions
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
Développé avec ❤️ par l'équipe AREA
