Skip to content
Snippets Groups Projects

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:

# 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:

# 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

camino database schema


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

AGPL 3 ou plus récent