Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/deividsousan/tudogostoso

API de um sistema de compartilhamento de receitas onde usuário autenticados ver, adicionar e remover receitas.
https://github.com/deividsousan/tudogostoso

api backend database fastapi mysql pydantic python sql sqlalchemy

Last synced: 27 days ago
JSON representation

API de um sistema de compartilhamento de receitas onde usuário autenticados ver, adicionar e remover receitas.

Awesome Lists containing this project

README

        

# TudoGostoso API

O TudoGostoso é uma API de uma sistema de compartilhamento de receitas. Por meio deste, os usuários podem autenticar-se recebendo permissão para ver, criar e deletar receitas.
## Objetivo

O objetivo do projeto foi aprender mais sobre o desenvolvimento de APIs utilizando o Python com FastAPI + MySQL.

## Funcionalidades

- [x] Cadastro de Usuários no Banco de Dados
- [x] Autenticação de Usuários (Login)
- [x] Autorização de Usuário por meio de Tokens JWT
- [x] Sistema de Gerenciamento de Receitas (CRUD)

## Rotas

![image](https://github.com/user-attachments/assets/8c6d07ca-2e07-443b-8ae6-03688d090b08)

## Como Rodar o Projeto?

### Clonando

Primeiro clone o repositório. Isso pode ser feito baixando-o ou utilizando o comando:

```
git clone [email protected]:DeividSouSan/TudoGostoso.git
```

Utilizando sua IDE ou Editor de Texto, abra o projeto. Se estiver pelo terminal acesse a pasta onde baixou ou clonou o projeto e escreva:

```
cd TudoGostoso
```

### Ambiente Virtual

Dentro da pasta do projeto, inicie um ambiente virtual. É recomendado instalar as bibliotecas em um ambiente virtual para evitar conflitos de versões com os pacotes instalados globalmente. Pelo terminal, crie um ambiente virtual utilizando:
```
python3 -m venv
```

Geralmente o nome utilizado é .venv, mas isso é de sua escolha.

Para ativar o ambiente virutal no linux:

```
source .venv/bin/activate
```

Ou

```
. .venv/bin/activate
```

Para desativa-lo:

```
deactivate
```

No windows:
```
.venv/Scripts/activate
```

Para desativa-lo:

```
.venv/Scripts/deactivate
```

### Bibliotecas

Utilizei as seguintes bibliotecas para realização do projeto:

- FastAPI (Servidor e Rotas)
- Python Dotenv (Variáveis de Ambiente)
- PyMySQL (Driver de Conexão para o MySQL)
- SQLAlchemy (Object Relational Mapper)
- bcrypt (Hash da Senha)
- pydantic (Validação de Dados)
- alembic (Migrações do Banco de Dados)
- python-jose (Lidar com Tokens JWT)
- pre-commit (Formatar o código de forma padronizada)
- smtplib (Envio de emails)

Para baixar as bibliotecas do Python escreva no terminal (antes verifique se o ambiente virtual está ativado):

```bash
pip install -r requirements.txt
```

Assim todas as dependencias que estão dentro do arquivo `requirements.txt` serão baixadas para o seu ambiente virtual.

### Variáveis de Ambiente

Para rodar esse projeto, você vai precisar adicionar as seguintes variáveis de ambiente no seu .env

```
DATABASE_URL = 'mysql+pymysql://<>:<>!@localhost/<>'
SECRET_KEY = '<>'
ALGORITHM = 'HS256'
EXPIRATION_MINUTES = 30

SENDER_EMAIL_ADDRESS = "<>"
SENDER_EMAIL_PASSWORD = "<>"
```
Alguns adendos:
1. Você deve criar o banco de dados por meio de um SGBD para poder escrever o `DATABASE_URL`.
2. A `SECRET_KEY` deve conter 32 digitos.
3. Para conseguir enviar emails é necessário configurar sua conta do google para conseguir enviar emails SMTP.

### Banco de Dados

O banco de dados utilizado para essa aplicação foi o MySQL. É necessário que o banco de dados seja criado manualmente pelo SGBD para poder ser inserido na variável `DATABASE_ULR`.

### Finalmente Rodando a Aplicação

Para rodar a aplicação escreva enter na para `/api` e rode:
```
fastapi run
```