API REST Node.js/TypeScript open source pour créer votre propre boutique mobile de t-shirts. Solution complète incluant une application mobile de démonstration.
📱 Télécharger l'app mobile de démo
- ✅ Gestion des produits (liste, recherche, filtres)
- ✅ Gestion des commandes (création, mise à jour, suivi)
- ✅ Gestion des codes promo/coupons
- ✅ Upload de fichiers/images
- ✅ Paiements Stripe (Payment Intents)
- ✅ Base de données flexible (File Storage ou MongoDB)
- ✅ Documentation Swagger/OpenAPI
- ✅ Compatible avec la structure WooCommerce
- ✅ CORS configuré pour les applications frontend
- ✅ TypeScript strict mode
- ✅ Panel d'administration web intégré
- ✅ Application mobile de démonstration (React Native)
Une application mobile de démonstration est disponible pour tester la solution complète :
- 🛍️ Catalogue de produits avec recherche et filtres
- 🛒 Panier et gestion des commandes
- 💳 Paiements sécurisés via Stripe
- 📦 Suivi de commandes en temps réel
- 🎨 Interface moderne et intuitive
L'application mobile se connecte directement à cette API et peut être personnalisée pour vos besoins.
- Node.js >= 18.x
- npm ou yarn
- Compte Stripe (pour les paiements)
# Cloner le projet
git clone <repository-url>
cd linepicplus-api
# Installer les dépendances
npm install
# Copier le fichier d'environnement
cp env.example .env
# Configurer les variables d'environnement
nano .envÉditez le fichier .env avec vos propres valeurs :
# Server
PORT=3000
HOST=localhost
NODE_ENV=development
# Database
DB_TYPE=filedb
FILE_DB_PATH=./data
# Stripe
STRIPE_SECRET_KEY=sk_test_your_stripe_secret_key
# Uploads
UPLOAD_PATH=./uploads
MAX_FILE_SIZE=10485760npm run dev# Build
npm run build
# Start
npm startUne fois le serveur démarré, accédez à la documentation Swagger :
http://localhost:3000/api-docs
- Linepicplus API:
/wp-json/linepicplus/v1 - Payments API:
/wp-json/linepicplus-payments/v1
GET /wp-json/linepicplus/v1/products- Liste des produitsGET /wp-json/linepicplus/v1/product?id={id}- Détails d'un produit
POST /wp-json/linepicplus/v1/orders- Créer une commandePOST /wp-json/linepicplus/v1/order-billing-shipping?order-id={id}- Mettre à jour les adressesPOST /wp-json/linepicplus/v1/order-coupon?order-id={id}- Appliquer un code promoGET /wp-json/linepicplus/v1/track-orders?order-id={ids}- Suivre des commandes
POST /wp-json/linepicplus/v1/upload?time={timestamp}&fileid={id}- Upload de fichier
POST /wp-json/linepicplus-payments/v1/create-intent?amount={amount}&description={desc}- Créer un Payment IntentPOST /wp-json/linepicplus-payments/v1/confirm-intent?intent-id={id}- Confirmer un paiement
GET /wp-json/linepicplus/v1/health- Santé de l'API
linepicplus-api/
├── src/
│ ├── config/ # Configuration (Swagger, etc.)
│ ├── interfaces/ # Interfaces de base de données
│ │ ├── i-database.ts
│ │ ├── i-filedb.ts
│ │ └── i-mongodb.ts
│ ├── middleware/ # Middlewares Express
│ ├── models/ # Modèles TypeScript
│ │ ├── product.model.ts
│ │ ├── order.model.ts
│ │ ├── coupon.model.ts
│ │ ├── payment.model.ts
│ │ └── upload.model.ts
│ ├── routes/ # Routes API
│ │ ├── products.routes.ts
│ │ ├── orders.routes.ts
│ │ ├── upload.routes.ts
│ │ ├── payments.routes.ts
│ │ └── health.routes.ts
│ ├── services/ # Services (logique métier)
│ │ ├── database.service.ts
│ │ ├── product.service.ts
│ │ ├── order.service.ts
│ │ ├── coupon.service.ts
│ │ ├── payment.service.ts
│ │ └── upload.service.ts
│ ├── app.ts # Application Express
│ └── server.ts # Point d'entrée
├── data/ # Base de données (fichiers JSON)
├── uploads/ # Fichiers uploadés
├── old-plugins/ # Anciens plugins WordPress (référence)
├── package.json
├── tsconfig.json
├── nodemon.json
├── .eslintrc.json
└── README.md
Le mode File Storage utilise des fichiers JSON pour stocker les données. Parfait pour le développement et les petits déploiements.
Les données sont stockées dans le dossier ./data/ :
products.jsonorders.jsoncoupons.jsonuploads.jsonpayment_intents.json
Pour utiliser MongoDB, configurez .env :
DB_TYPE=mongodb
MONGODB_URI=mongodb://localhost:27017/linepicplusL'implémentation MongoDB est préparée dans src/interfaces/i-mongodb.ts et peut être complétée selon vos besoins.
npm test- CORS configuré
- Helmet pour les headers de sécurité
- Validation des uploads (taille, type MIME)
- Paiements sécurisés via Stripe
curl -X POST http://localhost:3000/wp-json/linepicplus/v1/products \
-H "Content-Type: application/json" \
-d '{
"name": "T-shirt Premium World Of Warcraft",
"price": "29.99",
"regular_price": "29.99",
"description": "T-shirt 100% coton avec design World Of Warcraft",
"status": "publish"
}'curl -X POST http://localhost:3000/wp-json/linepicplus/v1/orders \
-H "Content-Type: application/json" \
-d '{
"billing": {
"first_name": "Jean",
"last_name": "Dupont",
"email": "jean@example.com",
"phone": "0612345678",
"address_1": "123 Rue de Paris",
"city": "Paris",
"postcode": "75001",
"country": "FRANCE"
},
"shipping": {
"first_name": "Jean",
"last_name": "Dupont",
"address_1": "123 Rue de Paris",
"city": "Paris",
"postcode": "75001",
"country": "FRANCE"
},
"line_items": [
{
"product_id": 1,
"quantity": 1
}
]
}'curl -X POST "http://localhost:3000/wp-json/linepicplus-payments/v1/create-intent?amount=29.99&description=Order%2012345"npm run dev- Démarre le serveur en mode développement avec auto-reloadnpm run build- Compile TypeScript vers JavaScriptnpm start- Démarre le serveur en productionnpm run lint- Vérifie le code avec ESLintnpm test- Lance les tests
Assurez-vous de configurer les variables suivantes :
NODE_ENV=production
PORT=3000
DB_TYPE=mongodb
MONGODB_URI=mongodb://your-production-mongodb
STRIPE_SECRET_KEY=sk_live_your_stripe_key
CORS_ORIGIN=https://your-frontend-domain.comFROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
RUN npm run build
EXPOSE 3000
CMD ["npm", "start"]MIT
Jeremy Guyet
Pour toute question ou problème, veuillez ouvrir une issue sur GitHub.
Note: Cette API remplace les anciens plugins WordPress présents dans le dossier old-plugins/. Les routes et la structure des données sont compatibles pour faciliter la migration.