Skip to content

Commit

Permalink
use strapi as CMS
Browse files Browse the repository at this point in the history
  • Loading branch information
rtaieb committed Jan 8, 2024
1 parent 509d3cd commit 4eb0a7b
Show file tree
Hide file tree
Showing 89 changed files with 25,155 additions and 36 deletions.
16 changes: 16 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
root = true

[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true

[{package.json,*.yml}]
indent_style = space
indent_size = 2

[*.md]
trim_trailing_whitespace = false
23 changes: 23 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
#Strapi
HOST=0.0.0.0
PORT=1337
APP_KEYS="toBeModified1,toBeModified2"
API_TOKEN_SALT=tobemodified
ADMIN_JWT_SECRET=tobemodified
TRANSFER_TOKEN_SALT=tobemodified
JWT_SECRET=tobemodified
# Database
DATABASE_CLIENT=postgres
DATABASE_HOST=tobemodified
DATABASE_PORT=5433
DATABASE_NAME=tobemodified
DATABASE_USERNAME=tobemodified
DATABASE_PASSWORD=tobemodified
DATABASE_SSL=false
JWT_SECRET=tobemodified
#S3
SCALEWAY_ACCESS_KEY_ID=tobemodified
SCALEWAY_ACCESS_SECRET=tobemodified
SCALEWAY_ENDPOINT=https://s3.fr-par.scw.cloud
SCALEWAY_BUCKET=tobemodified
SCALEWAY_REGION=fr-par
6 changes: 1 addition & 5 deletions .github/workflows/deploy-prod.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,9 @@ jobs:
with:
node-version: 18.17.1

- uses: pnpm/[email protected]
with:
version: 8.7.0

# Runs a single command using the runners shell
- name: Install dependencies
run: pnpm install
run: npm install

# Runs a set of commands using the runners shell
- name: Run a multi-line script
Expand Down
69 changes: 64 additions & 5 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,58 @@ $RECYCLE.BIN/
*.msm
*.msp


############################
# Packages
############################

*.7z
*.csv
*.dat
*.dmg
*.gz
*.iso
*.jar
*.rar
*.tar
*.zip
*.com
*.class
*.dll
*.exe
*.o
*.seed
*.so
*.swo
*.swp
*.swn
*.swm
*.out
*.pid


############################
# Logs and databases
############################

.tmp
*.log
*.sql
*.sqlite
*.sqlite3


############################
# Misc.
############################

*#
ssl
.idea
nbproject
public/uploads/*
!public/uploads/.gitkeep

############################
# Node.js
############################
Expand All @@ -44,13 +96,20 @@ node_modules
.node_history

############################
# CUSTOM
# Tests
############################
/.env

coverage

############################
# IDE files
# Strapi
############################
.idea
.vscode

.env
license.txt
exports
*.cache
dist
build
.strapi-updater.json

26 changes: 26 additions & 0 deletions .strapi/client/app.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
/**
* This file was automatically generated by Strapi.
* Any modifications made will be discarded.
*/
import contentVersioning from "@notum-cz/strapi-plugin-content-versioning/strapi-admin";
import dragDropContentTypes from "@retikolo/drag-drop-content-types/strapi-admin";
import strapiCloud from "@strapi/plugin-cloud/strapi-admin";
import graphql from "@strapi/plugin-graphql/strapi-admin";
import i18N from "@strapi/plugin-i18n/strapi-admin";
import usersPermissions from "@strapi/plugin-users-permissions/strapi-admin";
import multiSelect from "strapi-plugin-multi-select/strapi-admin";
import ckeditor from "../../src/plugins/strapi-plugin-ckeditor/strapi-admin";
import { renderAdmin } from "@strapi/strapi/admin";

renderAdmin(document.getElementById("strapi"), {
plugins: {
"content-versioning": contentVersioning,
"drag-drop-content-types": dragDropContentTypes,
"strapi-cloud": strapiCloud,
graphql: graphql,
i18n: i18N,
"users-permissions": usersPermissions,
"multi-select": multiSelect,
ckeditor: ckeditor,
},
});
62 changes: 62 additions & 0 deletions .strapi/client/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
<!DOCTYPE html>
<html lang="en">
<!--
This file was automatically generated by Strapi.
Any modifications made will be discarded.
-->
<head>
<meta charset="utf-8" />
<meta
name="viewport"
content="width=device-width, initial-scale=1, viewport-fit=cover"
/>
<meta name="robots" content="noindex" />
<meta name="referrer" content="same-origin" />
<title>Strapi Admin</title>
<style>
html,
body,
#strapi {
height: 100%;
}
body {
margin: 0;
-webkit-font-smoothing: antialiased;
}
</style>
</head>
<body>
<div id="strapi"></div>
<noscript
><div class="strapi--root">
<div class="strapi--no-js">
<style type="text/css">
.strapi--root {
position: absolute;
top: 0;
right: 0;
left: 0;
bottom: 0;
background: #fff;
}

.strapi--no-js {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
text-align: center;
font-family: helvetica, arial, sans-serif;
}
</style>
<h1>JavaScript disabled</h1>
<p>
Please
<a href="https://www.enable-javascript.com/">enable JavaScript</a>
in your browser and reload the page to proceed.
</p>
</div>
</div></noscript
>
</body>
</html>
36 changes: 10 additions & 26 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,53 +4,37 @@ Le but de la startup d'état Plus fraîche ma ville est d'accompagner les collec

Ce repository concerne le CMS qui servira à alimenter la V2 du site https://plusfraichemaville.fr .

Ce CMS est [Directus](https://directus.io/).
Ce CMS est Strapi.


# Installation en local

### Démarrage de la base de données

Afin de pouvoir fonctionner, Directus a besoin d'une base de données PostgreSQL.

Il est possible d'utiliser la procédure d'installation de la base décrite dans [le repository du site Plus fraîche ma ville](https://github.com/incubateur-ademe/plusfraichemaville-site).

⚠️ En production, les tables liés à Directus sont installées sur le schéma "directus" de la base de données
Afin de pouvoir fonctionner, Strapi a besoin d'une base de données PostgreSQL.

### Configuration

Afin de faire tourner le CMS en local, il faut copier créer à la racine du projet un fichier .env à partir de [ce fichier d'exemple](./.env.dist).
Afin de faire tourner le CMS en local, il faut copier créer à la racine du projet un fichier .env à partir de [ce fichier d'exemple](./.env.example).

### Initialisation du schéma de la base
Afin d'initialiser la base de données avec le schéma utilisé par Plus fraîche ma ville, il est nécessaire d'appliquer [le snapshot présent dans le repository](./db/snapshot.yaml) avec la commande suivante :
Cela permettra à l'instance en local de se connecter à la base de données, et à un bucket S3 pour les médias.

```shell
npm exec directus schema apply ./db/snapshot.yaml
```
### Initialisation du schéma de la base
Le schéma de la base sera automatiquement créé / mis à jour par Strapi au démarrage du serveur.


### Démarrage

Démarrez ensuite le serveur en mode développement :

```shell
pnpm start
```

# Soumission d'un nouveau modèle de données

## Base de données

Afin de répercuter les modifications du modèle de données faite en local sur les autres environnements, il faut d'abord mettre à jour le snapshot du modèle:

```shell
pnpm create-db-snapshot
npm run develop
```

Une fois ce modèle créé, il suffira de le push sur la branche "prod" pour qu'il soit automatiquement appliqué à la base CMS de production, à l'aide de la commande incluse dans le fichier [Procfile](./Procfile)

## Classe typescript

Pour générer les classes Typescript à jour, on utilise le plugin [directus-extension-generate-types ](https://github.com/maltejur/directus-extension-generate-types)
Les classes peuvent donc être récupérées dans ce repository dans les fichiers [contentTypes.d.ts](./types/generated/contentTypes.d.ts) et [components.d.ts](./types/generated/components.d.ts).
Ils sont automatiquement mis à jours lors de la modification de schéma dans l'interface "content builder" de l'admin de Strapi.

Les classes peuvent donc être récupérées dans l'interface de Directus avant d'être copiées dans [le repo du site](https://github.com/incubateur-ademe/plusfraichemaville-site).
Ces fichiers sont récupérés et utilisés tels quels dans [le repo NextJS](https://github.com/incubateur-ademe/plusfraichemaville-site) du site https://plusfraichemaville.fr .
17 changes: 17 additions & 0 deletions config/admin.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
export default ({ env }) => ({
auth: {
secret: env('ADMIN_JWT_SECRET'),
},
apiToken: {
salt: env('API_TOKEN_SALT'),
},
transfer: {
token: {
salt: env('TRANSFER_TOKEN_SALT'),
},
},
flags: {
nps: env.bool('FLAG_NPS', true),
promoteEE: env.bool('FLAG_PROMOTE_EE', true),
},
});
7 changes: 7 additions & 0 deletions config/api.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
export default {
rest: {
defaultLimit: 25,
maxLimit: 100,
withCount: true,
},
};
Loading

0 comments on commit 4eb0a7b

Please sign in to comment.