https://github.com/classeven7/boost-code
Boost Code é uma plataforma inovadora projetada para acelerar seu aprendizado em programação e desenvolvimento de software. Com uma abordagem prática e dinâmica, nosso objetivo é fornecer ferramentas e recursos que ajudem desenvolvedores a aprimorar suas habilidades rapidamente.
https://github.com/classeven7/boost-code
api-rest django django-rest-framework git postgresql python rest-framework-simplejwt
Last synced: 3 months ago
JSON representation
Boost Code é uma plataforma inovadora projetada para acelerar seu aprendizado em programação e desenvolvimento de software. Com uma abordagem prática e dinâmica, nosso objetivo é fornecer ferramentas e recursos que ajudem desenvolvedores a aprimorar suas habilidades rapidamente.
- Host: GitHub
- URL: https://github.com/classeven7/boost-code
- Owner: clasSeven7
- Created: 2024-09-11T17:37:19.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-10-14T19:16:09.000Z (over 1 year ago)
- Last Synced: 2025-01-18T20:00:51.332Z (over 1 year ago)
- Topics: api-rest, django, django-rest-framework, git, postgresql, python, rest-framework-simplejwt
- Language: Python
- Homepage:
- Size: 36.8 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
🔗Boost Code
### 📖 Sobre
**Boost Code** é uma plataforma inovadora projetada para acelerar seu aprendizado em programação e desenvolvimento de software. Nosso objetivo é fornecer ferramentas e recursos que ajudem desenvolvedores a aprimorar suas habilidades rapidamente.
### Funcionalidades
- **Gerenciamento de Links:** Criação, atualização, exclusão e recuperação de links.
- **Autenticação de Usuário:** Sistema seguro utilizando a autenticação do Django.
- **API RESTful:** Oferece uma API para operações CRUD de gerenciamento de links.
- **Interface de Administração:** Controle usuários e links via Django Admin.
### Tecnologias Utilizadas
- **Django:** Framework web em Python que promove um desenvolvimento rápido e design limpo.
- **Django Rest Framework:** Conjunto de ferramentas para construir APIs web.
- **PostgreSQL:** Banco de dados relacional robusto com suporte a transações ACID.
- **Docker e Docker Compose:** Utilizados para configurar o ambiente de desenvolvimento.
### 🛠 Instalação com Docker
Para rodar o projeto localmente usando Docker e Docker Compose, siga os passos abaixo:
#### Pré-requisitos
- Docker
- Docker Compose
#### Passos para instalação
**1. Clone o repositório:**
```bash
git clone https://github.com/clasSeven7/boost-code.git
cd boost-code
```
**2. Construa e inicie os containers:**
```bash
./run_django.sh
```
Isso vai rodar um script que irá construir os containers e iniciar os serviços.
**Isso iniciará os serviços:**
- **web:** O servidor Django rodando na porta `8000`.
- **db:** O banco de dados PostgreSQL rodando na porta `5432`
**3. Acesse o projeto:**
Abra o navegador e vá para `http://localhost:8000` para acessar a aplicação.
### 🛠 Instalação Manual
Se preferir rodar o projeto sem Docker, siga os passos abaixo:
#### Pré-requisitos
- Python 3.x
- pip (instalador de pacotes Python)
- Virtualenv (opcional, mas recomendado)
#### Passos para instalação
**1. Clone o repositório:**
```bash
git clone https://github.com/clasSeven7/boost-code.git
cd boost-code
```
**2. Crie e ative um ambiente virtual (opcional, mas recomendado):**
```bash
python3 -m venv venv
source venv/bin/activate
```
**3. Instale as dependências:**
```bash
pip install -r requirements.txt
```
**4. Aplique as migrações:**
```bash
python3 manage.py migrate
```
**5. Crie um superusuário para acessar a interface de administração do Django:**
```bash
python3 manage.py createsuperuser
```
**6. Execute o servidor de desenvolvimento:**
```bash
python3 manage.py runserver
```
**7. Acesse a aplicação:**
- Acesse `http://127.0.0.1:8000/`.
- A interface de administração estará em `http://127.0.0.1:8000/admin/`.
### 🖥 Endpoints da API
A aplicação possui uma API RESTful para gerenciar links. Abaixo alguns dos endpoints:
- `GET /api/links/`: Recupera todos os links.
- `POST /api/links/`: Cria um novo link.
- `GET /api/links/{id}/`: Recupera um link específico.
- `PUT /api/links/{id}/`: Atualiza um link específico.
- `DELETE /api/links/{id}/`: Exclui um link específico.
#### Exemplos de Requisições
**Criar um Novo Link:**
```bash
curl -X POST http://127.0.0.1:8000/api/links/ -H "Content-Type: application/json" -d '{"url": "https://exemplo.com", "description": "Descrição do link"}'
```
**Recuperar Todos os Links:**
```bash
curl http://127.0.0.1:8000/api/links/
```
### 🔍 Testes
A aplicação inclui uma suíte de testes para verificar a integridade das funcionalidades.
**Dependências para Testes:**
- Django
- Django REST Framework
- Django REST Framework Simple JWT (para autenticação)
#### Descrição dos Testes
A classe `PostAPITestCase` realiza os seguintes testes:
- **Criação de Post:** Verifica se um post pode ser criado por um usuário autenticado.
- **Recuperação de Post:** Testa se um post existente pode ser recuperado.
- **Atualização de Post:** Valida se um post pode ser atualizado.
- **Exclusão de Post:** Confirma que um post pode ser excluído.
- **Criação de Post sem Autenticação:** Garante que a criação de um post é negada sem autenticação.
#### Exemplo de Testes
**Criação de Post:**
```python
def test_create_post(self):
response = self.client.post('/api/post/', {'title': 'Novo Post', 'content': 'Conteúdo'}, HTTP_AUTHORIZATION=self.authorization_header)
self.assertEqual(response.status_code, 201)
```
**Atualização de Post:**
```python
def test_update_post(self):
post = Post.objects.create(title='Post', content='Conteúdo')
response = self.client.patch(f'/api/post/{post.id}/', {'title': 'Post Atualizado'}, HTTP_AUTHORIZATION=self.authorization_header)
self.assertEqual(response.status_code, 200)
```
#### Executando Testes
Execute os testes com o comando:
```bash
python3 manage.py test
```
### 🚀 Como Contribuir
Contribuições são bem-vindas! Para contribuir:
1. Faça um fork do repositório.
2. Crie um novo branch `(git checkout -b feature/NovaFuncionalidade)`.
3. Faça suas alterações.
4. Commit suas alterações `(git commit -m 'Adicionar nova funcionalidade')`.
5. Envie para o branch `(git push origin feature/NovaFuncionalidade)`.
6. Abra um pull request