Giga Token é um projeto de impacto social em colaboração com a UNICEF que visa reduzir a divisão digital conectando escolas carentes à internet. O projeto utiliza um token baseado em blockchain, GigaToken (GIGA), para incentivar provedores de internet (ISPs) a conectar as escolas à internet. Os ISPs podem ganhar GigaTokens conectando escolas à internet e garantindo a qualidade da conexão. Esses tokens podem ser trocados por incentivos fiscais ou outras recompensas. O projeto é pensado para melhorar as oportunidades educacionais para estudantes carentes, fornecendo acesso a recursos on - line e promovendo a inclusão digital.
Antes de começar, você precisará instalar o Node.js e o npm (que vem com o Node.js) em sua máquina.
Além disso, você precisará criar um arquivo .env na raiz do projeto com as seguintes variáveis de ambiente:
DATABASE_URL= NEXT_PUBLIC_CAPTCHA_KEY= NEXT_PUBLIC_SLACK_CHANNEL= NEXT_PUBLIC_SLACK_BOT_TOKEN= NEXT_PUBLIC_REGISTER_ISP_URL= NEXT_PUBLIC_REGISTER_ADMIN_URL= NEXT_PUBLIC_GEOLOCATION_API_KEY= NEXT_PUBLIC_SLACK_SIGNING_SECRET=
Preencha os campos com as informações apropriadas.
git clone git@github.com:investtools/ivttoken-project.git
cd ivttoken-project
npm install
npm run database:local:prepare
Para executar o projeto localmente, use o seguinte comando:
npm run dev
O projeto será executado na porta 3000, a menos que você tenha configurado uma porta diferente no seu arquivo .env.
Para executar os testes, use o seguinte comando:
npm run test
Para buildar projeto para produção, use o seguinte comando:
npm run build
Este projeto utiliza o GitHub Actions para implementar um pipeline de Integração Contínua/Entrega Contínua (CI/CD). O pipeline é acionado sempre que um novo commit é feito na branch main. Ele instala dependências, prepara o banco de dados local, executa testes e builda o projeto para produção.
As contribuições para este projeto são bem-vindas. Para contribuir, por favor, faça um fork do repositório, faça suas alterações e envie um pull request.
Se você tiver alguma dúvida ou comentário sobre este projeto, sinta-se à vontade para abrir uma issue!
obtém todos os tickets abertos
Output:
Array of tickets
Procedimento:
Protegido
Tipo de Request:
Query
obtém todos os tickets fechados
Output:
Array of tickets
Procedimento:
Protegido
Tipo de Request:
Query
abre um ticket
Input:
Name, Email, Subject, Message
Procedimento:
Público
Tipo de Request:
Mutation
fecha um ticket
Input:
Ticket Id
Procedimento:
Público
Tipo de Request:
Mutation
aprova uma escola pendente
Input:
School Id
Procedimento:
Protegido
Tipo de Request:
Mutation
aprova um ISP
Input:
Procedimento:
Protegido
Tipo de Request:
Mutation
assina uma transação
Input:
Transaction Hash, Private Key
Procedimento:
Protegido
Tipo de Request:
Mutation
obtém todas as transações que precisam ser assinadas
Output:
Array of transactions
Procedimento:
Protegido
Tipo de Request:
Query
autoriza um usuário
Input:
Email, Role
Procedimento:
Protegido
Tipo de Request:
Mutation
cria uma escola
Input:
Name, State, City, Zip Code, Address, CNPJ, Inep Code, Email, Administrator
Procedimento:
Protegido
Tipo de Request:
Mutation
atribui tokens a uma escola
Input:
School CNPJ, Tokens
Procedimento:
Protegido
Tipo de Request:
Mutation
registra um novo usuário administrador
Input:
Name, Entity
Procedimento:
Protegido
Tipo de Request:
Mutation
verifica se o usuário atual é um administrador
Output:
Boolean
Procedimento:
Protegido
Tipo de Request:
Query
obtém a lista de todos os usuários autorizados
Output:
Array of Users
Procedimento:
Protegido
Tipo de Request:
Query
obtém todos os contratos pendentes
Output:
Array of Contracts
Procedimento:
Protegido
Tipo de Request:
Query
obtém todos os relatórios de conectividade para uma escola
Input:
School CNPJ
Output:
Array of Connectivity Reports
Procedimento:
Protegido
Tipo de Request:
Query
aprova um contrato entre ISP e Escola
Input:
Contract Id
Procedimento:
Protegido
Tipo de Request:
Mutation
nega um contrato entre ISP e Escola
Input:
Contract Id
Procedimento:
Protegido
Tipo de Request:
Mutation
obtém todos os contratos
Output:
Array of Contracts
Procedimento:
Protegido
Tipo de Request:
Query
busca a lista de escolas a serem aprovadas
Output:
Array of schools
Procedimento:
Público
Tipo de Request:
Query
cria uma nova escola para ser aprovada pelo administrador
Input:
Name, State, City, Zip Code, Address, CNPJ, Inep Code, Email, Administrator
Procedimento:
Público
Tipo de Request:
Mutation
busca a latitude e longitude do input
Input:
City, State
Output:
Lat and lon
Procedimento:
Público
Tipo de Request:
Query
busca todas as escolas
Output:
Array of schools
Procedimento:
Público
Tipo de Request:
Query
busca a lista de escolas disponíveis
Output:
Array of schools
Procedimento:
Público
Tipo de Request:
Query
busca a lista de escolas que têm quantidade de tokens
Output:
Array of schools
Procedimento:
Público
Tipo de Request:
Query
busca a lista de escolas sem tokens
Output:
Array of schools
Procedimento:
Público
Tipo de Request:
Query
busca o nome da escola
Input:
School's CNPJ
Output:
School's name
Procedimento:
Público
Tipo de Request:
Query
verifica se a escola existe
Input:
School's CNPJ
Output:
Boolean
Procedimento:
Público
Tipo de Request:
Query
busca escola
Input:
School's CNPJ
Output:
Array of schools
Procedimento:
Público
Tipo de Request:
Query
retorna todos os ISPs aguardando aprovação
Output:
Array of ISP to be approved
Procedimento:
Protegido
Tipo de Request:
Query
cria um pedido de aprovação do ISP
Input:
Name, CNPJ, Email
Procedimento:
Público
Tipo de Request:
Mutation
verifica se o usuário é um ISP
Output:
Boolean
Procedimento:
Protegido
Tipo de Request:
Query
obtém o saldo do ISP
Output:
ISP balance
Procedimento:
Protegido
Tipo de Request:
Query
obtém todas as transações de token para o ISP
Output:
Array of ISP token transactions
Procedimento:
Protegido
Tipo de Request:
Query
obtém todos os contratos do ISP
Output:
Array of ISP contracts
Procedimento:
Protegido
Tipo de Request:
Query
registra um usuário como ISP
Input:
Name, CNPJ
Procedimento:
Protegido
Tipo de Request:
Mutation
realiza uma troca de benefícios para o ISP
Input:
Selected Benefit
Output:
Boolean
Procedimento:
Protegido
Tipo de Request:
Mutation
obtém a quantidade de tokens desbloqueados para o ISP
Output:
Unlocked tokens
Procedimento:
Protegido
Tipo de Request:
Query
envia um pedido de contrato entre ISP e Escola
Input:
School CNPJ
Procedimento:
Protegido
Tipo de Request:
Mutation
obtém todas as escolas associadas ao ISP
Output:
Array of schools
Procedimento:
Protegido
Tipo de Request:
Query
verifica se o usuário já possui uma conta
Output:
Boolean
Procedimento:
Protegido
Tipo de Request:
Query
verifica se o usuário está autorizado a entrar
Output:
User role
Procedimento:
Protegido
Tipo de Request:
Query
obtém a função que o usuário está autorizado
Output:
User role
Procedimento:
Protegido
Tipo de Request:
Query