diff --git a/.github/workflows/docs-v2.yml b/.github/workflows/docs-v2.yml deleted file mode 100644 index b774800b..00000000 --- a/.github/workflows/docs-v2.yml +++ /dev/null @@ -1,44 +0,0 @@ -name: Deploy Docs - -on: - push: - branches: - - main - paths: - - 'docs/**' - -permissions: - contents: write - -jobs: - docs: - name: mkdocs deploy - runs-on: ubuntu-latest - strategy: - max-parallel: 4 - matrix: - python-version: ["3.11"] - - steps: - - name: Checkout code - uses: actions/checkout@v3 - - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v5 - with: - python-version: ${{ matrix.python-version }} - - - run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV - - - name: Using cache to MkDocs - uses: actions/cache@v3 - with: - key: mkdocs-material-${{ env.cache_id }} - path: .cache - restore-keys: | - mkdocs-material- - - - run: pip install mkdocs-material - - - name: Deploy Docs - run: mkdocs gh-deploy --force diff --git a/API/AcheiUnB/settings.py b/API/AcheiUnB/settings.py index 9621da72..96c0e2e1 100644 --- a/API/AcheiUnB/settings.py +++ b/API/AcheiUnB/settings.py @@ -48,9 +48,11 @@ "django_extensions", "channels", "chat", + "corsheaders" ] MIDDLEWARE = [ + "corsheaders.middleware.CorsMiddleware", "django.middleware.security.SecurityMiddleware", "django.contrib.sessions.middleware.SessionMiddleware", "django.middleware.common.CommonMiddleware", @@ -189,6 +191,10 @@ SITE_ID = 1 LOGIN_REDIRECT_URL = "/certu" -LOGOUT_REDIRECT_URL = "/login/" +LOGOUT_REDIRECT_URL = "" MESSAGE_STORAGE = "django.contrib.messages.storage.session.SessionStorage" LANGUAGE_CODE = "pt-br" + +CORS_ALLOWED_ORIGINS = [ + 'http://localhost:5173', +] diff --git a/API/AcheiUnB/urls.py b/API/AcheiUnB/urls.py index 87101c40..bdf17044 100644 --- a/API/AcheiUnB/urls.py +++ b/API/AcheiUnB/urls.py @@ -25,7 +25,7 @@ urlpatterns = [ path('admin/', admin.site.urls), path('accounts/', include('allauth.urls')), # Rotas do Allauth para login pelo Microsoft - path('login/', auth_views.LoginView.as_view(template_name='users/login.html'), name='login'), + path('', auth_views.LoginView.as_view(template_name='users/login.html'), name='login'), path('', include('users.urls')), # Inclui as rotas do app "users" path('api/token/', TokenObtainPairView.as_view(), name='token_obtain_pair'), # Obter token de acesso e refresh path('api/token/refresh/', TokenRefreshView.as_view(), name='token_refresh'), # Atualizar token de acesso diff --git a/API/requirements.txt b/API/requirements.txt index f875b1ed..e99d5727 100644 --- a/API/requirements.txt +++ b/API/requirements.txt @@ -13,4 +13,5 @@ Pillow djangorestframework django-extensions djangorestframework-simplejwt -channels \ No newline at end of file +channels +django-cors-headers==4.6.0 \ No newline at end of file diff --git a/docs/mkdocks.yml b/docs/mkdocks.yml deleted file mode 100644 index e2f02c22..00000000 --- a/docs/mkdocks.yml +++ /dev/null @@ -1,25 +0,0 @@ -site_name: Documentação Achei-Unb -repo_url: https://github.com/unb-mds/2024-2-AcheiUnB - -nav: - - Home: index.md - - Como contribuir?: documentacao-padroes-commits-branches.md - - Sprints: - - Sprint 0: sprints/sprint-0.md - - Sprint 1: sprints/sprint-1.md - - Sprint 2: sprints/sprint-2.md - - Sprint 3: sprints/sprint-3.md - - Sprint 4: sprints/sprint-4.md - - Sprint 5: sprints/sprint-5.md - - - Arquitetura: Architecture.md - - Front-End: - - Figma: front-end/figma.md - - Identidade Visual: front-end/Visual-identity.md - -theme: - name: material - features: - - navigation.tabs - - navigation.tabs.sticky - diff --git a/docs/sprints/sprint-6.md b/docs/sprints/sprint-6.md index b81e2cc4..3328a086 100644 --- a/docs/sprints/sprint-6.md +++ b/docs/sprints/sprint-6.md @@ -30,21 +30,17 @@ disponíveis para auxiliar os membros do front e do DevOps, caso necessário. ### Reunião 2 -Data: DD/MM/AAAA -Local: Local da reunião +Data: 02/12/2024 +Local: Discord **Ata:** - -- ### Reunião 3 -Data: DD/MM/AAAA -Local: Local da reunião -**Ata:** +Iniciamos a reunião realizando a review da Sprint, onde contamos como foi o caminhar da semana em relação às tarefas propostas, apontando como maior dificuldade a questão da semana estar cheia de outros afazeres/atividades da faculdade, porém, a grande maioria das tasks foram concluídas com êxito. Indo para a retrospectiva, analisamos os pontos positivos e negativos no desenvolver do projeto, até agora, notando uma melhora significante na comunicação entre os membros (especialmente o DevOps). Além disso, foi analisada a possibilidade de remanejamento dos times do grupo (todos passarem a atuar no Front e no Back após a Release 1). ## Finalização -> A _Sprint_ deve ser finalizada com um resumo do que realmente foi feito e quais tarefas foram postergadas para a próxima _Sprint_. Além disso, deve conter um link para as _issues_ que foram fechadas. +> A Sprint foi finalizada com grande parte das tarefas propostas realizadas com sucesso, havendo, além disso, uma melhora significativa na comunicação entre os membros da equipe. --- **Observações:** -> Esse espaço deve ser utilizado para registrar qualquer observação que o time julgar pertinente. +> Evolução do time DevOps! diff --git a/docs/sprints/sprint-7.md b/docs/sprints/sprint-7.md new file mode 100644 index 00000000..9d576826 --- /dev/null +++ b/docs/sprints/sprint-7.md @@ -0,0 +1,44 @@ +# Sprint 7 +Período: 02/12/2024 a 09/12/2024 + +## Descrição +> Para a Sprint 7, a equipe se propôs a realizar as seguintes tarefas: +> - Para o Back-end, finalizar o login Microsoft graph e configurar o banco de dados no Heroku (juntamente com o DevOps). +> - Para o Front-end, criar o redirecionamento da tela de login para a tela de perdidos (por enquanto, estática). +> - Para o DevOps, finalizar a implementação do Heroku, além de, juntamente com o Back-end, configurar o banco de dados no Heroku. +> - E por fim, para todos, revisar o Story Map. + +## Objetivos +- Revisão do Story Map do projeto +- Finalização do login Microsoft graph +- Finalização da implementação do Heroku +- Configuração do banco de dados no Heroku +- Criação do redirecionamento da tela de login para a tela de perdidos (por enquanto, estática) + +## Reuniões +### Reunião 1 +Data: 02/12/2024 +Local: Discord +**Ata:** + +Para a planning, foi conversado sobre o que iremos apresentar na Release 1, como forma de determinar os objetivos para a Sprint 7. Com isso, foram decididas as tarefas, debatendo também a necessidade de escolher um arquiteto para a equipe. Um ponto importante foi que, embora tenha sido decidido anteriormente o Render como tecnologia de hospedagem, mudamos a escolha para o Heroku (plano de $5, utilizando o auxílio para estudantes para pagar), visto que foi descoberto que o plano gratuito do Render dura somente durante 1 mês (não foi muito prejudicado o trabalho já realizado na implementação, pois a transição de um serviço para o outro não é muito complexa, além de aproveitável). Com isso, fizemos a revisão das histórias de usuários (adiantamento do que seria feito somente na Sprint seguinte). + + +### Reunião 2 +Data: DD/MM/AAAA +Local: Local da reunião +**Ata:** + + +### Reunião 3 +Data: DD/MM/AAAA +Local: Local da reunião +**Ata:** + + +## Finalização +> A _Sprint_ deve ser finalizada com um resumo do que realmente foi feito e quais tarefas foram postergadas para a próxima _Sprint_ (caso existam). +--- + +**Observações:** +> Esse espaço deve ser utilizado para registrar qualquer observação que o time julgar pertinente. diff --git a/mkdocs.yml b/mkdocs.yml index e2f02c22..f74299e4 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -11,6 +11,14 @@ nav: - Sprint 3: sprints/sprint-3.md - Sprint 4: sprints/sprint-4.md - Sprint 5: sprints/sprint-5.md + - Sprint 6: sprints/sprint-6.md + - Sprint 7: sprints/sprint-7.md + - Sprint 8: sprints/sprint-8.md + - Sprint 9: sprints/sprint-9.md + - Sprint 10: sprints/sprint-10.md + - Sprint 11: sprints/sprint-11.md + - Sprint 12: sprints/sprint-12.md + - Sprint 13: sprints/sprint-13.md - Arquitetura: Architecture.md - Front-End: @@ -19,7 +27,28 @@ nav: theme: name: material + palette: + # Palette toggle for automatic mode + - media: "(prefers-color-scheme)" + toggle: + icon: material/brightness-auto + name: Switch to light mode + # Palette toggle for light mode + - media: "(prefers-color-scheme: light)" + scheme: default + toggle: + icon: material/brightness-7 + name: Switch to dark mode + # Palette toggle for dark mode + - media: "(prefers-color-scheme: dark)" + scheme: slate + toggle: + icon: material/brightness-2 + name: Switch to system preference + features: - navigation.tabs - navigation.tabs.sticky + - navigation.path + - navigation.top diff --git a/web/package-lock.json b/web/package-lock.json index 4851bcf2..2e70aa76 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -8,6 +8,7 @@ "name": "acheiunb", "version": "0.0.0", "dependencies": { + "axios": "^1.7.8", "vue": "^3.5.12", "vue-router": "^4.4.5" }, @@ -387,6 +388,11 @@ "dev": true, "license": "MIT" }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, "node_modules/autoprefixer": { "version": "10.4.20", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", @@ -425,6 +431,16 @@ "postcss": "^8.1.0" } }, + "node_modules/axios": { + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.8.tgz", + "integrity": "sha512-Uu0wb7KNqK2t5K+YQyVCLM76prD5sRFjKHbJYCP1J7JFGEQ6nN7HWn9+04LAeiJ3ji54lgS/gZCH1oxyrf1SPw==", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -590,6 +606,17 @@ "dev": true, "license": "MIT" }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/commander": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", @@ -628,6 +655,14 @@ "node": ">=4" } }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/didyoumean": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", @@ -864,6 +899,25 @@ "node": ">=8" } }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, "node_modules/foreground-child": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", @@ -881,6 +935,19 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/form-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fraction.js": { "version": "4.3.7", "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", @@ -1120,6 +1187,25 @@ "node": ">=8.6" } }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", @@ -1465,6 +1551,11 @@ "dev": true, "license": "MIT" }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", diff --git a/web/package.json b/web/package.json index 544d576d..16f6601e 100644 --- a/web/package.json +++ b/web/package.json @@ -9,6 +9,7 @@ "preview": "vite preview" }, "dependencies": { + "axios": "^1.7.8", "vue": "^3.5.12", "vue-router": "^4.4.5" }, diff --git a/web/postcss.config.cjs b/web/postcss.config.cjs new file mode 100644 index 00000000..f3b817e8 --- /dev/null +++ b/web/postcss.config.cjs @@ -0,0 +1,7 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, + }; + \ No newline at end of file diff --git a/web/src/App.vue b/web/src/App.vue index 441f32a5..3680ea16 100644 --- a/web/src/App.vue +++ b/web/src/App.vue @@ -1,11 +1,9 @@ - + diff --git a/web/src/assets/base.css b/web/src/assets/base.css index 8816868a..e69de29b 100644 --- a/web/src/assets/base.css +++ b/web/src/assets/base.css @@ -1,86 +0,0 @@ -/* color palette from */ -:root { - --vt-c-white: #ffffff; - --vt-c-white-soft: #f8f8f8; - --vt-c-white-mute: #f2f2f2; - - --vt-c-black: #181818; - --vt-c-black-soft: #222222; - --vt-c-black-mute: #282828; - - --vt-c-indigo: #2c3e50; - - --vt-c-divider-light-1: rgba(60, 60, 60, 0.29); - --vt-c-divider-light-2: rgba(60, 60, 60, 0.12); - --vt-c-divider-dark-1: rgba(84, 84, 84, 0.65); - --vt-c-divider-dark-2: rgba(84, 84, 84, 0.48); - - --vt-c-text-light-1: var(--vt-c-indigo); - --vt-c-text-light-2: rgba(60, 60, 60, 0.66); - --vt-c-text-dark-1: var(--vt-c-white); - --vt-c-text-dark-2: rgba(235, 235, 235, 0.64); -} - -/* semantic color variables for this project */ -:root { - --color-background: var(--vt-c-white); - --color-background-soft: var(--vt-c-white-soft); - --color-background-mute: var(--vt-c-white-mute); - - --color-border: var(--vt-c-divider-light-2); - --color-border-hover: var(--vt-c-divider-light-1); - - --color-heading: var(--vt-c-text-light-1); - --color-text: var(--vt-c-text-light-1); - - --section-gap: 160px; -} - -@media (prefers-color-scheme: dark) { - :root { - --color-background: var(--vt-c-black); - --color-background-soft: var(--vt-c-black-soft); - --color-background-mute: var(--vt-c-black-mute); - - --color-border: var(--vt-c-divider-dark-2); - --color-border-hover: var(--vt-c-divider-dark-1); - - --color-heading: var(--vt-c-text-dark-1); - --color-text: var(--vt-c-text-dark-2); - } -} - -*, -*::before, -*::after { - box-sizing: border-box; - margin: 0; - font-weight: normal; -} - -body { - min-height: 100vh; - color: var(--color-text); - background: var(--color-background); - transition: - color 0.5s, - background-color 0.5s; - line-height: 1.6; - font-family: - Inter, - -apple-system, - BlinkMacSystemFont, - 'Segoe UI', - Roboto, - Oxygen, - Ubuntu, - Cantarell, - 'Fira Sans', - 'Droid Sans', - 'Helvetica Neue', - sans-serif; - font-size: 15px; - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} diff --git a/web/src/assets/main.css b/web/src/assets/main.css index a69e41b9..f60d199c 100644 --- a/web/src/assets/main.css +++ b/web/src/assets/main.css @@ -1,38 +1,4 @@ -@import './base.css'; +/*@import './base.css';*/ @tailwind base; @tailwind components; @tailwind utilities; - -#app { - max-width: 1280px; - margin: 0 auto; - padding: 2rem; - font-weight: normal; -} - -a, -.green { - text-decoration: none; - color: hsla(160, 100%, 37%, 1); - transition: 0.4s; - padding: 3px; -} - -@media (hover: hover) { - a:hover { - background-color: hsla(160, 100%, 37%, 0.2); - } -} - -@media (min-width: 1024px) { - body { - display: flex; - place-items: center; - } - - #app { - display: grid; - grid-template-columns: 1fr 1fr; - padding: 0 2rem; - } -} diff --git a/web/src/components/Logo.vue b/web/src/components/Logo.vue new file mode 100644 index 00000000..d223fca1 --- /dev/null +++ b/web/src/components/Logo.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/web/src/components/icons/Microsoft_logo2.svg b/web/src/components/icons/Microsoft_logo2.svg new file mode 100644 index 00000000..5334aa7c --- /dev/null +++ b/web/src/components/icons/Microsoft_logo2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/main.js b/web/src/main.js index 5a5dbdba..7a9c7a85 100644 --- a/web/src/main.js +++ b/web/src/main.js @@ -1,11 +1,11 @@ -import './assets/main.css' +import "./assets/main.css"; -import { createApp } from 'vue' -import App from './App.vue' -import router from './router' +import { createApp } from "vue"; +import App from "./App.vue"; +import router from "./router"; -const app = createApp(App) +const app = createApp(App); -app.use(router) +app.use(router); -app.mount('#app') +app.mount("#app"); diff --git a/web/src/router/index.js b/web/src/router/index.js index 98ef25a2..bb8bd734 100644 --- a/web/src/router/index.js +++ b/web/src/router/index.js @@ -1,4 +1,23 @@ -import { createRouter, createWebHistory } from 'vue-router' +import { createRouter, createWebHashHistory } from "vue-router"; +import Login from "../views/Login.vue"; +import About from "../views/About.vue"; +const routes = [ + { + path: "/", + name: "Login", + component: Login, + }, + { + path: "/about", + name: "About", + component: About, + }, +]; -export default router +const router = createRouter({ + history: createWebHashHistory(), // Usar histórico do navegador + routes, +}); + +export default router; diff --git a/web/src/services/axios.js b/web/src/services/axios.js new file mode 100644 index 00000000..152ed0bf --- /dev/null +++ b/web/src/services/axios.js @@ -0,0 +1,8 @@ +import axios from "axios"; + +axios.defaults.baseURL = "http://localhost:8000/api"; +axios.defaults.timeout = 10000; +axios.defaults.headers["Content-Type"] = "application/json"; +axios.defaults.headers["Accept"] = "application/json"; + +export default axios; diff --git a/web/src/views/About.vue b/web/src/views/About.vue new file mode 100644 index 00000000..cf428b50 --- /dev/null +++ b/web/src/views/About.vue @@ -0,0 +1,7 @@ + + + + + diff --git a/web/src/views/Login.vue b/web/src/views/Login.vue new file mode 100644 index 00000000..c5ad3dc1 --- /dev/null +++ b/web/src/views/Login.vue @@ -0,0 +1,31 @@ + + + + + \ No newline at end of file diff --git a/web/tailwind.config.js b/web/tailwind.config.js index c189a4a5..6f5625e4 100644 --- a/web/tailwind.config.js +++ b/web/tailwind.config.js @@ -1,9 +1,18 @@ /** @type {import('tailwindcss').Config} */ export default { - content: [], + content: [ + "./src/views/Login.vue", + "./src/views/About.vue", + "./src/components/Logo.vue", + ], theme: { - extend: {}, + extend: { + colors: { + azul: "#133E78", + laranja: "#F59E0B", + verde: "#008940", + }, + }, }, plugins: [], -} - +}; diff --git a/web/vite.config.js b/web/vite.config.js index 4217010a..8ebd6ffe 100644 --- a/web/vite.config.js +++ b/web/vite.config.js @@ -10,6 +10,9 @@ export default defineConfig({ vue(), vueDevTools(), ], + css: { + postcss: './postcss.config.cjs', + }, resolve: { alias: { '@': fileURLToPath(new URL('./src', import.meta.url))