Camino API
API GraphQL de Camino
Technologies
- Node.js
- Express.js
- PostgreSQL
- Express-GraphQL
- Knex.js
- Objection.js
- Eslint
- Prettier
- Standardjs
Configuration et imports des données
- Requiert Node.js, npm et une base de données PostgreSQL.
- Renommer le fichier
.env.example
en.env
et le compléter.
# installe les dépendances
npm install
# importe les données au format .json
# depuis google spreadsheets vers './tools/sources'
npm run import
# crée les tables dans la base de données
# et importe les données depuis './tools/sources'
npm run migrate
Développement
# démarre le serveur avec nodemon
npm run dev
Docker
Environnement de développement
Pour développer sans installer PostgreSQL localement.
# démarre l'application et la base de données dans des conteneurs Docker
# en mode `development`
# accessible à http://localhost:NODE_PORT
docker-compose -f ./docker-compose.localhost.yml up --build
Environnement de test
Pour tester l'application en local dans un environnement de production
Pré-requis:
- une installation locale active de https://github.com/jwilder/nginx-proxy
- un certificat ssl auto-signé
- instructions
# démarre l'application et la base de données dans des containers Docker
# en mode `production`
# accessible à https://api.camino.local
docker-compose -f ./docker-compose.local.yml up --build
Environnement de production
Pré-requis:
- une installation active de https://github.com/jwilder/nginx-proxy
- instructions
# démarre l'application et la base de données dans des containers Docker
# en mode `production`
# accessible à http://api.camino.beta.gouv.fr
docker-compose -f ./docker-compose.prod.yml up -d --build
Structure des fichiers
.
├── index.js # `point d'entrée`
│
├── api # `API graphql`
│ ├── resolvers # `liens entre l'API et la base de données`
│ ├── schemas # `description des nœuds de l'API`
│ └── types # `types graphQl customs`
│
├── config #
│ ├── index.js # `variables globales`
│ └── knex.js # `connexion à la base de données`
│
├── database # `base de données PostgresQL`
│ ├── models # `modèles de la base de données (knex.js / objection.js)`
│ └── queries # `requêtes à la base de données (knex.js / objection.js)`
│
├── docs # `documentation et exemples`
│
├── tasks # `logique métier`
│ ├── _utils # `scripts de mise à jour de la base de données`
│ ├── daily # `scripts quotidiens (npm run daily)`
│ └── etape-update # `script effectués lors de la mise à jour d'une étape`
│
└── tools # `outils`
├── export # `exportation de la base de données vers des spreadsheets (npm run export)`
├── import # `import de spreadsheets vers des fichiers json dans /sources (npm run import)`
├── knex # `scripts de création et d'import de la base de données (npm run migrate)`
│ ├── migrations # `création de la base de données`
│ └── seeds # `import depuis les fichier /sources vers la base de données`
├── mailer # `utilitaire d'envoi d'email (Nodemailer)`
├── sources # `données sources sous forme de fichiers json`
└── utils #
PostgreSQL
Contribution
Voir contributing.md (en anglais) pour plus d'infos.
Crédits
Production
Équipe
- Guillaume Levieux, intrapreneur
- Joeffrey Arruyer, coach
- François Romain, développeur
Licence
Camino API, le cadastre minier numérique ouvert