Go to file

API Anime Tracker

API de synchronisation pour l'extension Chrome Anime Tracker, permettant de synchroniser l'historique des animés sur plusieurs appareils.

Fonctionnalités

  • Authentification JWT (inscription, connexion)
  • Synchronisation des animés entre appareils
  • CRUD complet pour les animés
  • Endpoint de synchronisation en masse
  • Base de données PostgreSQL (service externe)

Configuration

Variables d'environnement

Créez un fichier .env à partir de env.example :

cp env.example .env

Éditez .env et configurez :

  • SECRET_KEY: Clé secrète pour JWT (minimum 32 caractères, générer une clé aléatoire)
  • DATABASE_URL: URL de connexion PostgreSQL (format: postgresql://user:password@host:port/database)

Exemple de configuration

SECRET_KEY=votre-cle-secrete-tres-longue-et-aleatoire-minimum-32-caracteres
DATABASE_URL=postgresql://username:password@postgres.holo795.fr:5432/anime_tracker

Installation avec Docker

1. Lancer avec Docker Compose

docker-compose up -d

L'API sera accessible sur https://anime-tracker.holo795.fr (ou le port configuré)

2. Vérifier le statut

docker-compose ps
docker-compose logs -f api

Développement local (sans Docker)

# Créer un environnement virtuel
python -m venv venv
source venv/bin/activate  # Sur Windows: venv\Scripts\activate

# Installer les dépendances
pip install -r requirements.txt

# Lancer l'API
uvicorn main:app --reload --host 0.0.0.0 --port 8000

Documentation API

Une fois l'API lancée, accédez à :

Endpoints principaux

Authentification

  • POST /api/auth/register - Inscription

    {
      "username": "mon_username",
      "email": "email@example.com",
      "password": "motdepasse123"
    }
    
  • POST /api/auth/login - Connexion

    {
      "email_or_username": "email@example.com",
      "password": "motdepasse123"
    }
    
  • GET /api/auth/me - Informations utilisateur (nécessite authentification)

Animés

  • GET /api/animes - Liste des animés (nécessite authentification)
  • POST /api/animes - Créer/mettre à jour un animé (nécessite authentification)
  • PUT /api/animes/{anime_id} - Mettre à jour un animé (nécessite authentification)
  • DELETE /api/animes/{anime_id} - Supprimer un animé (nécessite authentification)
  • POST /api/animes/sync - Synchroniser plusieurs animés (nécessite authentification)

Santé

  • GET /api/health - Vérification de l'état

Production

Déploiement

  1. Configurez les variables d'environnement sur votre serveur
  2. Assurez-vous que PostgreSQL est accessible depuis le conteneur Docker
  3. Utilisez un reverse proxy (nginx) avec HTTPS
  4. Configurez les certificats SSL

Sécurité

  • Utilisez une SECRET_KEY forte et unique
  • Utilisez HTTPS en production
  • Configurez CORS pour limiter les origines autorisées
  • Utilisez un mot de passe fort pour PostgreSQL
  • Limitez les connexions réseau à PostgreSQL

Exemple de configuration nginx

server {
    listen 443 ssl;
    server_name anime-tracker.holo795.fr;

    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;

    location / {
        proxy_pass http://localhost:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Base de données

Création de la base de données PostgreSQL

CREATE DATABASE anime_tracker;
CREATE USER anime_user WITH PASSWORD 'votre_mot_de_passe';
GRANT ALL PRIVILEGES ON DATABASE anime_tracker TO anime_user;

Les tables seront créées automatiquement au premier démarrage de l'API.

Migration

Si vous devez migrer depuis SQLite vers PostgreSQL :

  1. Exportez les données depuis SQLite
  2. Importez-les dans PostgreSQL
  3. Mettez à jour DATABASE_URL dans .env
Description
No description provided
Readme 49 KiB
Languages
Python 97.1%
Dockerfile 2.9%