import NotV5 from '/docs/snippets/_not-updated-to-v5.md'
Backend customization: An examples cookbook using FoodAdvisor#
The present section of the documentation is intended for developers who would like to get a deeper understanding of the Strapi back end customization possibilities.
The section is a collection of examples that demonstrate how the core components of the back-end server of Strapi can be used in a real-world project. Front-end code that interacts with the back end may also be part of some examples, but displayed in collapsed blocks by default since front-end code examples are not the main focus of this cookbook.
Examples are meant to extend the features of , the official Strapi demo application. FoodAdvisor builds a ready-made restaurants directory powered by a Strapi back end (included in the /api folder) and renders a -powered front-end website (included in the /client folder).
- đź‘€ You have read the Quick Start Guide and/or understood that Strapi is a headless CMS A headless CMS is a Content Management System that separates the presentation layer (i.e., the front end, where content is displayed) from the back end (where content is managed).
Strapi is a headless CMS that provides:- a back-end server exposing an API for your content,
- and a graphical user interface, called the admin panel, to manage the content.
- đź‘€ You have read the back-end customization introduction to get a general understanding of what routes, policies, middlewares, controllers, and services are in Strapi.
- đź‘· If you want to test and play with the code examples by yourself, ensure you have cloned the repository, setup the project, and started both the front-end and back-end servers. The Strapi admin panel should be accessible from and the Next.js-based FoodAdvisor front-end website should be running on .
This section can be read from start to finish, or you might want to jump directly to a specific page to understand how a given core element from the Strapi back end can be used to solve a real-world use case example:
| I want to understand… | Dedicated page |
|---|---|
| How to authenticate my queries | Authentication flow with JWT |
| How and when to use custom controllers and services | Custom controllers and services examples |
| How to use custom policies and send custom errors | Custom policies examples |
| How to configure and use custom routes | Custom routes examples |
| How and when to use custom global middlewares | Custom middleware example |