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.
- 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.
- 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.
Para rodar o projeto localmente usando Docker e Docker Compose, siga os passos abaixo:
- Docker
- Docker Compose
1. Clone o repositório:
git clone https://github.com/clasSeven7/boost-code.git
cd boost-code
2. Construa e inicie os containers:
./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.
Se preferir rodar o projeto sem Docker, siga os passos abaixo:
- Python 3.x
- pip (instalador de pacotes Python)
- Virtualenv (opcional, mas recomendado)
1. Clone o repositório:
git clone https://github.com/clasSeven7/boost-code.git
cd boost-code
2. Crie e ative um ambiente virtual (opcional, mas recomendado):
python3 -m venv venv
source venv/bin/activate
3. Instale as dependências:
pip install -r requirements.txt
4. Aplique as migrações:
python3 manage.py migrate
5. Crie um superusuário para acessar a interface de administração do Django:
python3 manage.py createsuperuser
6. Execute o servidor de desenvolvimento:
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/
.
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.
Criar um Novo Link:
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:
curl http://127.0.0.1:8000/api/links/
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)
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.
Criação de Post:
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:
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)
Execute os testes com o comando:
python3 manage.py test
Contribuições são bem-vindas! Para contribuir:
- Faça um fork do repositório.
- Crie um novo branch
(git checkout -b feature/NovaFuncionalidade)
. - Faça suas alterações.
- Commit suas alterações
(git commit -m 'Adicionar nova funcionalidade')
. - Envie para o branch
(git push origin feature/NovaFuncionalidade)
. - Abra um pull request