The source code of my old website.
Warning
This repository is no longer maintained!
For my new website, you should take a look at: https://github.com/ArmandPhilippot/apeu
The website is built with Next.js, WordPress as headless CMS and MDX. To translate the website in French, I use Formatjs. For syntax highlighting, I use Prism. Others dependencies are used, feel free to take a look at package.json.
In addition to WordPress, the backend use:
- ACF
- acf-post2post
- apcom-cpt (the custom post types used)
- wp-graphql
- wp-graphql-content-stats
- wp-graphql-get-extended
- wp-graphql-gravatar
- wp-graphql-send-mail
Even if the source code and the contents are under free licenses, I don't want to see pure clones of my website. So I use a private repo as submodule to handle MDX content. Its structure looks like:
/
|--assets/
|-- image.jpg
|-- image2.jpg
|--pages/
|-- page1.mdx
|-- page2.mdx
|--projects/
|-- project1.mdx
Other contents come from WordPress as headless CMS.
Clone this repo, then:
cp .env.example .envThen, in any case, you need a reverse-proxy if you want to bind the live app to a domain.
Make sure Docker and Docker Compose are installed then, you can run: sudo docker-compose up -d --build <service-name>.
<service-name> is optional. You don't need it the first time. However, if you want to rebuild and update only one container, it can be useful.
If you wish to use custom ports, you can edit your .env file and specify APP_DOCKER_PORT and APP_STAGING_DOCKER_PORT variables. By default the ports are respectively 3000 and 3200.
If you are using Docker Swarm, you can instead use the deploy script to ensure that environment variables are loaded:
sh ./bin/deploy.shJust run yarn build && yarn start.
Clone this repo, then:
cp .env.example .envAnd edit the different values.
Run the development server:
yarn devOpen http://localhost:3000 with your browser to see the result. Then, you can make your changes.
You can search for a component or develop a new component in isolation thanks to Storybook.
yarn storybookThe different components are divided into 4 categories (atomic design):
- Atoms
- Molecules
- Organisms
- Templates
But, to be honest, between Molecules and Organisms some components may be misclassified.
When editing strings that require translation, run:
yarn run i18n:extractThen copy/edit the corresponding strings inside src/i18n/fr.json.
If you need another language:
cp src/i18n/en.json src/i18n/[locale].jsonReplace [locale] with your desired locale. Then edit this file to translate all the strings.
Once ready, run to update the website translation:
yarn run i18n:compileThis project is configured to support both Jest and Cypress tests with Testing Library.
You can run both tests with yarn test.
The tests are located alongside components (src/components/).
You can run Jest tests with yarn test:unit.
The tests are located in tests/cypress/e2e/. All texts (to find an element) needs to be written in French since Next.js is configured to only accept this language.
You can run Cypress tests with yarn test:e2e.
The source code is licensed under the MIT license.
The contents are licensed under the CC BY SA license.