Skip to content

DaniloWA/backEndFlag-app

Repository files navigation

Api Gestão universidade - Projeto Final Backend Flag

Uma Api conceito para Gestão de universidades. Feito como projeto final no curso de desenvolvimento back-end no grupo flag cursos.

Esse é um projeto desenvolvido em Laravel 9, que visa resolver um problema de gestão de uma universidade fictícia.


eer




Índice




Destaque das tecnologias utilizadas

Tecnologias versão Descrição
PHP 8.1 Uma linguagem de script de uso geral popular
Laravel 9.x O Framework PHP para Artesãos da Web
MySQL 15.x O MySQL é um sistema de gerenciamento de banco de dados, que utiliza a linguagem SQL como interface.
Laravel Debuger 3.7 Monitoramento de erros e desempenho do Laravel
Guzzlehttp 7.4 Guzzle é um cliente PHP HTTP que facilita o envio de solicitações HTTP.
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.
Vite 3.0 Vite é uma ferramenta de construção que foi inicialmente desenvolvida para Vue.js.
Postman 9.x Postman é uma plataforma de API para desenvolvedores projetar, construir, testar e iterar suas APIs.
Dbeaver 22.x DBeaver é um aplicativo de software cliente SQL e uma ferramenta de administração de banco de dados.
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.
PSR-4 --- A PSR-4 é uma recomendação da comunidade PHP para organização e carregamento de arquivos e classes PHP.


Destaque dos conceitos e patterns utilizados

Conceitos/Patterns Descrição
MVC MVC é o acrônimo de Model-View-Controller é um padrão de projeto de software, ou padrão de arquitetura de software.
POO Programação orientada a objetos é um paradigma de programação baseado no conceito de "objetos".
PHP SOLID SOLID é um acrônimo para os primeiros cinco princípios de design orientado a objetos (OOD).
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.
Gitflow Gitflow é um fluxo de trabalho Git legado que originalmente era uma estratégia inovadora e disruptiva para gerenciar ramificações do Git.
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.
Factory pattern Use uma função de fábrica para criar objetos.
Provider pattern Disponibilize dados para vários componentes filhos.
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.

Pré-requisitos

  • PHP ^8.1
  • MySql ^15
  • Laravel 9.x
  • Servidor Linux

Início




Rodando localmente

Clone o projeto

  git clone https://github.com/DaniloWA/backEndFlag-app.git

Entre no diretório do projeto

  cd backEndFlag-app/

Copiar ficheiro environment

  cp .env.example .env

Instale as dependências

  composer install

Gerar key de criptografia

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!

  php artisan key:generate

Definir configuração da conexão da base de dados

Substitui essas linhas no ficheiro ./.env

  DB_CONNECTION=mysql
  DB_HOST=127.0.0.1
  DB_PORT=3306
  DB_DATABASE=university
  DB_USERNAME=root
  DB_PASSWORD=

Caso o nome da base de dados seja diferente altere essa linha : DB_DATABASE= < NOME_AQUI >

Criando base de dados

  php artisan migrate

(Opcional) Povoando base de dados com dados

  php artisan db:seed

(Opcional) Ou pode rodar os ultimos dois passos em conjuto

  php artisan migrate --seed

Início




Postman

Importar suite de endpoints para o Postman (ficheiros)

  cd ./postman

Passo a Passo para importação do ficheiro do endpoint pelo GUI

import collection


Passo a Passo para importação do ficheiro do environment pelo GUI

import environment

(Opcional) Para visualizar os dados dos endpoints

  cat .\postman\api_backendflag.postman_collection.json 

(Opcional) Para visualizar os dados do ambiente local do environment

  cat .\postman\api_backendflag.postman_environment.json

Documentação das variáveis de environment

Documentação do Postman explicando variáveis e scripts.


Início




Documentação da API


POST /register

  http://[SUA_URL]/api/auth/register

BODY

Body register

Code
{
    "name": "UserTeste",
    "email": "[email protected]",
    "password": "123123123",
    "password_confirmation": "123123123",
    "token_name": "Token do UserTeste"
}

Response 200

Response

Code
{
    "status": "Success",
    "message": "User created!",
    "data": {
        "user": {
        "name": "UserTeste",
        "email": "[email protected]",
        "updated_at": "2022-09-02T14:11:52.000000Z",
        "created_at": "2022-09-02T14:11:52.000000Z"
        },
        "token": "1|etuMWNMmMVIgWOfDDiibQFhuIG3cc5NJS2RzzTys"
    }
}

POST /login

  http://[SUA_URL]/api/auth/login

BODY

Body login

Code
{
    "email": "[email protected]",
    "password": "password"
}

Response 200

Response

Code
{
  "status": "Success",
  "message": null,
  "data": {
    "token": "2|n53V5YRqOEkFUaVmt6rJqLvQB5b1b66NqlQkOdMK",
    "user": {
      "name": "Braum de freljord",
      "email": "[email protected]",
      "email_verified_at": null,
      "created_at": "2022-09-02T14:11:52.000000Z",
      "updated_at": "2022-09-02T14:11:52.000000Z"
    }
  }
}

Início



GET /students

  http://[SUA_URL]/api/students

Header

  { 
    "Authorization": "Bearer {{ token }}"
 }

Response 200

Response

Code
{
  "status": "Success",
  "message": "All Students Loaded!",
  "data": {
    "students": [
      {
        "uuid": "be27c1a3-a90f-4374-9959-3f14be44a3ed",
        "slug": "luxanna-crownguard",
        "first_name": "Luxanna",
        "last_name": "Crownguard",
        "nif": "782110039",
        "status": 1,
        "sex": "F",
        "father_full_name": "Pieter Crownguard",
        "mother_full_name": "Augatha Crownguard",
        "email": "[email protected]",
        "phone_num": "+16417960670",
        "country": "demacia",
        "street_name": "high silvermere",
        "postal_code": "98872-2752",
        "created_at": "2022-09-02T14:10:54.000000Z",
        "updated_at": "2022-09-02T14:10:54.000000Z"
      },
      ...
    ]
}

Início



GET /courses

  http://[SUA_URL]/api/courses

Header

  { 
    "Authorization": "Bearer {{ token }}"
 }

Response 200

Response

Code
{
  "status": "Success",
  "message": "All Courses Loaded!",
  "data": {
    "courses": [
      {
        "uuid": "3c33db3b-d595-4975-b92d-9a0fefde6f04",
        "slug": "hogwarts",
        "name": "Hogwarts",
        "created_at": "2022-09-02T14:10:52.000000Z",
        "updated_at": "2022-09-02T14:10:52.000000Z"
      },
      ...
    ]
}

Início



GET /teachers

  http://[SUA_URL]/api/teachers

Header

  { 
    "Authorization": "Bearer {{ token }}"
 }

Response 200

Response

Code
{
  "status": "Success",
  "message": "All Teachers Loaded!",
  "data": {
    "teachers": [
      {
        "uuid": "4f72962e-d640-4d03-bdd4-05899f07d3f9",
        "slug": "severus-snape",
        "first_name": "Severus ",
        "last_name": "Snape",
        "status": 1,
        "created_at": "2022-09-02T14:10:52.000000Z",
        "updated_at": "2022-09-02T14:10:52.000000Z"
      },
      ...
    ]
}

Início



GET /subjects

  http://[SUA_URL]/api/subjects

Header

  { 
    "Authorization": "Bearer {{ token }}"
 }

Response 200

Response

Code
{
  "status": "Success",
  "message": "All Subjects Loaded!",
  "data": {
    "subjects": [
      {
        "uuid": "b9ded19c-70fd-4888-922b-e10db9654232",
        "slug": "defesa-contra-as-artes-das-trevas",
        "name": "Defesa Contra as Artes das Trevas",
        "workload": 6834,
        "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.",
        "num_registered_students": 18,
        "created_at": "2022-09-02T14:10:52.000000Z",
        "updated_at": "2022-09-02T14:10:52.000000Z"
      },
      ...
    ]
}

Início



GET /departments

  http://[SUA_URL]/api/departments

Header

  { 
    "Authorization": "Bearer {{ token }}"
 }

Response 200

Response

Code
{
  "status": "Success",
  "message": "All Departments Loaded!",
  "data": {
    "departments": [
      {
        "uuid": "34271383-0d87-4d99-b4c4-c9da7359209e",
        "slug": "departamento-de-cooperação-internacional-em-magia",
        "name": "Departamento de Cooperação Internacional em Magia",
        "created_at": "2022-09-02T14:10:52.000000Z",
        "updated_at": "2022-09-02T14:10:52.000000Z"
      },
      ...
    ]
}

Início


License

MIT

Free Software, Hell Yeah!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages