brazilusa
Visão GeralInstruçõesAdminEscolasProvedoresLogin

Visão Geral do Projeto

Tecnologias Usadas

Sobre o Projeto

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.

Contribuições

Incentivamos contribuições de todas as formas. Por favor, consulte a documentação para detalhes técnicos. Se você tiver alguma dúvida ou precisar de ajuda para entender uma parte do código, sinta-se à vontade para abrir uma issue ou um ticket.

Instruções

Configuração do Ambiente

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.

Instruções de Instalação

1. Clone este repositório para sua máquina local:
git clone git@github.com:investtools/ivttoken-project.git
2. Navegue para o diretório do projeto:
cd ivttoken-project
3. Instale as dependências do projeto:
npm install
4. Prepare o banco de dados local:
npm run database:local:prepare

Executando o Projeto

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.

Executando os Testes

Para executar os testes, use o seguinte comando:

npm run test

Buildando o Projeto

Para buildar projeto para produção, use o seguinte comando:

npm run build

CI/CD

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.

Contribuiçã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.

Contato

Se você tiver alguma dúvida ou comentário sobre este projeto, sinta-se à vontade para abrir uma issue!

Rota Administrator

getOpenedTickets:

obtém todos os tickets abertos

Output:

Array of tickets

Procedimento:

Protegido

Tipo de Request:

Query

getClosedTickets:

obtém todos os tickets fechados

Output:

Array of tickets

Procedimento:

Protegido

Tipo de Request:

Query

openTicket:

abre um ticket

Input:

Name, Email, Subject, Message

Procedimento:

Público

Tipo de Request:

Mutation

closeTicket:

fecha um ticket

Input:

Ticket Id

Procedimento:

Público

Tipo de Request:

Mutation

approveSchool:

aprova uma escola pendente

Input:

School Id

Procedimento:

Protegido

Tipo de Request:

Mutation

approveISP:

aprova um ISP

Input:

Email

Procedimento:

Protegido

Tipo de Request:

Mutation

signTransaction:

assina uma transação

Input:

Transaction Hash, Private Key

Procedimento:

Protegido

Tipo de Request:

Mutation

getAllTransactionsToSign:

obtém todas as transações que precisam ser assinadas

Output:

Array of transactions

Procedimento:

Protegido

Tipo de Request:

Query

authorizeUser:

autoriza um usuário

Input:

Email, Role

Procedimento:

Protegido

Tipo de Request:

Mutation

createSchool:

cria uma escola

Input:

Name, State, City, Zip Code, Address, CNPJ, Inep Code, Email, Administrator

Procedimento:

Protegido

Tipo de Request:

Mutation

assignTokensToSchool:

atribui tokens a uma escola

Input:

School CNPJ, Tokens

Procedimento:

Protegido

Tipo de Request:

Mutation

registerAdmin:

registra um novo usuário administrador

Input:

Name, Entity

Procedimento:

Protegido

Tipo de Request:

Mutation

isAdmin:

verifica se o usuário atual é um administrador

Output:

Boolean

Procedimento:

Protegido

Tipo de Request:

Query

getAuthorizedUsers:

obtém a lista de todos os usuários autorizados

Output:

Array of Users

Procedimento:

Protegido

Tipo de Request:

Query

getPendingContracts:

obtém todos os contratos pendentes

Output:

Array of Contracts

Procedimento:

Protegido

Tipo de Request:

Query

getAllConnectivityReports:

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

approveContract:

aprova um contrato entre ISP e Escola

Input:

Contract Id

Procedimento:

Protegido

Tipo de Request:

Mutation

denyContract:

nega um contrato entre ISP e Escola

Input:

Contract Id

Procedimento:

Protegido

Tipo de Request:

Mutation

getAllContracts:

obtém todos os contratos

Output:

Array of Contracts

Procedimento:

Protegido

Tipo de Request:

Query

Rota Schools

getSchoolsToBeApproved:

busca a lista de escolas a serem aprovadas

Output:

Array of schools

Procedimento:

Público

Tipo de Request:

Query

schoolToBeApproved:

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

getLatLon:

busca a latitude e longitude do input

Input:

City, State

Output:

Lat and lon

Procedimento:

Público

Tipo de Request:

Query

getAll:

busca todas as escolas

Output:

Array of schools

Procedimento:

Público

Tipo de Request:

Query

getAvailable:

busca a lista de escolas disponíveis

Output:

Array of schools

Procedimento:

Público

Tipo de Request:

Query

getSchoolsWithTokens:

busca a lista de escolas que têm quantidade de tokens

Output:

Array of schools

Procedimento:

Público

Tipo de Request:

Query

getNoTokensSchools:

busca a lista de escolas sem tokens

Output:

Array of schools

Procedimento:

Público

Tipo de Request:

Query

findSchoolNameByCnpj:

busca o nome da escola

Input:

School's CNPJ

Output:

School's name

Procedimento:

Público

Tipo de Request:

Query

doesSchoolExist:

verifica se a escola existe

Input:

School's CNPJ

Output:

Boolean

Procedimento:

Público

Tipo de Request:

Query

getSchoolByCnpj:

busca escola

Input:

School's CNPJ

Output:

Array of schools

Procedimento:

Público

Tipo de Request:

Query

Rota Provedores de Internet

getIspToBeApproved:

retorna todos os ISPs aguardando aprovação

Output:

Array of ISP to be approved

Procedimento:

Protegido

Tipo de Request:

Query

ispToBeApproved:

cria um pedido de aprovação do ISP

Input:

Name, CNPJ, Email

Procedimento:

Público

Tipo de Request:

Mutation

isIsp:

verifica se o usuário é um ISP

Output:

Boolean

Procedimento:

Protegido

Tipo de Request:

Query

getIspData:

obtém o saldo do ISP

Output:

ISP balance

Procedimento:

Protegido

Tipo de Request:

Query

getIspTransactions:

obtém todas as transações de token para o ISP

Output:

Array of ISP token transactions

Procedimento:

Protegido

Tipo de Request:

Query

getIspContracts:

obtém todos os contratos do ISP

Output:

Array of ISP contracts

Procedimento:

Protegido

Tipo de Request:

Query

registerISP:

registra um usuário como ISP

Input:

Name, CNPJ

Procedimento:

Protegido

Tipo de Request:

Mutation

buyBenefits:

realiza uma troca de benefícios para o ISP

Input:

Selected Benefit

Output:

Boolean

Procedimento:

Protegido

Tipo de Request:

Mutation

ispUnlockedTokens:

obtém a quantidade de tokens desbloqueados para o ISP

Output:

Unlocked tokens

Procedimento:

Protegido

Tipo de Request:

Query

createContract:

envia um pedido de contrato entre ISP e Escola

Input:

School CNPJ

Procedimento:

Protegido

Tipo de Request:

Mutation

getIspSchools:

obtém todas as escolas associadas ao ISP

Output:

Array of schools

Procedimento:

Protegido

Tipo de Request:

Query

Rota Login

userHasAccount:

verifica se o usuário já possui uma conta

Output:

Boolean

Procedimento:

Protegido

Tipo de Request:

Query

getAuthorizedRole:

verifica se o usuário está autorizado a entrar

Output:

User role

Procedimento:

Protegido

Tipo de Request:

Query

getUserRole:

obtém a função que o usuário está autorizado

Output:

User role

Procedimento:

Protegido

Tipo de Request:

Query