unb-mds / 2023-2-SuaGradeUnB

Sua Grade UnB, um projeto com objetivo de auxiliar os alunos da UnB a montarem suas grades horárias de maneira fácil e intuitiva.
https://suagradeunb.com.br
MIT License
34 stars 7 forks source link

Sua Grade UnB

License: MIT codecov GitHub issues GitHub contributors GitHub stars Hit Counter

Python version Django version Node version npm version Docker version Docker Compose version

O Sua Grade UnB é um projeto da matéria Métodos de Desenvolvimento de Software, a qual tem como objetivo auxiliar os alunos da Universidade de Brasília a montarem suas grades horárias de maneira fácil e intuitiva.

Com apenas alguns cliques, o aluno poderá montar sua grade horária de acordo com as matérias que deseja cursar. Além disso, o sistema auxiliará o aluno ao resolver os conflitos de horários entre as matérias escolhidas, retornando as melhores opções de horários de acordo com suas preferências.

O projeto é software livre e está sob a licença MIT.

📝 Sumário

👥 Equipe

Nome GitHub
Arthur Ribeiro e Sousa @artrsousa1
Caio Falcão Habibe Costa @CaioHabibe
Caio Felipe Rocha Rodrigues @caio-felipee
Gabriel Henrique Castelo Costa @GabrielCastelo-31
Henrique Camelo Quenino @henriquecq
Mateus Vieira Rocha da Silva @mateusvrs

✨ Início

Você pode clonar o repositório do projeto com o seguinte comando:

git clone https://github.com/unb-mds/2023-2-SuaGradeUnB.git

📋 Pré-requisitos

Para rodar o projeto, você precisa instalar as dependências globais, que são:

💻 Ambiente

Para configurar o ambiente, você pode rodar o seguinte script:

make config

📁 Dependências do projeto

Para instalar as dependências do projeto, você pode rodar os seguintes comando:

# Crie um ambiente virtual Python
python3 -m venv api/env

# Ative o ambiente virtual
source api/env/bin/activate

# Instale os pacotes do Python e Node
make install

💾 Execução

Para executar o projeto, você pode rodar o seguinte comando:

docker compose up

Observações do Docker

# Se você quiser rodar em segundo plano
docker compose up -d

# Se alterações foram feitas no Dockerfile ou no docker-compose.yml
docker compose up --build

# Se for necessário deletar os volumes
docker compose down -v

✅ Autenticação do Google OAuth

Para que o login com o Google funcione, é necessário trocar o your_client_id no arquivo web/.env.local pelo Client ID do projeto no Google Cloud.

  1. Crie um projeto no Google Cloud.
  2. Vá para a página de Credenciais do projeto.
  3. Clique em Criar credenciais e selecione ID do cliente OAuth.
  4. Selecione Aplicativo da Web.
  5. Adicione http://localhost:3000 como Origens JavaScript autorizadas e URIs de redirecionamento autorizadas.
  6. Copie o Client ID e cole no arquivo web/.env.local no lugar de your_client_id.

Após isto:

  1. Vá para a página de OAuth Consent Screen.
  2. Selecione Usuários externos e clique em Criar.
  3. Preencha os campos obrigatórios e clique em Salvar e continuar.
  4. Na seção Usuários de Teste adicione o seu e-mail e clique em Adicionar.
  5. Clique em Salvar e continuar.

Adicionando serviços:

  1. Entre na aba APIs e Serviços.
  2. Clique em Ativar APIs e Serviços.
  3. Ative os seguintes serviços:
    • IAM Service Account Credentials API
    • Identity and Access Management (IAM) API

📥 Atualização do banco de dados

A obtenção dos dados das disciplinas é feita através de um web scraping no site da Universidade de Brasília e, por isso, é necessário atualizar o banco de dados com certa frequência. As requisições ainda são feitas de forma manual. Para realizar a atualização, rode o seguinte comando:

# Atualiza para o período atual e o próximo
make updatedb-all

# Comando equivalente
docker exec django-api python3 ./manage.py updatedb -a

🖱️ Acesso aos serviços

Serviço URL
Frontend http://localhost:3000
Backend http://localhost:8000

📍 Migrations

Migration é um recurso do Django que permite que você altere o modelo de dados do seu projeto. Portanto, sempre que você alterar o modelo de dados, você deve criar uma nova migration.

Para criar possíveis novas migrations, você pode rodar o seguinte comando:

# Crie as migrations
make makemigrations

# Execute as migrations
make migrate

📚 Documentação

A documentação do projeto pode ser encontrada clicando aqui.

📎 Extra

Story Map e Activity Flow

Arquitetura

Protótipo