diff --git a/.all-contributorsrc b/.all-contributorsrc new file mode 100644 index 00000000..c4b146a9 --- /dev/null +++ b/.all-contributorsrc @@ -0,0 +1,156 @@ +{ + "projectName": "querido-diario-frontend", + "projectOwner": "okfn-brasil", + "repoType": "github", + "repoHost": "https://github.com", + "files": [ + "docs/README.md", + "docs/README-en-US.md", + "docs/CONTRIBUTORS.md", + "docs/CONTRIBUTORS-en-US.md", + "docs/CONTRIBUTING.md", + "docs/CONTRIBUTING-en-US.md" + ], + "imageSize": 100, + "commit": false, + "commitConvention": "angular", + "contributors": [ + { + "login": "vinicivs-monteiro", + "name": "Vinícius Monteiro", + "avatar_url": "https://avatars.githubusercontent.com/u/1107639?v=4", + "profile": "https://github.com/vinicivs-monteiro", + "contributions": [ + "doc" + ] + }, + { + "login": "trevineju", + "name": "Juliana Trevine", + "avatar_url": "https://avatars.githubusercontent.com/u/44185775?v=4", + "profile": "https://github.com/trevineju", + "contributions": [ + "doc" + ] + }, + { + "login": "lguima", + "name": "Lucas Guima", + "avatar_url": "https://avatars.githubusercontent.com/u/1562097?v=4", + "profile": "https://www.linkedin.com/in/lucasguima", + "contributions": [ + "doc" + ] + }, + { + "login": "LucasMendoncaWF", + "name": "LucasMendoncaWF", + "avatar_url": "https://avatars.githubusercontent.com/u/43712801?v=4", + "profile": "https://github.com/LucasMendoncaWF", + "contributions": [ + "doc" + ] + }, + { + "login": "ogecece", + "name": "Giulio Carvalho", + "avatar_url": "https://avatars.githubusercontent.com/u/26327506?v=4", + "profile": "https://github.com/ogecece", + "contributions": [ + "doc" + ] + }, + { + "login": "ArianeCamilo", + "name": "Ariane Camilo", + "avatar_url": "https://avatars.githubusercontent.com/u/32268301?v=4", + "profile": "https://github.com/ArianeCamilo", + "contributions": [ + "doc" + ] + }, + { + "login": "tigreped", + "name": "Pedro Guimarães", + "avatar_url": "https://avatars.githubusercontent.com/u/1479330?v=4", + "profile": "https://github.com/tigreped", + "contributions": [ + "doc" + ] + }, + { + "login": "rasrbk", + "name": "RasRbk", + "avatar_url": "https://avatars.githubusercontent.com/u/92368456?v=4", + "profile": "https://ok.org.br/", + "contributions": [ + "doc" + ] + }, + { + "login": "guicalmeida", + "name": "Guilherme Almeida", + "avatar_url": "https://avatars.githubusercontent.com/u/60672629?v=4", + "profile": "https://github.com/guicalmeida", + "contributions": [ + "doc" + ] + }, + { + "login": "trolzen", + "name": "trolzen", + "avatar_url": "https://avatars.githubusercontent.com/u/731584?v=4", + "profile": "https://github.com/trolzen", + "contributions": [ + "doc" + ] + }, + { + "login": "malungo", + "name": "malungo", + "avatar_url": "https://avatars.githubusercontent.com/u/28476?v=4", + "profile": "https://github.com/malungo", + "contributions": [ + "doc" + ] + }, + { + "login": "lucalves", + "name": "Lucas Alves", + "avatar_url": "https://avatars.githubusercontent.com/u/17712401?v=4", + "profile": "https://lucalves.github.io/", + "contributions": [ + "doc" + ] + }, + { + "login": "sergiomario", + "name": "Mário Sérgio", + "avatar_url": "https://avatars.githubusercontent.com/u/2698516?v=4", + "profile": "https://github.com/sergiomario", + "contributions": [ + "doc" + ] + }, + { + "login": "RenatoSiqueira", + "name": "Renato Siqueira", + "avatar_url": "https://avatars.githubusercontent.com/u/30542215?v=4", + "profile": "https://www.linkedin.com/in/renatosiqueira/", + "contributions": [ + "doc" + ] + }, + { + "login": "Winzen", + "name": "Luiz Eduardo", + "avatar_url": "https://avatars.githubusercontent.com/u/94500122?v=4", + "profile": "https://github.com/Winzen", + "contributions": [ + "doc" + ] + } + ], + "contributorsPerLine": 7, + "linkToUsage": true +} diff --git a/.github/actions/contributors-json/action.yaml b/.github/actions/contributors-json/action.yaml new file mode 100644 index 00000000..fb4ca858 --- /dev/null +++ b/.github/actions/contributors-json/action.yaml @@ -0,0 +1,10 @@ +name: 'Contributors JSON' +description: 'Generates JSON with contributors per repository' +inputs: + TOKEN: + description: "GitHub token to authenticate requests" + required: true +runs: + using: 'node20' + main: 'index.js' + diff --git a/.github/actions/contributors-json/index.js b/.github/actions/contributors-json/index.js new file mode 100644 index 00000000..e6ad02d1 --- /dev/null +++ b/.github/actions/contributors-json/index.js @@ -0,0 +1,68 @@ +const core = require('@actions/core'); +const { HttpClient } = require('@actions/http-client'); +const fs = require("fs/promises"); + +const { URLSearchParams } = require('url'); + +const doGet = async (url) => { + const headers = { + Authorization: `Bearer ${core.getInput("TOKEN")}` + } + const client = new HttpClient('client', [], { headers }) + return (await client.getJson(url)).result; +} + +const getRepoContributors = async (owner, repo, query) => { + console.info(`Getting ${owner}/${repo} contributors`); + return await doGet(`https://api.github.com/repos/${owner}/${repo}/contributors?${query}`); +} + +const listOrgRepos = async (org, query) => { + console.info(`Getting repos from ${org}`); + const result = []; + const paginate = async (page) => { + const next = await doGet(`https://api.github.com/orgs/${org}/repos?${new URLSearchParams({...query, page})}`); + result.push(...next); + if (next.length || page > 10) { // page > 10 as safeguard + await paginate(page + 1); + } + return result; + } + + return await paginate(1); +} + +const getUser = async (user, query) => { + console.info(`Getting user info for ${user}`); + return await doGet(`https://api.github.com/users/${user}?${new URLSearchParams(query)}`); +} + +const generateOutput = async (payload) => { + await fs.writeFile("contributors.json", payload) +} + +(async () => { + const owner = 'okfn-brasil'; + const repoNames = (await listOrgRepos(owner, { per_page: 100, type: 'public' })) + .filter(repo => !repo.archived) + .filter(repo => repo.name.includes("querido-diario")) + .map(repo => repo.name); + + const contribMap = {}; + for (const repo of repoNames) { + contribMap[repo] = []; + + const contributors = (await getRepoContributors(owner, repo)) + .map(c => c.login) + + for (const contributor of contributors) { + const user = await getUser(contributor) + if (user.name) { + contribMap[repo].push(user.name) + } + } + } + + generateOutput(JSON.stringify(contribMap)); + +})() diff --git a/.github/actions/contributors/Dockerfile b/.github/actions/contributors/Dockerfile new file mode 100644 index 00000000..a7b9fbde --- /dev/null +++ b/.github/actions/contributors/Dockerfile @@ -0,0 +1,10 @@ +FROM docker.io/node:20 + +WORKDIR /opt/contributors + +COPY package.json yarn.lock ./ +RUN yarn global add all-contributors-cli@6.26.1 + +COPY entrypoint.sh entrypoint.sh + +ENTRYPOINT [ "/opt/contributors/entrypoint.sh" ] diff --git a/.github/actions/contributors/entrypoint.sh b/.github/actions/contributors/entrypoint.sh new file mode 100755 index 00000000..5c25a852 --- /dev/null +++ b/.github/actions/contributors/entrypoint.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +export PATH="$(yarn global bin):$PATH" + +all-contributors check --config $GITHUB_WORKSPACE/.all-contributorsrc \ + | sed -n '2p' \ + | sed 's/, /\n/g' \ + | xargs -I {} all-contributors add --config $GITHUB_WORKSPACE/.all-contributorsrc {} code,doc + diff --git a/.github/actions/contributors/package.json b/.github/actions/contributors/package.json new file mode 100644 index 00000000..df1e81c6 --- /dev/null +++ b/.github/actions/contributors/package.json @@ -0,0 +1,11 @@ +{ + "scripts": { + "contributors:add": "all-contributors add", + "contributors:check": "all-contributors check", + "contributors:generate": "all-contributors generate" + }, + "license": "MIT", + "devDependencies": { + "all-contributors-cli": "^6.26.1" + } +} diff --git a/.github/actions/contributors/yarn.lock b/.github/actions/contributors/yarn.lock new file mode 100644 index 00000000..bb449ff3 --- /dev/null +++ b/.github/actions/contributors/yarn.lock @@ -0,0 +1,434 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/runtime@^7.18.9", "@babel/runtime@^7.7.6": + version "7.23.1" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.1.tgz#72741dc4d413338a91dcb044a86f3c0bc402646d" + integrity sha512-hC2v6p8ZSI/W0HUzh3V8C5g+NwSKzKPtJwSpTjwl0o297GP9+ZLQSkdvHz46CM3LqyoXxq+5G9komY+eSqSO0g== + dependencies: + regenerator-runtime "^0.14.0" + +all-contributors-cli@^6.26.1: + version "6.26.1" + resolved "https://registry.yarnpkg.com/all-contributors-cli/-/all-contributors-cli-6.26.1.tgz#9f3358c9b9d0a7e66c8f84ffebf5a6432a859cae" + integrity sha512-Ymgo3FJACRBEd1eE653FD1J/+uD0kqpUNYfr9zNC1Qby0LgbhDBzB3EF6uvkAbYpycStkk41J+0oo37Lc02yEw== + dependencies: + "@babel/runtime" "^7.7.6" + async "^3.1.0" + chalk "^4.0.0" + didyoumean "^1.2.1" + inquirer "^7.3.3" + json-fixer "^1.6.8" + lodash "^4.11.2" + node-fetch "^2.6.0" + pify "^5.0.0" + yargs "^15.0.1" + optionalDependencies: + prettier "^2" + +ansi-escapes@^4.2.1: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +async@^3.1.0: + version "3.2.4" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" + integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== + +camelcase@^5.0.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-width@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" + integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== + +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== + +didyoumean@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" + integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +external-editor@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + +figures@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + +find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +iconv-lite@^0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +inquirer@^7.3.3: + version "7.3.3" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" + integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== + dependencies: + ansi-escapes "^4.2.1" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-width "^3.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.19" + mute-stream "0.0.8" + run-async "^2.4.0" + rxjs "^6.6.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +json-fixer@^1.6.8: + version "1.6.15" + resolved "https://registry.yarnpkg.com/json-fixer/-/json-fixer-1.6.15.tgz#f1f03b6771fcb383695d458c53e50b10999fba7f" + integrity sha512-TuDuZ5KrgyjoCIppdPXBMqiGfota55+odM+j2cQ5rt/XKyKmqGB3Whz1F8SN8+60yYGy/Nu5lbRZ+rx8kBIvBw== + dependencies: + "@babel/runtime" "^7.18.9" + chalk "^4.1.2" + pegjs "^0.10.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lodash@^4.11.2, lodash@^4.17.19: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mute-stream@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + +node-fetch@^2.6.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + dependencies: + whatwg-url "^5.0.0" + +onetime@^5.1.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== + +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +pegjs@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/pegjs/-/pegjs-0.10.0.tgz#cf8bafae6eddff4b5a7efb185269eaaf4610ddbd" + integrity sha512-qI5+oFNEGi3L5HAxDwN2LA4Gg7irF70Zs25edhjld9QemOgp0CbvMtbFcMvFtEo1OityPrcCzkQFB8JP/hxgow== + +pify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f" + integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA== + +prettier@^2: + version "2.8.8" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" + integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== + +regenerator-runtime@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45" + integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA== + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +run-async@^2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== + +rxjs@^6.6.0: + version "6.6.7" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" + integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== + dependencies: + tslib "^1.9.0" + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== + +signal-exit@^3.0.2: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +through@^2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +tslib@^1.9.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +which-module@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" + integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +y18n@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== + +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs@^15.0.1: + version "15.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.2" diff --git a/.github/workflows/contributors-json.yaml b/.github/workflows/contributors-json.yaml new file mode 100644 index 00000000..90a55867 --- /dev/null +++ b/.github/workflows/contributors-json.yaml @@ -0,0 +1,20 @@ +on: + workflow_dispatch: + +jobs: + contributors-json: + runs-on: ubuntu-latest + name: Gera contributors.json + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v3 + with: + node-version: 16.2.0 + - run: yarn add @actions/core @actions/http-client + - uses: ./.github/actions/contributors-json + with: + TOKEN: ${{ secrets.GITHUB_TOKEN }} + - uses: actions/upload-artifact@v3 + with: + name: contributors-json + path: contributors.json diff --git a/.github/workflows/update-contributors.yaml b/.github/workflows/update-contributors.yaml new file mode 100644 index 00000000..44e3d493 --- /dev/null +++ b/.github/workflows/update-contributors.yaml @@ -0,0 +1,18 @@ +on: + workflow_dispatch: + schedule: + - cron: '0 0 * * 0' + +jobs: + update-contributors: + runs-on: ubuntu-latest + name: Atualiza CONTRIBUTORS + steps: + - uses: actions/checkout@v4 + - uses: ./.github/actions/contributors + - uses: EndBug/add-and-commit@v9 + with: + add: '.' + push: true + message: 'atualiza lista de pessoas contribuidoras' + diff --git a/.gitignore b/.gitignore index 86d943a9..7bd681b5 100644 --- a/.gitignore +++ b/.gitignore @@ -8,7 +8,7 @@ /bazel-out # dependencies -/node_modules +**/node_modules # profiling files chrome-profiler-events*.json diff --git a/docs/CONTRIBUTING-en-US.md b/docs/CONTRIBUTING-en-US.md index a70700a2..88d42660 100644 --- a/docs/CONTRIBUTING-en-US.md +++ b/docs/CONTRIBUTING-en-US.md @@ -1,5 +1,9 @@ **English (US)** | [Português (BR)](/docs/CONTRIBUTING.md) + +[![All contributors](https://img.shields.io/badge/all_contributors-15-orange.svg?style=flat-square)](/docs/CONTRIBUTORS.md#pessoas-contribuidoras) + + # Contributing Querido Diário has a [Guide for Contributing](https://github.com/okfn-brasil/querido-diario-comunidade/blob/main/.github/CONTRIBUTING-en-US.md#contributing) that is relevant to all of its repositories. The guide provides general information about how to interact with the project, the code of conduct you adhere to when contributing, the list of ecosystem repositories and the first actions you can take. We recommend reading it before continuing. diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md index fdb0ce81..94d0ce8f 100644 --- a/docs/CONTRIBUTING.md +++ b/docs/CONTRIBUTING.md @@ -1,5 +1,9 @@ **Português (BR)** | [English (US)](/docs/CONTRIBUTING-en-US.md) + +[![Pessoas Contribuidoras](https://img.shields.io/badge/all_contributors-15-orange.svg?style=flat-square)](/docs/CONTRIBUTORS.md#pessoas-contribuidoras) + + # Contribuindo O Querido Diário possui um [Guia para Contribuição](https://github.com/okfn-brasil/querido-diario-comunidade/blob/main/.github/CONTRIBUTING.md#contribuindo) principal que é relevante para todos os seus repositórios. Este guia traz informações gerais sobre como interagir com o projeto, o código de conduta que você adere ao contribuir, a lista de repositórios do ecossistema e as primeiras ações que você pode tomar. Recomendamos sua leitura antes de continuar. @@ -35,4 +39,4 @@ yarn 5. Pronto! Agora você já pode começar a editar o código. # Mantendo -As pessoas mantenedoras devem seguir as diretrizes do [Guia para Mantenedoras](https://github.com/okfn-brasil/querido-diario-comunidade/blob/main/.github/CONTRIBUTING.md#mantendo) do Querido Diário. \ No newline at end of file +As pessoas mantenedoras devem seguir as diretrizes do [Guia para Mantenedoras](https://github.com/okfn-brasil/querido-diario-comunidade/blob/main/.github/CONTRIBUTING.md#mantendo) do Querido Diário. diff --git a/docs/CONTRIBUTORS-en-US.md b/docs/CONTRIBUTORS-en-US.md new file mode 100644 index 00000000..5df06f90 --- /dev/null +++ b/docs/CONTRIBUTORS-en-US.md @@ -0,0 +1,48 @@ +## Contributors ✨ + +Thanks go to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Vinícius Monteiro
Vinícius Monteiro

📖
Juliana Trevine
Juliana Trevine

📖
Lucas Guima
Lucas Guima

📖
LucasMendoncaWF
LucasMendoncaWF

📖
Giulio Carvalho
Giulio Carvalho

📖
Ariane Camilo
Ariane Camilo

📖
Pedro Guimarães
Pedro Guimarães

📖
RasRbk
RasRbk

📖
Guilherme Almeida
Guilherme Almeida

📖
trolzen
trolzen

📖
malungo
malungo

📖
Lucas Alves
Lucas Alves

📖
Mário Sérgio
Mário Sérgio

📖
Renato Siqueira
Renato Siqueira

📖
Luiz Eduardo
Luiz Eduardo

📖
+ + Add your contributions + +
+ + + + + +This project follows the [all-contributors](https://github.com/all-contributors/all-contributors). specification. Contributions of any kind are welcome! + diff --git a/docs/CONTRIBUTORS.md b/docs/CONTRIBUTORS.md new file mode 100644 index 00000000..24386442 --- /dev/null +++ b/docs/CONTRIBUTORS.md @@ -0,0 +1,48 @@ +## Pessoas Contribuidoras ✨ + +Agradecimentos à todas estas pessoas maravilhosas ([emoji key](https://allcontributors.org/docs/en/emoji-key)): + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Vinícius Monteiro
Vinícius Monteiro

📖
Juliana Trevine
Juliana Trevine

📖
Lucas Guima
Lucas Guima

📖
LucasMendoncaWF
LucasMendoncaWF

📖
Giulio Carvalho
Giulio Carvalho

📖
Ariane Camilo
Ariane Camilo

📖
Pedro Guimarães
Pedro Guimarães

📖
RasRbk
RasRbk

📖
Guilherme Almeida
Guilherme Almeida

📖
trolzen
trolzen

📖
malungo
malungo

📖
Lucas Alves
Lucas Alves

📖
Mário Sérgio
Mário Sérgio

📖
Renato Siqueira
Renato Siqueira

📖
Luiz Eduardo
Luiz Eduardo

📖
+ + Add your contributions + +
+ + + + + + +Este projeto segue a especificação do [all-contributors](https://github.com/all-contributors/all-contributors). Contribuições de qualquer tipo são bem-vindas! diff --git a/docs/README-en-US.md b/docs/README-en-US.md index e5f6f801..09a8ea2d 100644 --- a/docs/README-en-US.md +++ b/docs/README-en-US.md @@ -32,7 +32,7 @@ Also, check the [Querido Diário documentation](https://docs.queridodiario.ok.or # Thanks This project is maintained by Open Knowledge Brazil and made possible thanks to the technical communities, the [Ambassadors of Civic Innovation](https://embaixadoras.ok.org.br/), volunteers and financial donors, in addition to partner universities, companies supporters and funders. -Meet [who supports Querido Diário](https://queridodiario.ok.org.br/apoie#quem-apoia). +Meet [who supports Querido Diário](https://queridodiario.ok.org.br/apoie#quem-apoia) and [all our contributors in this repository](/docs/CONTRIBUTORS.md) # Open Knowledge Brazil

diff --git a/docs/README.md b/docs/README.md index 2577b39c..71182f02 100644 --- a/docs/README.md +++ b/docs/README.md @@ -71,7 +71,7 @@ A aplicação foi inicialmente desenvolvida junto às pessoas do estúdio de sof Este projeto é mantido pela Open Knowledge Brasil e possível graças às comunidades técnicas, às [Embaixadoras de Inovação Cívica](https://embaixadoras.ok.org.br/), às pessoas voluntárias e doadoras financeiras, além de universidades parceiras, empresas apoiadoras e financiadoras. -Conheça [quem apoia o Querido Diário](https://queridodiario.ok.org.br/apoie#quem-apoia). +Conheça [quem apoia o Querido Diário](https://queridodiario.ok.org.br/apoie#quem-apoia) e [todas as pessoas contribuidoras deste repositório](/docs/CONTRIBUTORS.md) # Open Knowledge Brasil