{"id":26067192,"url":"https://github.com/paulo1402/pruvo-challenge","last_synced_at":"2026-04-13T04:02:17.862Z","repository":{"id":198273812,"uuid":"698607088","full_name":"Paulo1402/Pruvo-Challenge","owner":"Paulo1402","description":"Aplicação de cadastro de provas usado como desafio técnico da Pruvo","archived":false,"fork":false,"pushed_at":"2023-10-04T17:11:35.000Z","size":287,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-19T12:27:42.396Z","etag":null,"topics":["firebase","tinymce","typescript","vue","vuetify"],"latest_commit_sha":null,"homepage":"https://pruvo-challenge.web.app/","language":"Vue","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Paulo1402.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-09-30T12:23:34.000Z","updated_at":"2023-10-04T11:32:02.000Z","dependencies_parsed_at":"2023-10-05T05:45:11.581Z","dependency_job_id":null,"html_url":"https://github.com/Paulo1402/Pruvo-Challenge","commit_stats":null,"previous_names":["paulo1402/pruvo-challenge"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Paulo1402/Pruvo-Challenge","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Paulo1402%2FPruvo-Challenge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Paulo1402%2FPruvo-Challenge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Paulo1402%2FPruvo-Challenge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Paulo1402%2FPruvo-Challenge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Paulo1402","download_url":"https://codeload.github.com/Paulo1402/Pruvo-Challenge/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Paulo1402%2FPruvo-Challenge/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31739050,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-13T03:27:07.512Z","status":"ssl_error","status_checked_at":"2026-04-13T03:26:53.610Z","response_time":93,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["firebase","tinymce","typescript","vue","vuetify"],"created_at":"2025-03-08T21:34:07.471Z","updated_at":"2026-04-13T04:02:17.835Z","avatar_url":"https://github.com/Paulo1402.png","language":"Vue","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ❤ Pruvo-Challenge\n\nAplicação Web para cadastro e edição de provas com integração ao Firebase totalmente responsiva.\n\n![preview](./.github/preview.png)\n\n[Clique aqui para acessar](https://pruvo-challenge.web.app/)\n\nO aplicativo possui rotas protegidas que só podem ser acessadas após autenticação, os dados são persistidos no Firebase Firestore e atualizados em tempo real atráves de uma função de callback acionada pelo próprio Firebase ao detectar uma alteração na base de dados.\n\nO usuário pode facilmente criar, visualizar, editar e deletar uma prova atráves da interface desenvolvida usando recursos de reatividade para deixar a interação mais fluída.\n\nHá a opção de alterar o tema da aplicação entre tema claro e escuro a qualquer momento através da barra de navegação.\n\nO login é persistido durante sessões, portanto na maioria das vezes não será necessário fazer login novamente.\n\nPara edição do conteúdo de uma prova o aplicativo faz uso de um editor chamado [TinyMCE](https://www.tiny.cloud/tinymce/), esse editor permite a criação de textos ricos usando recursos do html de forma fácil e rápida. Ao lado do editor teremos 3 botões que permite a inserção de templates para questões, sendo elas:\n\n- Discursivas\n- Múltipla Escolha\n- Matriz\n\n_São apenas templates, podem e devem ser modificados_\n\nA aplicação pode ser executada em ambiente de desenvolvimento usando o comando `npm run dev` após instalar as dependências do Node.js usando `npm install`. Mas há variavéis de ambiente para acesso ao Firebase e ao TinyMCE que não fazem parte do código fonte, portanto não estão disponíveis no repositório.\n\n## ❔ Curiosidades\n\n### Rotas\n\n* / - Home\n* /new - Criar nova prova (requer login)\n* /tests - Listar provas criadas (requer login)\n* /test/:id - Visualizar prova criada (requer login)\n* /login - Realizar autenticação\n\nQualquer outra rota acessada é redirecionada para uma página de erro personalizada :)\n\n---\n\n### Estrutura dos dados no Firestore\n\n- users (collection)\n  - [USER_ID] (document)\n    - tests (subcollection)\n      - [TEST_ID] (document)\n        - name: string\n        - content: string\n        - createdAt: timestamp\n        - updatedAt: timestamp\n\n---\n\n### Gerenciamento de estado\n\nA biblioteca oficial para gerenciamento de estados no Vue.js chamada Pinia tem função primordial na reatividade e comunicação de estados entre componentes, principalmente no compartilhamento do estado da autenticação e dos dados das provas do usuário logado, dessa forma reduzindo bastante tempo com requisições desnecessárias para o banco de dados e garantindo a velocidade na resposta do usuário.\n\n## 🛠 Tecnologias\n\n- TypeScript\n- Vue.js\n- Vuetify\n- Pinia\n- Firebase\n- TinyMCE\n- HTML\n- CSS\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpaulo1402%2Fpruvo-challenge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpaulo1402%2Fpruvo-challenge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpaulo1402%2Fpruvo-challenge/lists"}