Salut à tous !

Je suis Pierre, un des créateurs de Strapi : un Content Management Framework en Node.js dédié à la création d'API.

Pourquoi

À l'heure actuelle, créer une API sur Node.js demande un temps de développement important. Pourquoi ? Les développeurs doivent choisir un framework (typiquement Express, Koa ou Hapi) et développer un nombre important de fonctionnalités qui sont, en réalité, très génériques : authentification, rôles et permissions upload, panel d'administration, etc.

Face à cela, quelques framework plus haut niveau ont décidé d'inclure certaines de ces fonctionnalités. Parmi ceux-ci, on peut citer Loopback, Sails (malheureusement très peu maintenu) ou encore Adonis. Toutefois, ces frameworks exigent un niveau technique important et ne comportent pas d'interface d'administration.

L'alternative pourrait donc être l'utilisation d'un CMS. Malheureusement les CMS Node.js sont peu nombreux sur Node.js (Keystone et Ghost étant les deux principaux), ils ne sont pas API-first (ce ne sont pas des « Headless CMS ») et, surtout, n'offrent pas la flexibilité d'un framework.

Certains développeurs se tournent donc vers des solutions de type SaaS (Firebase...). Ces solutions conviennent généralement pour des POC ou des prototypes, mais dès que l'app commencent à grossir, les coûts s'envolent et l'ajout de fonctionnalités sur mesure est impossible.

Solution

Pour cette raison nous avons décidé de créer Strapi : le Content Management Framework Node.js le plus avancé, pour construire des API.

À mi-chemin entre un framework et un CMS, Strapi a pour ambition d'accélérer le temps de développement d'API en offrant les avantages d'un CMS (panel d'administration...) tout en gardant la flexibilité d'un framework.

L'outil est évidemment open-source, sous license MIT.

Une courte vidéo vaut mieux que de longs discours : https://strapi.io/demo.

D'où vient le nom?

« Strapi » est issu de « Bootstrap your API ».

État actuel

La première version de Strapi a été publiée en octobre 2015.

La version en cours de développement est Strapi v3@alpha.7. N'hésitez pas à lire les articles du blog et tout particulièrement celui qui concerne la dernière release.

Prochaines étapes

Nous sommes actuellement en train de stabiliser la version actuelle et de préparer les futurs plugins : Authentification via providers (Facebook, Twitter, GitHub...), Upload, Bibliothèque média, Analytics, GraphQL...

Vous pouvez consulter la Roadmap pour plus d'informations.

Installation

Pré-requis:

  • Node (version 8 ou 9) installé sur votre machine.
  • MongodDB installé et démarré.

Installation:

$ npm i strapi@alpha -g

Vérification de l'installation:

$ strapi -v

Le terminal devrait afficher 3.0.0-alpha.7.

Créez votre premier projet:

$ strapi new my-app

Démarrez le serveur:

$ cd my-app
$ strapi start

Ouvrez le panel d'administration, commencez à construire votre API, lisez la documentation documentation pour découvrir les prochaines étapes et rejoignez la communauté sur Slack pour donner votre feedback.

Bonus

Si vous retweetez notre dernier tweet avant le 4 janvier, vous gagnerez peut-être un des trois t-shirts Strapi disponibles !

Aller plus loin

Si vous souhaitez utiliser de manière plus avancée l'outil ou contribuer à ce dernier, lisez la documentation et rejoignez la communauté sur Slack pour donner votre feedback.

Liens utiles :

En espérant que Strapi vous fera gagner du temps lors de la création de vos prochaines API !

Avez-vous déjà utilisé Strapi pour créer vos API ? Est-ce que cet outil pourrait répondre à vos besoins ? Quelles sont vos suggestions ?

11 réponses


j´ai testé strapi il n´y a pas si longtemps que ca et c´est vraiment top pour creer des API! nous allons peut etre passer par ca pour le dev de nos API a mon taf, on est en discussion sur le projet

Elle est ou la vidéo ? :P

ça me semble être un très bon outil, je l'ai dans mes fav' depuis un petit moment mais pas encore eu le temps de tester, mais cherchant une alternative (free) à Firebase (et surtout moins casse Q à utiliser), cela semble être parfait !

Y'a-t'il déjà des apps mobile utilisant strapi comme api ?

Defy: ravi de savoir que l'outil t'a plu ! De quelles fonctionnalités avez-vous tout particulièrement besoin ?

Fital: bien vu, l'iFrame YouTube ne s'affichait pas :) Je l'ai donc remplacée par un lien : https://strapi.io/demo.

La comparaison avec Firebase est en effet très pertinente : notre objectif est d'avoir les mêmes fonctionnalités, mais en open-source (donc gratuit) et avec plus de flexibilité (possibilité d'ajouter des fonctionnalités custom).

Oui, des apps mobiles utilisent Strapi comme API. On estime que plusieurs centaines d'API Strapi sont déjà en ligne.

Alors honnêtement, je cherche désespérément à créer une app style Tinder (dans les fonctionnalités).

C'est à dire :

  • Real time,
  • Geolocation et affichage distance en temps réel,
  • Notifications, messages, etc.

Actuellement j'ai développé ma maquette avec Firebase, mais je trouve que c'est plus un casse tête qu'autre chose à utiliser et être dépendant d'un service comme celui-ci est franchement pas top ! Très bonne initiative de votre part !

Est-ce que cela est déjà possible actuellement avec Strapi ?

alors il manquerais une fonctionalité pour nous, afin de passer la platforme sur nos ancienne API pour pouvoir manager nos projets sur la meme platform, un reverse de la db. que l'on puisse faire un reverse de nos schema de base, MySql principalement, depuis l'orm de l'app pour populer directement les models.

Salut,
Je connaissais pas du tout et franchement ça à l'aire super quali et fonctionnelle. Personnel j'en ai pas le besoin, je reste c'est mes bonnes vielles api resta avec un petit back pour la partie CM. Par contre je comprend pas la comparaison avec Firebase. Hésiter pas a me contredire, mais à part le fait que firebase fournisse une api et un simple voir sommaire CM, c'est surtout la partie hébergement de l'api qui est intéressant avec Firebase. Après comme la plupart des api la partie chiante c'est l'optimisation qui est compliquée.

Fital: pour l'instant, le real-time n'est pas nativement implémenté dans Strapi. Toutefois, il est possible de l'intégrer en utilisant Socket.io.

Defy: c'est une fonctionnalité qui nous est beaucoup demandée. Nous envisageons de développer, au cours des prochains mois, un plugin qui permet de faire cela. En attendant, tu peux très facilement reproduire la structure de la base de données en utilisant le plugin Content Type Builder ou en modifiant directement les modèles. Cela devrait se faire en quelques heures.

Galyb: les principales fonctionnalités de Firebase sont, même si cela dépend des usages, les suivantes :

  • Authentification
  • Database (real-time)
  • Hosting
  • Analytics

Grâce à Strapi, le système d'authentification est fourni gratuitement via le plugin Users & Permissions. Le temps réel sera géré prochainement dans Strapi. Quant à l'Analytics, il arrivera dans sa première version début février.

Comme tu l'as précisé, la partie hébergement de l'API est très pratique étant donné que tu n'as pas à te soucier de la scalabilité et de la sécurité de ton infrastructure. Mais dans le cas de Firebase, cela représente également une limite : tu ne peux pas ajouter de fonctionnalités qui te sont spécifiques, tu ne peux pas modifier le back-office, tu ne peux pas te brancher à une base de données existante, etc. Avec Strapi tu gardes justement cette flexibilité. Et pour soulager les utilisateurs sur la partie infrastructure, nous envisageons, à terme, de fournir du Database as a Service (comme le fait mLab) et du Platform as a Service (comme le fait Heroku) en offrant la possibilité de s'intégrer en un clic avec ces solutions. Cette approche hybride permet de bénéficier d'un outil bien plus customisable tout en gardant les avantages des solutions en ligne.

@pierreburgy: juste pour te signaler un "bug",

j'ai installé pour tester Strapi sur un de mes raspberry (donc pas en localhost) et j'ai changé le port par défaut avec un 3000, j'ai pu lancer mon serveur sans soucis mais je peux rien faire dessus, je m'explique :

La page d'accueil garde les même infos (page statique sans doute) à savoir les url localhost:1337 :)

PS: du coup impossible de l'utiliser car il va chercher des js en url brut :

localhost:1337/admin/content-type-builder/main.js Failed to load resource: net::ERR_CONNECTION_REFUSED

Merci pour le les informations sup par contre si vous une plateforme faite quelque chose de bien, personnellement je ne recommande pas en prod. Mais si vous mettez en place une plateforme accessible, je suis intéressé. Plus envie de me prendre la tête avec aws ou autre.

Merci fital pour ton retour. C'est un problème que nous avons découvert récemment et qui vient d'être réglé : https://github.com/strapi/strapi/pull/397.

galyb: l'idée est justement de faire quelque chose très accessible et de faciliter l'intégration de Strapi avec d'autres services. La simplicité est notre mot d'ordre :) Et je ne peux que comprendre ton avis relatif au solutions du type AWS.