# 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](https://caddyserver.com/) web server, offering automatic HTTPS. Enjoy! ## Install Choose a domain's name for your project (project default: 'snc-demo.net'), then add those lines to your [hosts](https://linuxize.com/post/how-to-edit-your-hosts-file/) file : 127.0.0.1 local.api..fr 127.0.0.1 local.app..fr Run from the project directory : docker-compose build Copy the .env file and edit it if needed : cp .env.skeleton .env Edit the following files to update the directives with you domain name * docker/api/vhost.conf * docker/caddy/Caddyfile * api/.env * app/.env ## Run Run from the project directory : docker-compose up Install the API server : 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 snc_demo_app bash yarn install yarn dev > **Warning**: You will probably have to open a tab for both of the subdomains (`local.api..net` and > `local.api..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 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 should be served at https://local.app.snc-demo.fr/. ## Accessing the OpenAPI Interface The OpenAPI interface is available at: ``` https://local.api.snc-demo.net/api/docs ``` This interface provides documentation for all available API routes.