Documentation de l'Application

1. Présentation Générale

Objectif de l'application

Application permettant la création et la gestion d'articles de blog avec CRUD.

Architecture Générale

Schéma de l'architecture :

Architecture 3 tiers

Environnement de Développement

  • Node.js & npm
  • MongoDB
  • Cloudinary (stockage des fichiers)
  • Gatsby (pour le front-end)

Installation

git clone https://github.com/user/repo.git
cd repo
npm install
npm run dev

2. Tier Présentation (Front-end)

Technologies utilisées

  • React / Gatsby
  • Context API / Provider
  • Requêtes API avec Axios
  • Markdown pour le contenu des articles

3. Tier Application (Back-end)

Endpoints de l’API

Voir les endpoints
GET /articles - Récupérer tous les articles
GET /article/:slug - Récupérer un article par slug
POST /save/:slug - Ajouter un article
PUT /update/:slug - Modifier un article
DELETE /article/:slug - Supprimer un article
POST /upload/:slug - Upload un fichier Markdown

Exemple de requête API

curl -X GET https://blog-api.david-konate.fr/api/articles

4. Tier Données (Base de données)

Schéma de la base de données

Voir le schéma
const articleSchema = new mongoose.Schema({
  title: String,
  slug: String,
  category: String,
  fileUrl: String,
  createdAt: { type: Date, default: Date.now },
  image: String,
  author: String,
  date: String,
  protected: Boolean,
});

5. Déploiement et Infrastructure

Déploiement sur O2Switch avec gestion des environnements.

6. Gestion des Articles

Service useArticles

Voir l'exemple de code
const fetchArticles = async (page = 1, category = "") => {
  setLoading(true);
  const response = await fetch(
    `https://blog-api.david-konate.fr/api/articles?page=${page}&category=${category}`
  );
  const data = await response.json();
  setArticles(data);
};