This is a project that combines PHP backend using the Laravel framework and React frontend, also utilizing the MySQL database. The project was developed to complete the G1learn challenge.
The entire app is containerized with Docker 🐋!
All information such as created posts, comments, and registered users will be stored in the database.
Before starting to use the project, you need to set up the development environment. Follow the steps below to configure the necessary environment. (It's really quick!)
For example: git clone [email protected]:duarte-dot/g1learn-fullstack.git
Modify the env.example
file in the backend
directory to .env
.
(The file should look like this):
![Login screen](https://private-user-images.githubusercontent.com/78454964/246564873-ba3b7cea-ec74-4d9a-acdb-ad68669bfc0c.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjMxODUwMTQsIm5iZiI6MTcyMzE4NDcxNCwicGF0aCI6Ii83ODQ1NDk2NC8yNDY1NjQ4NzMtYmEzYjdjZWEtZWM3NC00ZDlhLWFjZGItYWQ2ODY2OWJmYzBjLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODA5VDA2MjUxNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTkzMzMyMGRkZTIzZGYyZWZmYTNhMDQyNDFjODU1YjYwZWQyZWY5OWMzY2YwZjU0ZGUzMTNjOGU1MWE0YmQ5ODYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.hnVqxoSEBrVB-Z5WaiecASuyKKJ9LlnCLY9fjOOQ9tA)
Run the commands:
cd frontend && npm i && cd ..
- installs frontend dependencies
cd backend && composer i && cd ..
- installs backend dependencies
In the project folder, open a terminal and use the command docker-compose up -d
Use the command php artisan migrate && php artisan db:seed
If it asks for permission, probably type "yes" in the terminal.
It will run the following two commands together, allowing us to populate our database with some fictional data:
![Login screen](https://private-user-images.githubusercontent.com/78454964/246564779-8dcb35c3-d276-4790-96dd-44179cfb6e95.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjMxODUwMTQsIm5iZiI6MTcyMzE4NDcxNCwicGF0aCI6Ii83ODQ1NDk2NC8yNDY1NjQ3NzktOGRjYjM1YzMtZDI3Ni00NzkwLTk2ZGQtNDQxNzljZmI2ZTk1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODA5VDA2MjUxNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTdlM2YzMDE1OTU1ZWExZGY5ZmUwNjMzYWJhMmM1ZTRhN2VjMWMzZmIxMGMwOWM5N2QwOTAzN2NmMWM0OThkMjImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.12YynizOK-lGMvLSTAzPTG-y-Z4PDwb8LT-ZKqy8uPU)
![Login screen](https://private-user-images.githubusercontent.com/78454964/246564816-ce9aec52-73c1-49c3-9c00-ac17aea6ed54.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjMxODUwMTQsIm5iZiI6MTcyMzE4NDcxNCwicGF0aCI6Ii83ODQ1NDk2NC8yNDY1NjQ4MTYtY2U5YWVjNTItNzNjMS00OWMzLTljMDAtYWMxN2FlYTZlZDU0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODA5VDA2MjUxNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTJlNjkyYzU1NTMxN2UyNDk3MTA2NzZlNzRlMmZmOTI4NDBiOGRhNjM2YzVjNjEzNjc2NmNiZDJiYTk0Yzg5M2YmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.jtrIWUt4oAudmenCs0WQofwZWdj4_-6sXQ76LLPgfAs)
If you followed all the steps correctly, you can access the project through the route http://localhost:3000/
![Login screen](https://private-user-images.githubusercontent.com/78454964/246562634-cbf7200a-a94d-47da-94c2-998c12e1d6e4.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjMxODUwMTQsIm5iZiI6MTcyMzE4NDcxNCwicGF0aCI6Ii83ODQ1NDk2NC8yNDY1NjI2MzQtY2JmNzIwMGEtYTk0ZC00N2RhLTk0YzItOTk4YzEyZTFkNmU0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODA5VDA2MjUxNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWY5NzZjZTgwOGNiZTcyOWE1YWFiMzIxY2RkNjMxZTQ5M2YwOWRmOWU1YTgxZTBhZDEzYThlZWIzNDI1YjU0MmQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.qXLEe63if5B1ur2N-Qe47muRLAZ82PYx4yMDmPCjBpE)
![Registration screen](https://private-user-images.githubusercontent.com/78454964/246562927-93c57756-7bd1-4e3e-8edb-fb50803800cc.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjMxODUwMTQsIm5iZiI6MTcyMzE4NDcxNCwicGF0aCI6Ii83ODQ1NDk2NC8yNDY1NjI5MjctOTNjNTc3NTYtN2JkMS00ZTNlLThlZGItZmI1MDgwMzgwMGNjLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODA5VDA2MjUxNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTUzNGYzZGVhZTUzZjE2ZmFhZmFhOTUxN2ZkOTgxZTkxMWUwZDdhZWNjOTgxYTRjM2NhZTM3NDU2Zjc0ZGE3ZTcmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.jqd-6FMhQGVSRHuzwWaAjdht4U-LicRV5gdRcIcAT08)
![Home](https://private-user-images.githubusercontent.com/78454964/246562985-272b2def-e5e6-4dc4-b79b-b1426f13c56c.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjMxODUwMTQsIm5iZiI6MTcyMzE4NDcxNCwicGF0aCI6Ii83ODQ1NDk2NC8yNDY1NjI5ODUtMjcyYjJkZWYtZTVlNi00ZGM0LWI3OWItYjE0MjZmMTNjNTZjLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODA5VDA2MjUxNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTEzM2FlMjhiNzIzMmU1YjhhM2YxMzA0ZTAwZWViNWFhMDExYjc1MzJjYTA0OTVjNzRmODFiZWUzMzE5ODU3ODImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.HnrmVArlC8IrdorMbuEjGD10tbjv72TZaFWpIWmYJuU)
![Create discussion](https://private-user-images.githubusercontent.com/78454964/246563219-84226bd9-46e1-4d37-a051-6b83edc8c910.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjMxODUwMTQsIm5iZiI6MTcyMzE4NDcxNCwicGF0aCI6Ii83ODQ1NDk2NC8yNDY1NjMyMTktODQyMjZiZDktNDZlMS00ZDM3LWEwNTEtNmI4M2VkYzhjOTEwLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODA5VDA2MjUxNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTMwMzNjMWZmMWIxYWNhNWZlNTA4ZjBiMWI0ZjRjZmU0ZDVmYmRlZDhjMjM3MWFjN2ZhY2JjYmYwNzU5Y2YxNGUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.e_wPi7EyJsovvpvQZ35t5WhZmHwpX_Ujqvh_cNCLYho)
![Users screen](https://private-user-images.githubusercontent.com/78454964/246563312-170e473e-e661-438d-9a81-cc4c7040dc3e.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjMxODUwMTQsIm5iZiI6MTcyMzE4NDcxNCwicGF0aCI6Ii83ODQ1NDk2NC8yNDY1NjMzMTItMTcwZTQ3M2UtZTY2MS00MzhkLTlhODEtY2M0YzcwNDBkYzNlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODA5VDA2MjUxNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWVjN2QxOTg0YzA5ZTJiYTRjNDcwZjMzNjE5MmQ0M2ZhNGViNmI5MmNlY2VhNTZhOWE4ZTU4NDU5OWE1YTFhNDUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.gsPZTEelk5YuQ0slDa76wDMcbOZFpus1dEXAF-KgGtE)
![Post screen](https://private-user-images.githubusercontent.com/78454964/246563338-357318c9-a23b-481a-8334-343f6fd3723a.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjMxODUwMTQsIm5iZiI6MTcyMzE4NDcxNCwicGF0aCI6Ii83ODQ1NDk2NC8yNDY1NjMzMzgtMzU3MzE4YzktYTIzYi00ODFhLTgzMzQtMzQzZjZmZDM3MjNhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODA5VDA2MjUxNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTQxZTI3MzgyMTI0MWVlZmUwZTNkYjRiMmU1NTVhMTdkMDFhNGU2ZWMxYzQwMWVkYjkxNmZkOGQ2OTg5NTg4YzAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.oHUO2Hk5bpDrvKsNr2g68z3il3p6Ypu6V0MYo0-lEr4)
![Post comments](https://private-user-images.githubusercontent.com/78454964/246563472-913b496a-3fb3-4a27-be54-15bd1164f3e4.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjMxODUwMTQsIm5iZiI6MTcyMzE4NDcxNCwicGF0aCI6Ii83ODQ1NDk2NC8yNDY1NjM0NzItOTEzYjQ5NmEtM2ZiMy00YTI3LWJlNTQtMTViZDExNjRmM2U0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODA5VDA2MjUxNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWJlZTVhZGE0MTBkMzZlYWRhMWQ0ZWU3MWQ0NDUzMGIwMDc2OGQ0YzQ4MmJmMDI2ZDRiMDc4MGQzMmVhYWU0OTQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.I2_CM7oUVaGNnS2WUJ-Dq2MJ7TMMkOpWNP_aJRwMP4M)
![Edit comment](https://private-user-images.githubusercontent.com/78454964/246563700-2fabdd89-8b7f-41d7-9ae4-97411cba2564.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjMxODUwMTQsIm5iZiI6MTcyMzE4NDcxNCwicGF0aCI6Ii83ODQ1NDk2NC8yNDY1NjM3MDAtMmZhYmRkODktOGI3Zi00MWQ3LTlhZTQtOTc0MTFjYmEyNTY0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODA5VDA2MjUxNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTMxNGYxYmNjMTFkMThlNDM3ODM3OWQ5NmQyODU4NzkzMjc3MTE3MTAzYzQ0MjQzMTM2ZGY5YjQ5ODA3MTkxM2YmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.33SElD1puhXc3ms2v_QTqrd55rkqVaQ3gxHoGI0WMTc)
![Edited comment](https://private-user-images.githubusercontent.com/78454964/246563892-e55ec42c-2769-44af-bd73-6cebc67ed7a2.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjMxODUwMTQsIm5iZiI6MTcyMzE4NDcxNCwicGF0aCI6Ii83ODQ1NDk2NC8yNDY1NjM4OTItZTU1ZWM0MmMtMjc2OS00NGFmLWJkNzMtNmNlYmM2N2VkN2EyLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODA5VDA2MjUxNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTIzZjFmOTBkZTE4OWQ3MTY0OTIxMzBkMjNmY2RlYjhkNjdmYzhiMDcxOGZhOGQ0YjZhZGVlODg0NzMyMjA5MjMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.KcxC_qghvotV3hj9rlqhDxtthd91VA9C1h9uF8W88uQ)
![Edit post](https://private-user-images.githubusercontent.com/78454964/246564046-a19171c5-f114-40da-8d25-5fa1e6164e17.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjMxODUwMTQsIm5iZiI6MTcyMzE4NDcxNCwicGF0aCI6Ii83ODQ1NDk2NC8yNDY1NjQwNDYtYTE5MTcxYzUtZjExNC00MGRhLThkMjUtNWZhMWU2MTY0ZTE3LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODA5VDA2MjUxNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTk0ZTE5Y2Q0ZWZkMzhhNGVmYzdkNjhjNjE1MWY1MTJmNGE1ZTcyMGNiYTBhZDA0ZGNhOTNkZGM4NWFjYTBlYmQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.CSPiboh9oxOJfjZfgTuKOPuScDQci7wZJx2jrTFyWZ0)
![Post edit](https://private-user-images.githubusercontent.com/78454964/246564076-102b9953-8e52-4fd3-8ba6-80e2d385e86f.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjMxODUwMTQsIm5iZiI6MTcyMzE4NDcxNCwicGF0aCI6Ii83ODQ1NDk2NC8yNDY1NjQwNzYtMTAyYjk5NTMtOGU1Mi00ZmQzLThiYTYtODBlMmQzODVlODZmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODA5VDA2MjUxNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWQ3MWJhMjRmMjIyOWM5YzE1YzQ0Y2YwZmYwOTc1OGU0ZDA5MDUzN2UwMWU0ZTQ0YzY3OGY5NzY4ZmE4NmVjMzAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.AJXDXDNHrffwHTxxSLZBOyp7E8BOI7NxvYVRFBCKZ1I)
![Mobile version](https://private-user-images.githubusercontent.com/78454964/246564132-336351f0-04e6-4049-82af-d83907b10d8a.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjMxODUwMTQsIm5iZiI6MTcyMzE4NDcxNCwicGF0aCI6Ii83ODQ1NDk2NC8yNDY1NjQxMzItMzM2MzUxZjAtMDRlNi00MDQ5LTgyYWYtZDgzOTA3YjEwZDhhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODA5VDA2MjUxNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTQyNDUyYjU0OGVjNmE1NmU3MjU0ZTYzZDI2MzgwMzU5OTY4NmNiNWNiNTMxN2Q3ODUzOTNmMzIzNmQxMjI5Y2UmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.wCNiY1xXVccci7TK7pZGPrPQBbDtZVzIPuTT6ye_P6g)
![Mobile version](https://private-user-images.githubusercontent.com/78454964/246564286-7795c294-726b-4784-932f-9934052de9a8.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjMxODUwMTQsIm5iZiI6MTcyMzE4NDcxNCwicGF0aCI6Ii83ODQ1NDk2NC8yNDY1NjQyODYtNzc5NWMyOTQtNzI2Yi00Nzg0LTkzMmYtOTkzNDA1MmRlOWE4LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODA5VDA2MjUxNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTU3YjM4OTk5MjEyODc4M2JmODJiNzViNGU0MjY0ZTA4MWIwMmUwODk3YjYwY2JiNzRlNDZhNGY0NTc1YmEyODAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.ng0n1saccbEBJnx1jK58fVYD1TkXbfGj-sujNWWoKnM)
![Mobile version](https://private-user-images.githubusercontent.com/78454964/246564334-d9f79e4d-af1c-4cf9-824d-6740bde02677.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjMxODUwMTQsIm5iZiI6MTcyMzE4NDcxNCwicGF0aCI6Ii83ODQ1NDk2NC8yNDY1NjQzMzQtZDlmNzllNGQtYWYxYy00Y2Y5LTgyNGQtNjc0MGJkZTAyNjc3LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODA5VDA2MjUxNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTgyZTdhYTE3NjM0MzBkZmEzN2IxY2U4ODljYzg2MDQ5MmNmMzQ3YWQ3ZGVmMGMxZDBkZWY0ZmQ4MDZkZDg0ODcmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.GDm0wkVd3GBH95FBB5_M4BLXDRPicF8-OerHJV8k24o)
![Mobile version](https://private-user-images.githubusercontent.com/78454964/246564348-49136b06-866a-403f-8aa7-865f8a4534ce.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjMxODUwMTQsIm5iZiI6MTcyMzE4NDcxNCwicGF0aCI6Ii83ODQ1NDk2NC8yNDY1NjQzNDgtNDkxMzZiMDYtODY2YS00MDNmLThhYTctODY1ZjhhNDUzNGNlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODA5VDA2MjUxNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTBjOGJhZDQ5MDZkOGU3ODVhNTkzMmExYTRlODlmMTA3YTc0ZGJiNzdkNDA5MWI4ODFmMDIxOGVjODNhOWZkMGUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.NjBIOD_CgsVIOkwuKQQu_pAxX68sWJJoBSve6nvfGg0)
![Mobile version](https://private-user-images.githubusercontent.com/78454964/246564368-062efb08-4197-4f22-92ad-9debb6c9d183.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjMxODUwMTQsIm5iZiI6MTcyMzE4NDcxNCwicGF0aCI6Ii83ODQ1NDk2NC8yNDY1NjQzNjgtMDYyZWZiMDgtNDE5Ny00ZjIyLTkyYWQtOWRlYmI2YzlkMTgzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODA5VDA2MjUxNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWI5ZDdlMDAzYWM0NGE3MWQ4NzEzZGQ1MmM4MDdhZjRiM2U1NDhhNDYwNmI1MTcwOGZjYTIyNmIxNjlhMWMzYmYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.2lxvIxv4RNamWJwPg2HEhVZyVV5y_V46bgcf_odH1Qk)
![Mobile version](https://private-user-images.githubusercontent.com/78454964/246564390-02455a82-f532-48be-a16d-62788310ff05.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjMxODUwMTQsIm5iZiI6MTcyMzE4NDcxNCwicGF0aCI6Ii83ODQ1NDk2NC8yNDY1NjQzOTAtMDI0NTVhODItZjUzMi00OGJlLWExNmQtNjI3ODgzMTBmZjA1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODA5VDA2MjUxNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWZjOTg0NTFkYjVlOTFjOTIxMGI1ZTk3NWYxYzJjMjA3ODYyOWUwZGNiNTVmNjcyNjgyMDFhMWFjNmMzMTNjNmMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.RcymQ3OF8V6AONfUvQvfCkOUc-xbh1xcMlDiLI7XTKo)
An API was created for integration with the frontend with the following Controllers:
![API Controllers](https://private-user-images.githubusercontent.com/78454964/246564572-9e0c8f1f-09ba-44f1-812c-50b681f2245d.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjMxODUwMTQsIm5iZiI6MTcyMzE4NDcxNCwicGF0aCI6Ii83ODQ1NDk2NC8yNDY1NjQ1NzItOWUwYzhmMWYtMDliYS00NGYxLTgxMmMtNTBiNjgxZjIyNDVkLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODA5VDA2MjUxNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTVlMjQzYmNmOGU5NjdjMDU2MjQwYWFhYjY5N2U1ZjRkZmYyNDkwZjQ4NzJjNDRmY2FiY2Q1OGYwMWMyZDc1Y2MmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.iLj2Aug2HPg67VL3i9dOk0CV7wWu-zi2H66vBMRa96c)
The Frontend was developed in React with the following structure:
![Frontend structure](https://private-user-images.githubusercontent.com/78454964/246564621-385457da-2c5f-4b3c-8939-94583383a14d.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjMxODUwMTQsIm5iZiI6MTcyMzE4NDcxNCwicGF0aCI6Ii83ODQ1NDk2NC8yNDY1NjQ2MjEtMzg1NDU3ZGEtMmM1Zi00YjNjLTg5MzktOTQ1ODMzODNhMTRkLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODA5VDA2MjUxNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWMxMDUwNjA0NmUyNDFjNjFkYzI1MjQxNzA0ZGExZDk2MjgzNzE1OWViNTljNTdjZWI4ZTA3OGQ5ZTdkNDMwMDYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.mPtN0kSAmo28YJEeZzQXZsbGwGJdCjB9VK6DN-DX7dk)
![Frontend structure](https://private-user-images.githubusercontent.com/78454964/246564645-1d347742-f7ab-4e00-8d85-cfee6cfdf525.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjMxODUwMTQsIm5iZiI6MTcyMzE4NDcxNCwicGF0aCI6Ii83ODQ1NDk2NC8yNDY1NjQ2NDUtMWQzNDc3NDItZjdhYi00ZTAwLThkODUtY2ZlZTZjZmRmNTI1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODA5VDA2MjUxNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTI0ODA4MzFmZTdlNWY4NTA4NTk3YTFkZDc4OWFkZjExYjkxNDkzMTdhZGZmMGU0MzE4M2Q4ZTE0NjgxNjg3Y2QmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.MHBhzVczBo8mLsHhio6YqwGdKRU_5xKhAVMLGvIVhYs)
You can try to access the routes via a request application. There is also the ThunderClient extension for VSCode, but I recommend Insomnia:
![CRUD Systems](https://private-user-images.githubusercontent.com/78454964/246564700-38f3df36-2646-471a-ad28-b5fc9831dc0c.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjMxODUwMTQsIm5iZiI6MTcyMzE4NDcxNCwicGF0aCI6Ii83ODQ1NDk2NC8yNDY1NjQ3MDAtMzhmM2RmMzYtMjY0Ni00NzFhLWFkMjgtYjVmYzk4MzFkYzBjLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODA5VDA2MjUxNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTQxYzE0NjQ0ZWYzNWI1MmQ1OWUwYjYyMTFmMDAxMDY5Y2Q3Njg4M2UwMjE0M2RhYTc4YjcwY2I0NjU2NGVhYjcmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.AVihdFw2pMRa-jGOtK9Och1_YfP8y34vqTdoCP6z8iI)
I plan to continue working on the project and adding more features. If you have any suggestions, feel free to let me know! (Or, feel free to contribute and add)
Phone / Whatsapp: (21) 9 7568-1618
Email: [email protected]
Linkedin: https://www.linkedin.com/in/gabriel-duarte-dev/
Features I'm still considering adding:
- Creating categories through the Frontend. (Already possible through routes with requests)
- Profile pictures for users
- Unit tests