|
|
@@ -1,21 +1,32 @@
|
|
|
-# Model: Symfony+Nuxt+Caddy
|
|
|
+# Fullstack demo : Symfony + Nuxt + Caddy
|
|
|
+
|
|
|
+This project is a full-stack web application demonstrating the integration of modern web technologies through a
|
|
|
+Docker Compose setup.
|
|
|
+
|
|
|
+It serves as both a proof of concept and a starter template for developers looking to work with this particular
|
|
|
+technology stack.
|
|
|
+
|
|
|
+The backend is built with [Symfony 7](https://symfony.com/) and [API Platform 4](https://api-platform.com/).
|
|
|
+The frontend uses [Nuxt.js 3](https://nuxt.com/) with [Vuetify](https://vuetifyjs.com/en) components and [TypeScript](https://www.typescriptlang.org/).
|
|
|
+The entire application is served through Caddy web server, offering automatic HTTPS.
|
|
|
+Enjoy!
|
|
|
|
|
|
## Install
|
|
|
|
|
|
-Add those lines to your hosts file:
|
|
|
+Add those lines to your [hosts](https://linuxize.com/post/how-to-edit-your-hosts-file/) file :
|
|
|
|
|
|
127.0.0.1 local.api.<domain>.fr
|
|
|
127.0.0.1 local.app.<domain>.fr
|
|
|
|
|
|
-Run from the project directory:
|
|
|
+Run from the project directory :
|
|
|
|
|
|
docker-compose build
|
|
|
|
|
|
-Copy the .env file, and edit it if needed:
|
|
|
+Copy the .env file and edit it if needed :
|
|
|
|
|
|
cp .env.skeleton .env
|
|
|
|
|
|
-Edit the following files to update the directives whith you domain name
|
|
|
+Edit the following files to update the directives with you domain name (default: 'snc-demo.net')
|
|
|
|
|
|
* docker/api/vhost.conf
|
|
|
* docker/caddy/Caddyfile
|
|
|
@@ -24,47 +35,59 @@ Edit the following files to update the directives whith you domain name
|
|
|
|
|
|
## Run
|
|
|
|
|
|
-Run from the project directory:
|
|
|
+Run from the project directory :
|
|
|
|
|
|
docker-compose up
|
|
|
|
|
|
Install the API server :
|
|
|
|
|
|
- docker exec -it api bash
|
|
|
+ docker exec -it snc_demo_api bash
|
|
|
composer install --with-all-dependencies
|
|
|
bin/console doctrine:database:create
|
|
|
bin/console doctrine:schema:update --force
|
|
|
|
|
|
Start the nuxt server:
|
|
|
|
|
|
- docker exec -it app bash
|
|
|
+ docker exec -it snc_demo_app bash
|
|
|
yarn install
|
|
|
yarn dev
|
|
|
|
|
|
-> **Warning**: You will probably have to open a tab for both of the domains (`local.api.<domain>.fr` and
|
|
|
-> `local.api.<domain>.fr`) in your browser to add a security exception for the self-signed SSL certificate.
|
|
|
+> **Warning**: You will probably have to open a tab for both of the subdomains (`local.api.<domain>.net` and
|
|
|
+> `local.api.<domain>.net`) in your browser to add a security exception for the self-signed SSL certificate.
|
|
|
> Without it, the frontend's requests will be blocked as CORS errors.
|
|
|
|
|
|
|
|
|
## Add Fixtures
|
|
|
|
|
|
- ALTER TABLE `snc_demo`.`author` AUTO_INCREMENT = 1;
|
|
|
- INSERT INTO `snc_demo`.`author` (`name`)
|
|
|
- VALUES
|
|
|
- ('Artist 1'),
|
|
|
- ('Artist 2'),
|
|
|
- ('Artist 3');
|
|
|
-
|
|
|
- ALTER TABLE `snc_demo`.`song` AUTO_INCREMENT = 1;
|
|
|
- INSERT INTO `snc_demo`.`song` (`title`, `author_id`)
|
|
|
- VALUES
|
|
|
- ('Song A', 1),
|
|
|
- ('Song B', 1),
|
|
|
- ('Song C', 1),
|
|
|
- ('Song D', 2),
|
|
|
- ('Song E', 2),
|
|
|
- ('Song F', 3),
|
|
|
- ('Song G', 3);
|
|
|
+ docker exec -it snc_demo_db bash
|
|
|
+
|
|
|
+ mysql -u root -p'Hxb3aMXUPb3m%$Ai*' -D snc_demo -e "
|
|
|
+ ALTER TABLE `snc_demo`.`author` AUTO_INCREMENT = 1;
|
|
|
+ INSERT INTO `snc_demo`.`author` (`name`)
|
|
|
+ VALUES
|
|
|
+ ('Artist 1'),
|
|
|
+ ('Artist 2'),
|
|
|
+ ('Artist 3');
|
|
|
+
|
|
|
+ ALTER TABLE `snc_demo`.`song` AUTO_INCREMENT = 1;
|
|
|
+ INSERT INTO `snc_demo`.`song` (`title`, `author_id`)
|
|
|
+ VALUES
|
|
|
+ ('Song A', 1),
|
|
|
+ ('Song B', 1),
|
|
|
+ ('Song C', 1),
|
|
|
+ ('Song D', 2),
|
|
|
+ ('Song E', 2),
|
|
|
+ ('Song F', 3),
|
|
|
+ ('Song G', 3);
|
|
|
+ "
|
|
|
+
|
|
|
+> Warning : If you plan to use this as a starter for your own project, don't forget to change the
|
|
|
+> DB password !
|
|
|
+
|
|
|
+
|
|
|
+## Try it
|
|
|
+
|
|
|
+At this point, the application shall be served at https://local.app.snc-demo.fr/.
|
|
|
|
|
|
|
|
|
## Accessing the OpenAPI Interface
|
|
|
@@ -72,7 +95,7 @@ Start the nuxt server:
|
|
|
The OpenAPI interface is available at:
|
|
|
|
|
|
```
|
|
|
-https://local.api.snc-demo.fr/api/docs
|
|
|
+https://local.api.snc-demo.net/api/docs
|
|
|
```
|
|
|
|
|
|
This interface provides documentation for all available API routes.
|