{"id":23069150,"url":"https://github.com/nixoletas/intranet-govbr","last_synced_at":"2026-05-09T15:06:28.283Z","repository":{"id":258645881,"uuid":"874326859","full_name":"nixoletas/intranet-govbr","owner":"nixoletas","description":"Nova intranet modelo GovBR! Tutorial completo! ⭐ ( Express | Angular | Strapi )","archived":false,"fork":false,"pushed_at":"2024-11-28T19:40:25.000Z","size":7842,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-08T23:17:21.323Z","etag":null,"topics":["angular","govbr","javascript"],"latest_commit_sha":null,"homepage":"https://nixoletas.github.io/intranet-govbr/home","language":"TypeScript","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/nixoletas.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,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-17T16:20:27.000Z","updated_at":"2025-01-24T15:00:42.000Z","dependencies_parsed_at":"2024-10-20T16:38:08.515Z","dependency_job_id":null,"html_url":"https://github.com/nixoletas/intranet-govbr","commit_stats":null,"previous_names":["nixoletas/intranet-govbr"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nixoletas%2Fintranet-govbr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nixoletas%2Fintranet-govbr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nixoletas%2Fintranet-govbr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nixoletas%2Fintranet-govbr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nixoletas","download_url":"https://codeload.github.com/nixoletas/intranet-govbr/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246981151,"owners_count":20863825,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["angular","govbr","javascript"],"created_at":"2024-12-16T06:13:47.143Z","updated_at":"2026-05-09T15:06:28.230Z","avatar_url":"https://github.com/nixoletas.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# Intranet GovBR (novo modelo)\nCom Angular \u0026 Strapi. Tutorial completo ⭐\n\n![Captura de tela 2024-10-17 164734](https://github.com/user-attachments/assets/1767a101-3ce4-472e-9034-bad553b6db25)\n\n[Live Demo](https://nixoletas.github.io/intranet-govbr/home)\n\n\u003c/div\u003e\n\n## Boas-vindas! 👋\n\nOlá pessoal! Sou o Tenente Daisuke. Nesse repositório vou explicar como subir a sua nova intranet de maneira simples e descomplicada. \n\nPrimeiro irei mostrar como subir seu modelo de desenvolvimento, depois o de produção! Caso já tenha passado por aqui, vá direto para subir para [PRODUÇÃO](./PROD.md)\n\nDevo começar dizendo sobre os recursos que serão possíveis subir com esse repositório, pois muitas OM's usam maneiras diferentes de disponibilizar boletins, escala de serviço, aba institucional, notícia, links úteis etc.\n\n- Header personalizável ✅\n- Links úteis ✅\n- Links principais ✅\n- Carrosel ✅\n- Anversariantes ✅\n- Notícias ✅\n- Footer ✅\n- Ramais ✅\n- Chamado STI ✅\n- Livro de saída da guarnição ✅\n- Arranchamento ❌\n- Sistema de combustível ❌\n\n## Requisitos de sistema\n\n- git [instalar git](https://git-scm.com/) | linux: `sudo apt install git`\n- docker [instalar docker](https://docs.docker.com/engine/install/)\n- node [instalar node](https://nodejs.org/en/download/package-manager)\n\n# Começando\n\nclonar repositório e acessar a pasta do projeto\n```\ngit clone https://github.com/nixoletas/intranet-govbr\ncd intranet-govbr\n```\n\nneste repositório você encontrará 3 pastas. \n\n### 1. assets-server\n\n**assets-server** é a pasta que contém o servidor de assets que irá disponibilizar os ícones do [fontawesome](https://fontawesome.com/) e a fonte [Rawline](https://www.gov.br/saude/pt-br/centrais-de-conteudo/manual-de-marcas/brasil-sorridente/fontes-rawline/view) do padrão de Design do governo. Ele também irá fornecer outros recursos adicionais como previsão do tempo, suporte para chamados do Telegram, suporte para requisições externas, arquivos .md e arquivos de imagem (jpg, png, svg).\n\n### 2. intranet-angular\n\n**intranet-angular** é o nosso front-end feito em [Angular](https://angular.dev/) no modelo Single-Page Application que irá servir nosso HTML, CSS e Javascript, como todos seus componentes personalizáveis e consumo de API's externas.\nNo caso ele irá consumir o `assets-server` e o `strapi`.\n\n### 2. strapi-new\n\n**strapi** é o nosso Headless-CMS [ver página](https://strapi.io/). Ele irá nos fornecer uma maneira fácil de manipular as publicações dos diversos componentes que sofrem alterações frequentes (carrosel, aniversariantes, notícias, avisos, etc).\n\n# Rodar Strapi\n\nPara rodar o Strapi é necessário ter `node`. Acesse a pasta /strapi-new com `cd strapi-new`. Nela você precisa editar as variáveis de ambiente: \n```\ncp .env.example .env\n```\n\nesse comando cria o arquivo `.env` necessário para iniciar o strapi sem problemas, nele contém o seguinte:\n```env\nHOST=127.0.0.1\nPORT=8080\nAPP_KEYS=\"toBeModified1,toBeModified2\"\nAPI_TOKEN_SALT=tobemodified\nADMIN_JWT_SECRET=tobemodified\nTRANSFER_TOKEN_SALT=tobemodified\nJWT_SECRET=tobemodified\n```\n\n\u003eno arquivo de exemplo, o HOST está setado para ser o `localhost`, mas no \"valendo\" você deve alterar para o IP do seu servidor.\n**A porta recomendada é a 80** para não haver problemas de Firewall dos CTA's e VPN.\n\nApós isso pode instalar as dependências e iniciar o servidor\n\n```\nnpm install\nnpm run develop\n```\n\nApós isso, poderá acessar seu servidor em: [http://localhost:8080](http://localhost:8080)\n\n### Crie a conta de administrador\n\n![image](https://github.com/user-attachments/assets/caf7b2a9-2196-4f24-ba19-5fdde3a4f132)\n\nVocê poderá acessar o strapi e observar as estruturas de conteúdo:\n- Content Manager (para criar as publicações)\n- Content-type Builder (para criar estruturas de conteúdo)\n\nPrincipais tipos de conteúdo:\n\n- Aniversariantes\n- aviso\n- carrosel\n- noticia\n- popup\n\n### Altere as permissões de acesso da API\n\nAcessando \"User \u0026 Permissions Plugin\" e marcando \"find\" e \"find one\" dos Content-Types\n\n![image](https://github.com/user-attachments/assets/bd7f2eeb-2548-4e77-a8d7-4e107883def8)\n\n### Strapi configurado! ✅\n\nPronto! Agora é só começar a criar as postagens, notícias, carrosel, e cadastro de aniversariantes.\n\n# Rodar Assets Server\n\nPara iniciar o servidor de assets é quase a mesma coisa do strapi. Acesse a pasta /assets-server com `cd assets-server`. Nela você precisa editar as variáveis de ambiente também: \n```\ncp .env.example .env\n```\n\nesse comando cria o arquivo `.env` necessário para iniciar o strapi sem problemas, nele contém o seguinte:\n```env\nPORT=3000\nBOT_ID=\"\"\nCHAT_ID=\nSERVER_IP=127.0.0.1\n```\n\nA porta selecionada é 3000 mas para produção recomenda-se a 80, sempre para evitar bloqueios de VPN e Firewall.\n\nIgnore por enquanto o \"BOT_ID\" e \"CHAT_ID\", eles serão usados para a função de Chamados - STI. Será ensinado futuramente!\n\n### Instalar dependências e rodar projeto\n\n```\nnpm install\nnpm run dev\n```\n\n### Servidor de assets configurado ✅\n\nPronto, seu servidor de assets deverá estar configurado e sua intranet pronta para consumir, tanto o Strapi quanto o Assets.\n\n# Rodar Intranet Angular\n\nPara iniciar o servidor angular, basta instalar as dependências e rodar. Acesse a pasta /intranet-angular com `cd intranet-angular`:\n\n### Instalar dependências e rodar projeto\n\n```\nnpm install\nnpm start\n```\n\n### Intranet pronta e acessível em [http://localhost:4200](http://localhost:4200) ✅ Porém...\n\nFique atento para algumas variáveis e endereços IP!\n\nPrimeiro, acesse a pasta /src e verifique o arquivo `index.html`, ele deve conter em seu corpo, referências aos IP's dos servidores de **Strapi** e **Assets**:\n\n```html\n\u003c!doctype html\u003e\n\u003chtml lang=\"pt-BR\"\u003e\n  \u003chead\u003e\n    \u003cmeta charset=\"UTF-8\" /\u003e\n    \u003cbase href=\"/\" /\u003e\n    \u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" /\u003e\n    \u003cmeta http-equiv=\"X-UA-Compatible\" content=\"ie=edge\" /\u003e\n    \u003ctitle\u003eIntranet\u003c/title\u003e\n    \u003clink rel=\"icon\" type=\"image/x-icon\" href=\"http://localhost:3000/assets/pics/logo9bcom2.png\" /\u003e\n    \u003clink\n      rel=\"stylesheet\"\n      href=\"http://localhost:3000/assets/rawline/rawline.css\"\n      media=\"print\" onload=\"this.media='all'\" /\u003e\n    \u003clink rel=\"stylesheet\" href=\"http://localhost:3000/assets/font-awesome/css/all.min.css\" media=\"print\" onload=\"this.media='all'\"/\u003e\n  \u003c/head\u003e\n  \u003cbody\u003e\n    \u003capp-root\u003e\u003c/app-root\u003e\n  \u003c/body\u003e\n\u003c/html\u003e\n```\n\nDepois acesse as variáveis de ambiente em /environments: \n\nPRODUÇÃO -\u003e `environment.prod.ts` | DESENVOLVIMENTO -\u003e `environment.ts`\n\nTente manter as duas sempre cópias uma da outra para evitar confusão. Mas o ideal é ter o desenvolvimento na sua máquina local e quando seu código estiver legal, usar produção. O Angular usa automaticamente cada uma das variáveis conforme o método de rodar o projeto.\n\n| Servidor | Desenvolvimento     | Produção               |\n|----------|---------------------|------------------------|\n| Assets   | localhost:3000       | IP do servidor de assets : 80 |\n| Angular  | localhost:4200       | IP do servidor Angular : 80 |\n| Strapi   | localhost:1337       | IP do servidor Strapi : 80 |\n\nComo dito anteriormente, tente sempre rodar os 3 servidores em máquinas separadas com seu próprio IP e na porta 80 para evitar problemas de Firewall e VPN.\n\nExemplo de `environment.ts`:\n\n```typescript\nexport const environment = {\n  production: false,\n\n  EXPRESS_FORM: 'http://localhost:3000/feedback',\n\n  ASSETS_PICS: 'http://localhost:3000/assets/pics/',\n  ASSETS_WEATHER: 'http://localhost:3000/weather',\n  ASSETS_SVG: 'http://localhost:3000/assets/svg/',\n  ASSETS_MD: 'http://localhost:3000/assets/markdown/',\n\n  STRAPI_API: 'http://localhost:1337',\n  OPERACOES_API: 'http://localhost:1337/api/operacoes',\n  POP_API: 'http://localhost:1337/api/pops',\n  NEWS_API: 'http://localhost:1337/api/noticias?populate=*',\n  SINGLE_NEWS: 'http://localhost:1337/api/noticias',\n  NIVER_API: 'http://localhost:1337/api/aniversariantes',\n  AVISOS_API: 'http://localhost:1337/api/avisos',\n  GALERIA_API: 'http://localhost:1337/api/galerias?populate=*',\n\n  INTRANET: 'http://10.56.19.133',\n  REPOSITORIO: 'http://10.56.19.159/webdav',\n\n  CARGA_UPLOAD: 'http://10.56.19.152:5000/upload'\n\n}\n```\n\nExemplo de `environment.prod.ts`:\n\n```typescript\nexport const environment = {\n  production: true,\n\n  EXPRESS_FORM: 'http://10.56.19.158/feedback',\n\n  ASSETS_PICS: 'http://10.56.19.152/assets/pics/',\n  ASSETS_WEATHER: 'http://10.56.19.152/weather',\n  ASSETS_SVG: 'http://10.56.19.152/assets/svg/',\n  ASSETS_MD: 'http://10.56.19.152/assets/markdown/',\n\n  STRAPI_API: 'http://10.56.19.154',\n  OPERACOES_API: 'http://10.56.19.154/api/operacoes',\n  POP_API: 'http://10.56.19.154/api/pops',\n  NEWS_API: 'http://10.56.19.154/api/noticias?populate=*',\n  SINGLE_NEWS: 'http://10.56.19.154/api/noticias',\n  NIVER_API: 'http://10.56.19.154/api/familias',\n  AVISOS_API: 'http://10.56.19.154/api/avisos',\n  GALERIA_API: 'http://10.56.19.154/api/galerias?populate=*',\n\n  INTRANET: 'http://10.56.19.133',\n  REPOSITORIO: 'http://10.56.19.159/webdav',\n\n  CARGA_UPLOAD: 'http://10.56.19.152:5000/upload'\n}\n```\n\n## Entenda a estrutura do Intranet Angular\n\n[ANGULAR.md](./ANGULAR.md)\n\n## Como criar Bot Telegram para abertura de chamados\n\n[BOT_TELEGRAM.md](./BOT_TELEGRAM.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnixoletas%2Fintranet-govbr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnixoletas%2Fintranet-govbr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnixoletas%2Fintranet-govbr/lists"}