Aurélien David - @spyl94
Retour sur 2 ans d'expérience de Lead Dev
Changer la politique, les institutions et la relation au citoyen en utilisant la technologie.
Une startup, experte dans le domaine de l’intelligence collective, qui édite et commercialise en SaaS une plateforme de consultation en ligne.
“Quelqu'un a utilisé le site republique-numerique.fr en utilisant mon nom [...]
En vérité, je ne peux pas utiliser ce site car j'en suis techniquement exclu.
[...]
Le texte des articles n'apparaît pas dans mon navigateur : ce site ne fonctionne pas dans mon cas.
Il requiert l'exécution de programmes privateurs en JavaScript.
[...]
Mais la meilleure solution consiste, sans aucun doute, à faire fonctionner le site sans code JavaScript.”
Richard Stallman (source)
🎢 Dispositifs itinérants ✌️
🔍 Ajouter les tests d'accessibilité au sein de l'intégration continue
✅ Règles basiques intégrées au linter (eslint-plugin-jsx-a11y)
⚠️ Difficile et couteux de scaler à la fois export et API
⚠️ API REST difficiles à designer avec les features toggle et contraintes SaaS
💭 Expérimentation: un seul endpoint GraphQL
... utilisé à la fois en tant qu'API et générateur d'exports (cap-collectif/graphql-to-csv bientôt open-source !)
1) Décrire ce qu'il est possible d'obtenir
type Project { type User {
name: String id: ID
tagline: String name: String
contributors: [User] }
}
2) Demander ce qu'on veut
{
project(name: "GraphQL") {
tagline
contributors {
name
}
}
}
{
"project": {
"tagline": "A query language for API",
"contributors": [
{ "name": "Lee Byron" },
{ "name": "Nick Schrock" },
{ "name": "Dan Schafer" }
]
}
}
3) Obtenir exactement ça
L'intégration continue est obligatoire, chemin critique couvrant toutes les contributions possibles.
🤓 On inverse progressivement la pyramide
pour réduire le temps d'exécution des tests!
Vous nous donnez un coup de pouce ? 🙏
Plus d'infos sur notre refonte JS ?