{"id":22546433,"url":"https://github.com/danilowa/backendflag-app","last_synced_at":"2025-09-09T16:35:09.871Z","repository":{"id":107219225,"uuid":"525002496","full_name":"DaniloWA/backEndFlag-app","owner":"DaniloWA","description":null,"archived":false,"fork":false,"pushed_at":"2022-09-20T08:41:43.000Z","size":7877,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-02T09:30:53.767Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DaniloWA.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-08-15T13:42:15.000Z","updated_at":"2022-10-01T11:11:54.000Z","dependencies_parsed_at":null,"dependency_job_id":"0c7ffa41-2bf1-4507-bd78-891902c68703","html_url":"https://github.com/DaniloWA/backEndFlag-app","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DaniloWA%2FbackEndFlag-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DaniloWA%2FbackEndFlag-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DaniloWA%2FbackEndFlag-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DaniloWA%2FbackEndFlag-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DaniloWA","download_url":"https://codeload.github.com/DaniloWA/backEndFlag-app/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245999321,"owners_count":20707554,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-07T15:07:37.906Z","updated_at":"2025-03-28T08:45:37.859Z","avatar_url":"https://github.com/DaniloWA.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n\n# Api Gestão universidade - Projeto Final Backend Flag\n\nUma Api conceito para Gestão de universidades. Feito como projeto final no curso de desenvolvimento back-end no grupo flag cursos.\n\nEsse é um projeto desenvolvido em Laravel 9, que visa resolver um problema de gestão de uma universidade fictícia.\n\n\u003cbr\u003e\n\n![eer](/img/png-eer-api-backend-flag.png)\n\n\u003cbr\u003e\n\n---\n\n\u003cbr/\u003e\n\n## Índice\n### [Tecnologias](#destaque-das-tecnologias-utilizadas)\n\n### [Conceitos / Patterns](#destaque-dos-conceitos-e-patterns-utilizados)\n\n### [Pré-requisitos](#pré-requisitos)\n\n### [Rodando localmente](#rodando-localmente)\n\n### [Postman](#postman)\n- [Documentação interna Postman](/wiki/postman.md)\n\n### [Documentação da API](#documentação-da-api)\n\n- [Api Auth](#api-auth)\n\n  - [Documentação Auth](/wiki/api_auth.md)\n\n- [Estudantes](#estudantes)\n\n  - [Documentação Estudantes](/wiki/api_students.md)\n\n- [Cursos](#cursos)\n\n  - [Documentação Cursos](/wiki/api_courses.md)\n\n- [Professores](#professores)\n\n  - [Documentação Professores](/wiki/api_teachers.md)\n\n- [Matérias](#matérias)\n\n  - [Documentação Matérias](/wiki/api_subjects.md)\n\n- [Departamentos](#departamentos)\n\n  - [Documentação Departamentos](/wiki/api_departments.md)\n\n---\n\u003cbr/\u003e\n\u003cbr/\u003e\n\n\n## Destaque das tecnologias utilizadas\n\n| Tecnologias   | versão       | Descrição                           |\n| :---------- | :--------- | :---------------------------------- |\n| `PHP` | `8.1` | Uma linguagem de script de uso geral popular|\n| `Laravel` | `9.x` | O Framework PHP para Artesãos da Web|\n| `MySQL` | `15.x` | O MySQL é um sistema de gerenciamento de banco de dados, que utiliza a linguagem SQL como interface.|\n| `Laravel Debuger` | `3.7` | Monitoramento de erros e desempenho do Laravel|\n| `Guzzlehttp` | `7.4` | Guzzle é um cliente PHP HTTP que facilita o envio de solicitações HTTP.|\n| `Sanctum` | `3.0` | Laravel Sanctum Fornece um sistema de autenticação leve para SPAs (aplicativos de página única), aplicativos móveis e APIs simples baseadas em token. |\n| `Vite` | `3.0` | Vite é uma ferramenta de construção que foi inicialmente desenvolvida para Vue.js.|\n| `Postman` | `9.x` | Postman é uma plataforma de API para desenvolvedores projetar, construir, testar e iterar suas APIs.|\n| `Dbeaver` | `22.x` | DBeaver é um aplicativo de software cliente SQL e uma ferramenta de administração de banco de dados.|\n| `Migration` | `---` | As migrações são como controle de versão para seu banco de dados, permitindo que sua equipe defina e compartilhe a definição do esquema de banco de dados do aplicativo.|\n| `PSR-4`|  `---` | A PSR-4 é uma recomendação da comunidade PHP para organização e carregamento de arquivos e classes PHP.|\n\n\u003cbr\u003e\n\u003cbr\u003e\n\n## Destaque dos conceitos e patterns utilizados\n\n| Conceitos/Patterns    | Descrição                           |\n| :---------- | :---------------------------------- |\n| `MVC` | MVC é o acrônimo de Model-View-Controller é um padrão de projeto de software, ou padrão de arquitetura de software.|\n| `POO` | Programação orientada a objetos é um paradigma de programação baseado no conceito de \"objetos\".|\n| `PHP SOLID` | SOLID é um acrônimo para os primeiros cinco princípios de design orientado a objetos (OOD).|\n| `API RESTful `| Api Rest é uma interface de programação de aplicações (API ou API web) que está em conformidade com as restrições do estilo de arquitetura REST, permitindo a interação com serviços web RESTful. |\n| `Gitflow`| Gitflow é um fluxo de trabalho Git legado que originalmente era uma estratégia inovadora e disruptiva para gerenciar ramificações do Git.|\n| `Builder pattern`| Builder é um padrão de projeto de software criacional que permite a separação da construção de um objeto complexo da sua representação. |\n| `Factory pattern`| Use uma função de fábrica para criar objetos.|\n| `Provider pattern` | Disponibilize dados para vários componentes filhos.|\n| `Banco de dados relacional` | Um banco de dados relacional é um banco de dados que modela os dados de uma forma que eles sejam percebidos pelo usuário como tabelas, ou mais formalmente relações.|\n\n\u003cbr\u003e\n\n## Pré-requisitos\n\n- PHP ^8.1\n- MySql ^15\n- Laravel 9.x\n- Servidor Linux\n\n\u003cbr\u003e\n\n[Início](#api-gestão-universidade---projeto-final-backend-flag)\n\n---\n\n\u003cbr\u003e\n\u003cbr\u003e\n\n## Rodando localmente\n\n### Clone o projeto\n\n```bash\n  git clone https://github.com/DaniloWA/backEndFlag-app.git\n```\n\n### Entre no diretório do projeto\n\n```bash\n  cd backEndFlag-app/\n```\n\n### Copiar ficheiro environment\n\n```bash\n  cp .env.example .env\n```\n\n### Instale as dependências\n\n```bash\n  composer install\n```\n### Gerar key de criptografia\n\n\u003e Essa chave é usada pelo serviço de criptografia Illuminate e deve ser definida como uma cadeia aleatória de 32 caracteres, caso contrário, essas cadeias criptografadas não serão seguras. Faça isso antes de implantar um aplicativo!\n\n```bash\n  php artisan key:generate\n```\n\n### Definir configuração da conexão da base de dados\n#### Substitui essas linhas no ficheiro ./.env\n\n```bash\n  DB_CONNECTION=mysql\n  DB_HOST=127.0.0.1\n  DB_PORT=3306\n  DB_DATABASE=university\n  DB_USERNAME=root\n  DB_PASSWORD=\n```\n\u003e Caso o nome da base de dados seja diferente altere essa linha : DB_DATABASE= \\\u003c NOME_AQUI \\\u003e\n\n### Criando base de dados\n\n```bash\n  php artisan migrate\n```\n\n### (Opcional) Povoando base de dados com dados \n\n```bash\n  php artisan db:seed\n```\n### (Opcional) Ou pode rodar os ultimos dois passos em conjuto\n\n```bash\n  php artisan migrate --seed\n```\n\n\u003cbr\u003e\n\n[Início](#api-gestão-universidade---projeto-final-backend-flag)\n\n---\n\u003cbr\u003e\n\u003cbr\u003e\n\n# Postman\n\n### Importar suite de endpoints para o [Postman](/postman) (ficheiros)\n\n```bash\n  cd ./postman\n```\n\n\u003cbr\u003e\n\n### Passo a Passo para importação do ficheiro do endpoint pelo GUI\n\n![import collection](/img/gif-import-collection-api.gif)\n\n\u003cbr\u003e\n\n### Passo a Passo para importação do ficheiro do environment pelo GUI\n\n![import environment](/img/gif-import-environment-api.gif)\n\n\n#### (Opcional) Para visualizar os dados dos endpoints\n\n```bash\n  cat .\\postman\\api_backendflag.postman_collection.json \n```\n\n#### (Opcional) Para visualizar os dados do ambiente local do environment\n\n```bash\n  cat .\\postman\\api_backendflag.postman_environment.json\n\n```\n\n# Documentação das variáveis de environment  \n[Documentação](/wiki/postman.md) do Postman explicando variáveis e scripts.\n\n\u003cbr\u003e\n\n[Início](#api-gestão-universidade---projeto-final-backend-flag)\n\n---\n\u003cbr\u003e\n\u003cbr\u003e\n\n# Documentação da API\n\n# [Api Auth](/wiki/api_auth.md)\n\n\u003cbr\u003e\n\n## POST /register\n\n```\n  http://[SUA_URL]/api/auth/register\n```\n\u003cbr\u003e\n\n#### BODY\n\n![Body register](img/body_register.png)\n\n\u003cdetails\u003e \n  \u003csummary\u003eCode\u003c/summary\u003e\n\n```json\n{\n    \"name\": \"UserTeste\",\n    \"email\": \"User@gmail.com\",\n    \"password\": \"123123123\",\n    \"password_confirmation\": \"123123123\",\n    \"token_name\": \"Token do UserTeste\"\n}\n```\n\n\u003c/details\u003e\n\n\u003cbr\u003e\n\n#### Response 200\n\n![Response](img/response_success_register.png)\n\n\u003cdetails\u003e \n  \u003csummary\u003eCode\u003c/summary\u003e\n\n```json\n{\n    \"status\": \"Success\",\n    \"message\": \"User created!\",\n    \"data\": {\n        \"user\": {\n        \"name\": \"UserTeste\",\n        \"email\": \"user@gmail.com\",\n        \"updated_at\": \"2022-09-02T14:11:52.000000Z\",\n        \"created_at\": \"2022-09-02T14:11:52.000000Z\"\n        },\n        \"token\": \"1|etuMWNMmMVIgWOfDDiibQFhuIG3cc5NJS2RzzTys\"\n    }\n}\n```\n\n\u003c/details\u003e\n\n\u003cbr\u003e\n\n## POST /login\n\n```\n  http://[SUA_URL]/api/auth/login\n```\n\n\u003cbr\u003e\n\n#### BODY\n\n![Body login](img/body_login.png)\n\n\u003cdetails\u003e \n  \u003csummary\u003eCode\u003c/summary\u003e\n\n```json\n{\n    \"email\": \"admin@local.com\",\n    \"password\": \"password\"\n}\n```\n\n\u003c/details\u003e\n\n\u003cbr\u003e\n\n#### Response 200\n\n![Response](img/response_success_login.png)\n\n\u003cdetails\u003e \n  \u003csummary\u003eCode\u003c/summary\u003e\n\n```json\n{\n  \"status\": \"Success\",\n  \"message\": null,\n  \"data\": {\n    \"token\": \"2|n53V5YRqOEkFUaVmt6rJqLvQB5b1b66NqlQkOdMK\",\n    \"user\": {\n      \"name\": \"Braum de freljord\",\n      \"email\": \"admin@local.com\",\n      \"email_verified_at\": null,\n      \"created_at\": \"2022-09-02T14:11:52.000000Z\",\n      \"updated_at\": \"2022-09-02T14:11:52.000000Z\"\n    }\n  }\n}\n```\n\n\u003c/details\u003e\n\n\u003cbr\u003e\n\n[Início](#api-gestão-universidade---projeto-final-backend-flag)\n\n\u003cbr\u003e\n\n# [Estudantes](/wiki/api_students.md)\n\n\u003cbr\u003e\n\n## GET /students\n\n```\n  http://[SUA_URL]/api/students\n```\n#### Header\n\n```json\n  { \n    \"Authorization\": \"Bearer {{ token }}\"\n }\n```\n\n\u003cbr\u003e\n\n#### Response 200\n\n![Response](img/response_success_students.png)\n\n\u003cdetails\u003e \n  \u003csummary\u003eCode\u003c/summary\u003e\n\n```json\n{\n  \"status\": \"Success\",\n  \"message\": \"All Students Loaded!\",\n  \"data\": {\n    \"students\": [\n      {\n        \"uuid\": \"be27c1a3-a90f-4374-9959-3f14be44a3ed\",\n        \"slug\": \"luxanna-crownguard\",\n        \"first_name\": \"Luxanna\",\n        \"last_name\": \"Crownguard\",\n        \"nif\": \"782110039\",\n        \"status\": 1,\n        \"sex\": \"F\",\n        \"father_full_name\": \"Pieter Crownguard\",\n        \"mother_full_name\": \"Augatha Crownguard\",\n        \"email\": \"little.light@demacia.com\",\n        \"phone_num\": \"+16417960670\",\n        \"country\": \"demacia\",\n        \"street_name\": \"high silvermere\",\n        \"postal_code\": \"98872-2752\",\n        \"created_at\": \"2022-09-02T14:10:54.000000Z\",\n        \"updated_at\": \"2022-09-02T14:10:54.000000Z\"\n      },\n      ...\n    ]\n}\n```\n\n\u003c/details\u003e\n\n\u003cbr\u003e\n\n[Início](#api-gestão-universidade---projeto-final-backend-flag)\n\n\u003cbr\u003e\n\n# [Cursos](/wiki/api_courses.md)\n\n\u003cbr\u003e\n\n## GET /courses\n\n```\n  http://[SUA_URL]/api/courses\n```\n#### Header\n\n```json\n  { \n    \"Authorization\": \"Bearer {{ token }}\"\n }\n```\n\n\u003cbr\u003e\n\n#### Response 200\n\n![Response](img/response_success_courses.png)\n\n\u003cdetails\u003e \n  \u003csummary\u003eCode\u003c/summary\u003e\n\n```json\n{\n  \"status\": \"Success\",\n  \"message\": \"All Courses Loaded!\",\n  \"data\": {\n    \"courses\": [\n      {\n        \"uuid\": \"3c33db3b-d595-4975-b92d-9a0fefde6f04\",\n        \"slug\": \"hogwarts\",\n        \"name\": \"Hogwarts\",\n        \"created_at\": \"2022-09-02T14:10:52.000000Z\",\n        \"updated_at\": \"2022-09-02T14:10:52.000000Z\"\n      },\n      ...\n    ]\n}\n```\n\n\u003c/details\u003e\n\n\u003cbr\u003e\n\n[Início](#api-gestão-universidade---projeto-final-backend-flag)\n\n\u003cbr\u003e\n\n# [Professores](/wiki/api_teachers.md)\n\n\u003cbr\u003e\n\n## GET /teachers\n\n```\n  http://[SUA_URL]/api/teachers\n```\n#### Header\n\n```json\n  { \n    \"Authorization\": \"Bearer {{ token }}\"\n }\n```\n\n\u003cbr\u003e\n\n#### Response 200\n\n![Response](img/response_success_teachers.png)\n\n\u003cdetails\u003e \n  \u003csummary\u003eCode\u003c/summary\u003e\n\n```json\n{\n  \"status\": \"Success\",\n  \"message\": \"All Teachers Loaded!\",\n  \"data\": {\n    \"teachers\": [\n      {\n        \"uuid\": \"4f72962e-d640-4d03-bdd4-05899f07d3f9\",\n        \"slug\": \"severus-snape\",\n        \"first_name\": \"Severus \",\n        \"last_name\": \"Snape\",\n        \"status\": 1,\n        \"created_at\": \"2022-09-02T14:10:52.000000Z\",\n        \"updated_at\": \"2022-09-02T14:10:52.000000Z\"\n      },\n      ...\n    ]\n}\n```\n\n\u003c/details\u003e\n\n\u003cbr\u003e\n\n[Início](#api-gestão-universidade---projeto-final-backend-flag)\n\n\u003cbr\u003e\n\n# [Matérias](/wiki/api_subjects.md)\n\n\u003cbr\u003e\n\n## GET /subjects\n\n```\n  http://[SUA_URL]/api/subjects\n```\n#### Header\n\n```json\n  { \n    \"Authorization\": \"Bearer {{ token }}\"\n }\n```\n\n\u003cbr\u003e\n\n#### Response 200\n\n![Response](img/response_success_subjects.png)\n\n\u003cdetails\u003e \n  \u003csummary\u003eCode\u003c/summary\u003e\n\n```json\n{\n  \"status\": \"Success\",\n  \"message\": \"All Subjects Loaded!\",\n  \"data\": {\n    \"subjects\": [\n      {\n        \"uuid\": \"b9ded19c-70fd-4888-922b-e10db9654232\",\n        \"slug\": \"defesa-contra-as-artes-das-trevas\",\n        \"name\": \"Defesa Contra as Artes das Trevas\",\n        \"workload\": 6834,\n        \"description\": \"Defesa Contra as Artes das Trevas (às vezes escrita como D.C.A.T.) é uma matéria obrigatória na Escola de Magia e Bruxaria de Hogwarts, na qual os alunos aprendem como se defender magicamente contra criaturas e contra praticantes das Artes das Trevas.\",\n        \"num_registered_students\": 18,\n        \"created_at\": \"2022-09-02T14:10:52.000000Z\",\n        \"updated_at\": \"2022-09-02T14:10:52.000000Z\"\n      },\n      ...\n    ]\n}\n```\n\n\u003c/details\u003e\n\n\n\u003cbr\u003e\n\n[Início](#api-gestão-universidade---projeto-final-backend-flag)\n\n\u003cbr\u003e\n\n# [Departamentos](/wiki/api_departments.md)\n\n\u003cbr\u003e\n\n## GET /departments\n\n```\n  http://[SUA_URL]/api/departments\n```\n#### Header\n\n```json\n  { \n    \"Authorization\": \"Bearer {{ token }}\"\n }\n```\n\n\u003cbr\u003e\n\n#### Response 200\n\n![Response](img/response_success_departments.png)\n\n\u003cdetails\u003e \n  \u003csummary\u003eCode\u003c/summary\u003e\n\n```json\n{\n  \"status\": \"Success\",\n  \"message\": \"All Departments Loaded!\",\n  \"data\": {\n    \"departments\": [\n      {\n        \"uuid\": \"34271383-0d87-4d99-b4c4-c9da7359209e\",\n        \"slug\": \"departamento-de-cooperação-internacional-em-magia\",\n        \"name\": \"Departamento de Cooperação Internacional em Magia\",\n        \"created_at\": \"2022-09-02T14:10:52.000000Z\",\n        \"updated_at\": \"2022-09-02T14:10:52.000000Z\"\n      },\n      ...\n    ]\n}\n```\n\n\u003c/details\u003e\n\n\u003cbr\u003e\n\n[Início](#api-gestão-universidade---projeto-final-backend-flag)\n\n---\n\n## License\n\nMIT\n\n**Free Software, Hell Yeah!**\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanilowa%2Fbackendflag-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdanilowa%2Fbackendflag-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanilowa%2Fbackendflag-app/lists"}