diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4d6062e --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +venv +__pycache__/ +.env \ No newline at end of file diff --git a/docs/documento-arquitetura/documento-arquitetura.md b/docs/documento-arquitetura/documento-arquitetura.md index c1c714d..69bef3e 100644 --- a/docs/documento-arquitetura/documento-arquitetura.md +++ b/docs/documento-arquitetura/documento-arquitetura.md @@ -1,3 +1,144 @@ -| Versão | Data | Descrição da Alteração | Nome(s) Integrante(s) | -| :----: | :--: | :--------------------: | :-------------------: | -| 1.0 | 25/02/2024 | Mudei isso e aquilo | Fulano de Tal | \ No newline at end of file +# Documento de Arquitetura +## Projeto Pele Dourada +### Equipe Sagittarius +**Versão 1.0** + +--- + +## Histórico de Revisão + +| Data | Versão | Descrição | Autor(es) | +|------------|--------|-----------------------------------------------|-----------------------------| +| 16/12/2024 | 1.0 | Redação inicial do documento de arquitetura. | Equipe Sagittarius | +| 16/12/2024 | 1.0 | Tópicos 1.1 e 1.2. | Vilmar Fagundes | +| 16/12/2024 | 1.0 | Tópicos 2.3 e Diagrama de casos de uso. | Matheus de Alcântara | +| 16/12/2024 | 1.0 | Tópicos 2.4 e 2.8. | Fábio Santos Araújo | +| 16/12/2024 | 1.0 | Tópicos 2.1, 2.2 e diagrama de classes. | Caio Lucas e Gabriel Flores | +| 16/12/2024 | 1.0 | Tópico 2.5. | Gabriel Flores | +| 17/12/2024 | 1.0 | Tópico 2.6. | Lucas Borges e André Gustavo| +| 17/12/2024 | 1.0 | Tópico 2.7. | Matheus de Alcântara e João Victor Pires | +| 17/12/2024 | 1.0 | Tópico 2.9. | João Victor Pires | + +--- + +## Autores + +| Matrícula | Nome | Papel Assumido | Contribuição (%) | +|--------------|-----------------------|--------------------------------|------------------| +| 231026509 | Matheus de Alcântara | Desenvolvedor Backend | 10% | +| 231026358 | Gabriel Flores | Desenvolvedor Banco de Dados | 10% | +| 231026302 | Caio Lucas | Desenvolvedor Backend | 10% | +| 222022082 | Fábio Santos | Desenvolvedor Banco de Dados | 10% | +| 231026590 | Vilmar Fagundes | Desenvolvedor Banco de Dados | 10% | +| 231026400 | João V. Pires | Desenvolvedor Backend | 10% | +| 221007635 | André Gustavo | Desenvolvedor Frontend | 10% | +| 222015159 | Lucas Borges | Desenvolvedor Backend | 10% | +| 222006150 | Mikael Kauan | Desenvolvedor Frontend | 10% | +| 221008196 | João V. Silva | Desenvolvedor Frontend | 10% | + +--- + +## Sumário + +1. [Introdução](#introducao) + - [Propósito](#proposito) + - [Escopo](#escopo) +2. [Representação Arquitetural](#representacao-arquitetural) + - [Definições](#definicoes) + - [Justifique sua escolha](#justifique-sua-escolha) + - [Detalhamento](#detalhamento) + - [Metas e restrições arquiteturais](#metas-e-restricoes-arquiteturais) + - [Visão de Casos de Uso (escopo do produto)](#visao-de-casos-de-uso) + - [Visão Lógica](#visao-logica) + - [Visão de Implementação](#visao-de-implementacao) + - [Visão de Implantação](#visao-de-implantacao) + - [Restrições Adicionais](#restricoes-adicionais) +3. [Bibliografia](#bibliografia) + +--- + +## Introdução + +### Propósito +Este documento tem como objetivo descrever a arquitetura do sistema sendo desenvolvido pelo grupo Sagittarius, na disciplina de MDS – Métodos de Desenvolvimento de Software (2024.2). O projeto, chamado **Pele Dourada**, busca fornecer uma visão do sistema para desenvolvedores, testadores e demais interessados. + +### Escopo +O projeto **Pele Dourada** visa criar um sistema para a loja **Frango Assado Pele Dourada**, com funcionalidades como: +- Gerenciamento de vendas semanais e mensais. +- Controle de estoque. +- Gerenciamento de encomendas. + +--- + +## Representação Arquitetural + +### Definições +O sistema seguirá uma arquitetura **monolítica**. + +### Justifique sua escolha +A arquitetura monolítica foi escolhida devido a: +- **Simplicidade**: Facilita o aprendizado e a centralização do código. +- **Custo**: Menor custo de implementação e menor propensão a problemas de deploy. +- **Teste e Debugging**: Testes e rastreamento de erros são mais simples. +- **Desempenho**: Ideal para sistemas de baixa escala, com menor sobrecarga de rede. + +### Detalhamento +O sistema terá três camadas principais: +1. **Interface do Usuário**: Login, cadastro de produtos, vendas, etc. +2. **Lógica de Negócios**: Comunicação com o banco para garantir funcionalidade correta. +3. **Banco de Dados**: Armazena os dados de forma segura e eficiente. + +### Metas e restrições arquiteturais +- **Escalabilidade**: Suporte ao crescimento de dados sem comprometer o desempenho. +- **Desempenho**: Respostas rápidas para uma experiência satisfatória. +- **Manutenção**: Facilitar correções e melhorias. +- **Segurança**: Proteger contra acessos não autorizados. + +--- + +## Visão de Casos de Uso + +### Funcionalidades +O sistema permitirá: +- Gestão de estoque. +- Gerenciamento de vendas e encomendas. +- Cadastro de clientes. +- Controle financeiro. + +### Cenários +O administrador poderá: +- Fazer login. +- Gerenciar estoque, vendas, e encomendas. +- Cadastrar clientes. +- Visualizar resumo financeiro. + +--- + +## Visão de Implementação +A arquitetura segue o padrão MTV (Model-Template-View): +1. **Frontend**: Desenvolvido com React. +2. **Backend**: Desenvolvido com Django, responsável pelas regras de negócio. +3. **Banco de Dados**: MongoDB para armazenar os dados. + +--- + +## Visão de Implantação +- O software será implantado em um desktop configurado como servidor web. +- O frontend usará React e Bootstrap. +- O backend usará Django. +- O banco de dados será MongoDB, integrado via Djongo. + +--- + +## Restrições Adicionais +- Apenas o administrador terá acesso ao sistema. +- Login será obrigatório. +- Cadastro de clientes será necessário para encomendas. + +--- + +## Bibliografia +1. AJAX, Ricardo. Slides do professor Ricardo Ajax. 2024. +2. SERRANO, Milene. Material da Profa. Milene Serrano. 2024. +3. Draw.io: https://app.diagrams.net/ +4. Lucidchart: https://lucid.app/ diff --git a/docs/documento-visao/documento-visao.md b/docs/documento-visao/documento-visao.md index 93c8c4b..c282e4b 100644 --- a/docs/documento-visao/documento-visao.md +++ b/docs/documento-visao/documento-visao.md @@ -3,7 +3,7 @@ | 1.0 | 26/11/2024 | Redação inicial do documento de visão | Todos | | 1.1 | 02/12/2024 | Finalização do backlog do produto e planejamento das sprints | Matheus de Alcântara, Vilmar, Gabriel Flores, Caio Sabino e João Victor Pires | -Sagittarius – Sistema de Gestão para a empresa Frango Assado Pele Dourada +Sagittarius – Projeto Pele Dourada ## [VISÃO DO PRODUTO E DO PROJETO](https://1drv.ms/w/c/dc034d221001755e/ERKbbbL04F9LhrPs5txr-z0Bl07xoD9xL0_u6FwRZCJh2w?e=rvMSzA) diff --git a/docs/index.md b/docs/index.md index 8daa601..c8ed887 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,6 +1,6 @@ # 2024.2 Sagittarius - Sistema de Vendas -# Sistema de Gestão para a Empresa Frango Assado Pele Dourada +# Projeto Pele Dourada ## Sobre o Projeto diff --git a/pele_dourada/api/__init__.py b/pele_dourada/api/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/pele_dourada/api/admin.py b/pele_dourada/api/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/pele_dourada/api/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/pele_dourada/api/apps.py b/pele_dourada/api/apps.py new file mode 100644 index 0000000..66656fd --- /dev/null +++ b/pele_dourada/api/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class ApiConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'api' diff --git a/pele_dourada/api/migrations/__init__.py b/pele_dourada/api/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/pele_dourada/api/models.py b/pele_dourada/api/models.py new file mode 100644 index 0000000..71a8362 --- /dev/null +++ b/pele_dourada/api/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/pele_dourada/api/tests.py b/pele_dourada/api/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/pele_dourada/api/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/pele_dourada/api/views.py b/pele_dourada/api/views.py new file mode 100644 index 0000000..91ea44a --- /dev/null +++ b/pele_dourada/api/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. diff --git a/pele_dourada/db.sqlite3 b/pele_dourada/db.sqlite3 new file mode 100644 index 0000000..e69de29 diff --git a/pele_dourada/manage.py b/pele_dourada/manage.py new file mode 100644 index 0000000..c9f82a4 --- /dev/null +++ b/pele_dourada/manage.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +"""Django's command-line utility for administrative tasks.""" +import os +import sys + + +def main(): + """Run administrative tasks.""" + os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'pele_dourada.settings') + try: + from django.core.management import execute_from_command_line + except ImportError as exc: + raise ImportError( + "Couldn't import Django. Are you sure it's installed and " + "available on your PYTHONPATH environment variable? Did you " + "forget to activate a virtual environment?" + ) from exc + execute_from_command_line(sys.argv) + + +if __name__ == '__main__': + main() diff --git a/pele_dourada/pele_dourada/__init__.py b/pele_dourada/pele_dourada/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/pele_dourada/pele_dourada/asgi.py b/pele_dourada/pele_dourada/asgi.py new file mode 100644 index 0000000..e5e21c6 --- /dev/null +++ b/pele_dourada/pele_dourada/asgi.py @@ -0,0 +1,16 @@ +""" +ASGI config for pele_dourada project. + +It exposes the ASGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/5.1/howto/deployment/asgi/ +""" + +import os + +from django.core.asgi import get_asgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'pele_dourada.settings') + +application = get_asgi_application() diff --git a/pele_dourada/pele_dourada/settings.py b/pele_dourada/pele_dourada/settings.py new file mode 100644 index 0000000..5834045 --- /dev/null +++ b/pele_dourada/pele_dourada/settings.py @@ -0,0 +1,130 @@ +""" +Django settings for pele_dourada project. + +Generated by 'django-admin startproject' using Django 5.1.4. + +For more information on this file, see +https://docs.djangoproject.com/en/5.1/topics/settings/ + +For the full list of settings and their values, see +https://docs.djangoproject.com/en/5.1/ref/settings/ +""" + +import os +from pathlib import Path + +from dotenv import load_dotenv + +load_dotenv() + +# Build paths inside the project like this: BASE_DIR / 'subdir'. +BASE_DIR = Path(__file__).resolve().parent.parent + + +# Quick-start development settings - unsuitable for production +# See https://docs.djangoproject.com/en/5.1/howto/deployment/checklist/ + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = os.getenv('SECRET_KEY', default="") + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = True + +ALLOWED_HOSTS = ['*'] + + +# Application definition + +INSTALLED_APPS = [ + 'django.contrib.admin', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.staticfiles', + 'api', + 'rest_framework', +] + +MIDDLEWARE = [ + 'django.middleware.security.SecurityMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.middleware.common.CommonMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', + 'django.middleware.clickjacking.XFrameOptionsMiddleware', +] + +ROOT_URLCONF = 'pele_dourada.urls' + +TEMPLATES = [ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': [], + 'APP_DIRS': True, + 'OPTIONS': { + 'context_processors': [ + 'django.template.context_processors.debug', + 'django.template.context_processors.request', + 'django.contrib.auth.context_processors.auth', + 'django.contrib.messages.context_processors.messages', + ], + }, + }, +] + +WSGI_APPLICATION = 'pele_dourada.wsgi.application' + + +# Database +# https://docs.djangoproject.com/en/5.1/ref/settings/#databases + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': BASE_DIR / 'db.sqlite3', + } +} + + +# Password validation +# https://docs.djangoproject.com/en/5.1/ref/settings/#auth-password-validators + +AUTH_PASSWORD_VALIDATORS = [ + { + 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', + }, +] + + +# Internationalization +# https://docs.djangoproject.com/en/5.1/topics/i18n/ + +LANGUAGE_CODE = 'en-us' + +TIME_ZONE = 'UTC' + +USE_I18N = True + +USE_TZ = True + + +# Static files (CSS, JavaScript, Images) +# https://docs.djangoproject.com/en/5.1/howto/static-files/ + +STATIC_URL = 'static/' + +# Default primary key field type +# https://docs.djangoproject.com/en/5.1/ref/settings/#default-auto-field + +DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' diff --git a/pele_dourada/pele_dourada/urls.py b/pele_dourada/pele_dourada/urls.py new file mode 100644 index 0000000..a574869 --- /dev/null +++ b/pele_dourada/pele_dourada/urls.py @@ -0,0 +1,22 @@ +""" +URL configuration for pele_dourada project. + +The `urlpatterns` list routes URLs to views. For more information please see: + https://docs.djangoproject.com/en/5.1/topics/http/urls/ +Examples: +Function views + 1. Add an import: from my_app import views + 2. Add a URL to urlpatterns: path('', views.home, name='home') +Class-based views + 1. Add an import: from other_app.views import Home + 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') +Including another URLconf + 1. Import the include() function: from django.urls import include, path + 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) +""" +from django.contrib import admin +from django.urls import path + +urlpatterns = [ + path('admin/', admin.site.urls), +] diff --git a/pele_dourada/pele_dourada/wsgi.py b/pele_dourada/pele_dourada/wsgi.py new file mode 100644 index 0000000..02351ed --- /dev/null +++ b/pele_dourada/pele_dourada/wsgi.py @@ -0,0 +1,16 @@ +""" +WSGI config for pele_dourada project. + +It exposes the WSGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/5.1/howto/deployment/wsgi/ +""" + +import os + +from django.core.wsgi import get_wsgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'pele_dourada.settings') + +application = get_wsgi_application() diff --git a/pele_dourada/requirements.txt b/pele_dourada/requirements.txt new file mode 100644 index 0000000..78ed8fa Binary files /dev/null and b/pele_dourada/requirements.txt differ diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..2d5f7f1 Binary files /dev/null and b/requirements.txt differ