Skip to content

cgetchepare/conexao_solidaria

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 

Repository files navigation

Conexão Solidária

Discentes

  • Carlos Magno Larraz Etchepare
  • Carlos Gustavo Fortes Etchepare

Orientador do projeto

  • Prof. Ângelo Gonçalves da Luz

Introdução

As informações sobre os recursos materiais e humanos, relativas a ações sociais desenvolvidas em cada paróquia e em cada uma de suas comunidades, são raramente compartilhadas, carecem de um sistema informatizado que permita o acesso compartilhado, rápido e seguro desses dados.

Motivação

A informatização instrumentalizará e suprirá a necessidade de análise conjunta dos recursos materiais e humanos e das ações sociais desenvolvidas em cada comunidade, principalmente de cursos profissionalizantes, facultando o planejamento integrado dessas ações, otimizando a logística e o emprego ampliado desses escassos recursos, quer pela complementariedade, quer pela cooperação, desembocando num atendimento mais abrangente, eficiente e eficaz das pessoas carentes dessas comunidades.

Objetivos

Objetivo Geral

O objetivo central deste projeto é construir um sistema para manter um registro de cada paróquia com suas comunidades e de seus recursos materiais e humanos voltados para a ação social, nos atendimentos da demanda dos carentes de suas respectivas áreas de ação, permitindo a interação e a cooperação maximizada desses recursos.
Cada comunidade, através de seu pároco ou do respectivo coordenador da Ação Social poderá incluir, editar e excluir as vagas excedentes de seus cursos profissionalizantes, de lazer e outros, disponibilizadas às demais comunidades paroquiais.

Objetivos Específicos

  • Permitir ao administrador do sistema incluir, editar ou excluir as vagas de cursos profissionalizantes disponibilizadas por entidades filantrópicas e órgãos governamentais
  • Facultar a cada pároco incluir, editar ou excluir dados relativos a fiéis da paróquia, que coloquem, de forma autônoma, os seus serviços profissionais à disposição dos demais membros das comunidades
  • Disponibilizar a pré-inscrição cadastral, via aplicativo, ou via site, a profissional que, sem ônus e dentro de suas competências legais, decida prestar serviço a carentes, via Ação Social paroquial. O Administrador, mediante prévia diligência, poderá realizar a inclusão, ou não, do proponente no cadastro de voluntários
  • Disponibilizar aos párocos e coordenadores das respectivas Ações Sociais, interação via chat e e-mail;
  • Disponibilizar um sistema de busca, via aplicativo, ou site responsivo, a usuários, nos termos do nível de informações liberadas a cada um deles.

Requisitos

Requisitos Funcionais

  • RF[001] O sistema deve permitir cadastrar e manter dados de usuários e níveis de acesso.
  • RF[002] Criação de uma dashboard do sistema com níveis de acesso de Pároco, Administrador, Coordenador da Ação Social, Coordenador da Ação Social (Comunidade) e colaboradores (voluntários), Instrutor de curso, formando uma equipe, com funções como as de secretaria e de TI. O colaborador responsável pela Ação Social TI terá funções delegadas pelo Administrador do sistema.
  • RF[003] O sistema deverá permitir cadastrar e manter dados referentes às paróquias / comunidades, situadas em Pelotas-RS.
  • RF[004] O sistema deverá permitir cadastrar e gerenciar os cursos profissionalizantes ministrados a alunos da própria paróquia (não compartilhado com as demais).
  • RF[005] O sistema deverá permitir cadastrar e manter os recursos físicos das comunidades, imóveis, equipamentos, maquinários, utensílios e mobiliário, com utilização efetiva ou potencial em cursos profissionalizantes promovidos pelas respectivas Ações Sociais.
  • RF[006] O sistema deverá permitir cadastrar e gerenciar os cursos profissionalizantes compartilhados com alunos das demais paróquias em Pelotas.
  • RF[007] O sistema deve permitir e manter o cadastro de instrutores voluntários, de cada paróquia em Pelotas, informando seu nome, CPF, RG, endereço, telefone, e-mail e data de adesão à Pastoral Social.
  • RF[008] O sistema deve cadastrar reservas de vagas.
  • RF[009] O sistema deve permitir o registro da matrícula de alunos em turmas, incluindo número de matrícula, nome, endereço, telefone e e-mail.
  • RF[010] O sistema deve permitir registrar conceitos ou notas de alunos e a consulta ao histórico de cada um deles.
  • RF[011] O sistema deve permitir listar os dados do aluno bem como os dados ligados a ele para que isso possibilite o seu acompanhamento pelo pároco e coordenador da Ação Social, com vista a sua inserção no mercado de trabalho.
  • RF[012] O sistema deverá permitir cadastrar e manter dados referentes às entidades afins e instituições conveniadas com as paróquias, que promovam cursos profissionalizantes gratuitos.
  • RF[013] O sistema deverá permitir cadastrar e manter os cursos profissionalizantes oferecidos pelas entidades afins (Cáritas Pelotas, Banco de Alimentos Madre Teresa de Calcutá...)
  • RF[014] O sistema deverá permitir às entidades afins ministrantes cadastrar e gerenciar os cursos profissionalizantes disponibilizados aos alunos das paróquias, em Pelotas-RS.
  • RF[015] O sistema deve permitir o registro dos alunos matriculados nos cursos disponibilizados por entidades afins, incluindo número de matrícula, nome, endereço, telefone e e-mail.
  • RF[016] O sistema deve permitir às entidades afins ministrantes dos cursos, registrar conceitos ou notas de alunos das paróquias de Pelotas e a consulta ao histórico de cada um deles.
  • RF[017] O sistema deve permitir o cadastro, gerenciamento dos cursos e vagas oferecidas gratuitamente por instituições e ONGs, em Pelotas-RS.
  • RF[018] O sistema deverá permitir o gerenciamento do cadastro de profissionais autônomos de cada comunidade que coloquem os seus serviços, a título oneroso, à disposição dos demais paroquianos, compreendendo o nome, telefone, e-mail e especialização.
  • RF[019] O sistema deve permitir o cadastramento de informações obtidas junto às pessoas carentes da paróquia, referentes a preferência de curso(s) profissionalizante(s) de cada uma delas. Deverão constar, também, os requisitos dados: nome completo do consultado, data, paróquia e nº de telefone para contato.
  • RF[020] O sistema deverá permitir, com base nos cursos solicitados, quantidade de interessados e cursos preferidos, cadastrar dados relativos a recursos materiais (instalações, maquinários...) e humanos (instrutores, auxiliares), necessários à montagem potencial desses cursos.
  • RF[021] O sistema deverá permitir com base nos RF[004], RF[006], RF[008] e RF[019] emitir relatório avaliativo da viabilidade de estender os cursos já em funcionamento nas comunidades a um número maior de participantes, mediante a utilização de recursos complementares existentes nas demais paróquias.
  • RF[022] O sistema deverá permitir com base nos RF[004], RF[006], RF[008], RF[019] e RF[020] emitir relatório de viabilidade de montagem dos cursos mais solicitados, com a integração de recursos das paróquias.
  • RF[023] O sistema deverá permitir a geração de relatório de avaliação do efetivo aproveitamento do curso pelos alunos, mediante o comparativo entre conceito suficiente e conceito insuficiente.
  • RF[024] O sistema deverá permitir a geração de relatório de avaliação da conformidade entre os cursos de maior preferência das pessoas carentes - RF[019] - e os efetivamente disponibilizados a elas - RF[004].
  • RF[025] O sistema deve permitir o registro de turmas, indicando seu código, descrição, a que curso pertencem, dia e horário das aulas, número de vagas e instrutor, tanto de cursos da própria paróquia, como de entidades afins e também os oferecidos por outras instituições.

Requisitos Não-Funcionais

  • RNF[001] O sistema deve ser acessado por quaisquer dispositivos que estejam conectados à internet.
  • RNF[002] Nenhum acesso ao sistema será admitido sem que para tanto o usuário esteja logado.
  • RNF[003] O SGBD é o MySQL, gratuito e amplamente utilizado.
  • RNF[004] A linguagem de programação utilizada é o Javascript com backend Node.js e a biblioteca React.js para o frontend, e o React Native para aplicativos Android e iOSs, a fim de tornar disponível o acesso remoto para as plataformas desktop e de dispositivos móveis.
  • RNF[005] O pároco possui nível de acesso similar ao administrador do sistema.
  • RNF[006] O administrador é designado pelo pároco e será responsável por cadastro, manipulação de banco de dados, manutenção do site, e do sistema.
  • RNF[007] O login será feito pela utilização de endereço de e-mail e senha. O usuário poderá solicitar nova senha, receberá aviso dessa solicitação por e-mail ou telefone cadastrado.
  • RNF[008] O cadastro e gerenciamento de informações relativas à Paróquia serão efetuados pelo administrador.
  • RNF[009] O cadastro e gerenciamento de informações do pároco será realizado pelo administrador.
  • RNF[010] O cadastramento, com base na pré-inscrição de Profissional Voluntário para integrar a Ação Social paroquial, a edição e exclusão referente ao mesmo, será efetuado pelo Pároco ou pelo Administrador, mediante consulta ao Pároco e posterior confirmação do interessado, se for o caso.
  • RNF[011] O cadastro e gerenciamento de informações sobre a Comunidade será a cargo do pároco ou a quem ele autorizar (administrador ou colaborador).
  • RNF[012] O cadastro e gerenciamento de dados do Coordenador da Ação Social e Colaboradores são efetuados pelo pároco ou administrador.
  • RNF[013] O cadastro e gerenciamento de informações de profissionais, como faxineiras, eletricistas, técnicos hidráulicos, pedreiros, pintores, mecânicos, marceneiros, professores particulares, etc., será efetuado pelo pároco ou colaboradores designado pelo próprio pároco, sendo que, além das qualificações pessoais do profissional, deverão constar referências, tempo de exercício da profissão, valor da diária, valor da hora e dados de contato.
  • RNF[014] O cadastro de alunos terá base em pré-inscrição, que será homologada mediante consulta ao Pároco e posterior confirmação do interessado, se for o caso.
  • RNF[015] O aluno poderá estar matriculado somente em uma única turma/curso.
  • RNF[016] O aluno será inscrito automaticamente em um cadastro reserva, caso seja excedido o número máximo de alunos com inscrições por turma.

Referencial Teórico

Referencial Teórico O projeto do Conexão Solidária utiliza as tecnologias do Node.js, React e React Native e o SGBD relacional MySQL.

Node

O criador do Node Ryan Dahl observou que um navegador de internet, enquanto processava uma solicitação fazia seguidas consultas ao servidor e pensou em uma forma de aproveitar o processamento dessas requisições. E desenvolveu uma ideia de operação em paralelo, de forma assíncrona, criando um mecanismo que permitisse a execução do programa non blocking, ou seja, sem interrupções de operações de entrada/saída.
A partir dessa ideia, um ambiente de execução foi desenvolvido, permitindo o paralelismo e utilizando o mesmo mecanismo de execução javascript V8 do navegador Google Chrome. Segundo (Devmedia, 2020), para criar uma API web com Node.js é necessário conhecimento do padrão arquitetural REST, que é atualmente utilizado em ampla escala para estruturar as APIs. O processamento paralelo ocorre por meio de uma classe chamada Promise para a construção de funções de processamento assíncrono, que permitem registrar callbacks que serão chamadas após esse processamento.

O Node.js é uma linguagem single thread e em segundo plano usa várias threads para executar código assíncrono. O Node.js é non blocking, ou seja, sem bloqueio, o que significa que todas as funções são repassadas ao loop de eventos e executadas por diferentes segmentos, e tratado em tempo de execução. Permite que processos sejam executados em núcleos diferentes do processador. Os principais métodos da Promise são then(), que permite definir o bloco executado mediante a execução da classe e o catch que trata os erros, ou simplesmente os rejeita. Ainda de acordo com (Devmedia, 2020), o Node.js é usado em servidores controlados. Utilizado também para manter sites e serviços de API backend. Foi projetado inicialmente com arquiteturas baseadas em push em tempo real.

No Node.js, um módulo é uma funcionalidade que pode ser compartilhada com a aplicação possibilitando a reutilização do código. Essa funcionalidade pode ser implementada em um ou mais arquivos. A partir do suporte a módulos, o Node.js permite que trechos de código sejam executados em contextos isolados, não influenciando diretamente nos demais. No Node.js há três tipos de módulos, core, local e third party. Third party são módulos fornecidos por terceiros e adicionados ao projeto. Core modules incluem funcionalidades básicas do Node.js e os local modules são aqueles criado pelo desenvolvedor da aplicação

React

React é um framework JavaScript criado pelo Facebook para para a criação de interfaces de usuário. React Native, da mesma empresa, permite criar aplicações mobile nativas utilizando JavaScript, na lógica, e React, para estruturar as views. React é uma biblioteca de apenas 100 KB que promete criar interfaces declarativas e baseadas em componentes, que possibilita modularizar a interface, criando comportamentos e atributos próprios para cada elemento (como um botão) de acordo com a plataforma utilizada e de acordo com a necessidade do software.

O React utiliza um conceito de virtualização chamado VDOM da Biblioteca ReactDOM. O DOM é uma API de Javascript que permite acessar e manipular elementos HTML e XML. Já o VDOM é mantido em memória pelo ReactDOM e se comunica com o DOM, e como é mais rápido que o DOM "real", e estando em memória e em comunicação com o DOM, otimiza velocidade, e acessos diretos ao DOM, diminuindo o tempo de resposta.

Single Page Applications (SPA) são aplicações cuja funcionalidade está concentrada em uma única página. Ao invés de recarregar toda a página ou redirecionar o usuário para uma página nova, apenas o conteúdo principal é atualizado de forma assíncrona, mantendo toda a estrutura da página estática. Do contrário, se há mudança de contexto, a navegação síncrona convencional e não as SPAs.

React Native

React Native é um framework desenvolvido também pelo Facebook, permite criar aplicações mobile nativas para dispositivos mobile Android e iOS, utilizando JavaScript, na lógica, e React, para estruturar as views.

O React Native trabalha com Javascript puro em formato JSX, não utiliza HTML. Também não manipula. Ao contrário do React, não trabalha com o VDOM e sim em segundo plano, interpretando diretamente o código escrito pelos desenvolvedores e se comunica de forma serial, em lote e assíncrona com a plataforma nativa.

REST

Criado por Roy Fielding, co-autor do projeto Apache HTTP Server em 2000, o modelo REST traz algumas diferenças em relação ao modelo tradicional (SOAP) na utilização semântica dos métodos HTTP (GET, POST, PUT e DELETE), em nos dos pacotes de dados mais leves transmitidos na rede e na simplicidade, fazendo desnecessária a criação de camadas intermediárias . De acordo com (Devmedia, 2020), as principais características de uma requisição REST são:

  • O método HTTP, utilizado para determinar a operação a ser realizada em um determinado recurso. Em geral, utiliza-se o GET para recuperar, POST para criar, PUT para alterar e DELETE para apagar;
  • O recurso, por sua vez, é indicado na URL da requisição;
  • Parâmetros podem ser passados na própria URL e/ou no corpo na requisição;
  • Os tipos de dados utilizados na requisição e na resposta devem ser acordados entre o servidor e o(s) cliente(s). JSON e XML estão entre os mais utilizados. O protocolo HTTP define os métodos CONNECT, HEAD, PUT, DELETE, TRACE e OPTIONS. Ainda é possível criar extensões e consequentemente a adição de novos métodos. O método PATCH é um exemplo disso. Existe certa divergência em relação quanto à utilização do HTTP POST e PUT e PATCH. Na prática, o provedor do serviço é quem irá decidir qual abordagem utilizar. Além disso, em um certo momento percebeu-se que o cliente final da aplicação poderia não ser apenas o navegador, mas outros dispositivos ou até mesmo outras aplicações web e que poderia ser disponibilizado dados numa forma cliente/servidor, utilizando uma linguagem comum a API e serviços, como o JSON e o XML.

MySQL

O banco de dados é um dos principais recursos para desenvolvimento de uma aplicação Um banco de dados relacional é um tipo de banco de dados que armazena e fornece acesso a pontos de dados relacionados entre si.

De acordo com (Oracle, 2020), em um banco de dados relacional, cada linha na tabela é um registro com identificador exclusivo chamado. As colunas da tabela possuem atributos, sendo que cada registro possui um valor cada atributo, o que permite o estabelecimento de relações entre os pontos de dados.

O SGBD MySQL utiliza o modelo relacional em que as estruturas de dados lógicas (tabelas, exibições e índices) são separadas das estruturas de armazenamento físico. Isso permite aos administradores do BD gerenciar o armazenamento de dados físico, sem prejudicar o acesso a esses dados de acordo como uma estrutura lógica.

O modelo relacional tem a vantagem de manter a consistência de dados entre aplicativos e instâncias, garantindo que várias instâncias de um banco dados tenham os mesmos dados durante as transações.

Quatro propriedades definem as transações do banco de dados relacional: Atomicidade, Consistência, Isolamento e Durabilidade (ACID).

  • A atomicidade define todos os elementos que compõem uma transação completa do banco de dados.
  • A consistência define as regras para manter os pontos de dados estáveis após uma transação.
  • O isolamento tem o efeito de tornar uma transação invisível a operações até que seja confirmada a transação.
  • A durabilidade garante que as alterações de dados se tornem permanentes depois da confirmação da transação.

Bloqueio e Simultaneidade de Banco de Dados

Os conflitos em banco de dados acontecem quando vários usuários ou aplicativos tentam alterar os mesmos dados ao mesmo tempo. Técnicas de bloqueio e simultaneidade reduzem o potencial de conflitos, mantendo a integridade dos dados.

Bootstrap

O Bootstrap é uma biblioteca de componentes para aplicação frontend, que permite trabalhar com Javascript, HTML5 e CSS, Além de desenvolvimento de sites dinâmicos e responsivos, com sistema de grid, JQuery, uma biblioteca de linguagem Javascript, que dentre outras funcionalidades permite a inclusão e remoção de elementos DOM (Document Object Model), o que possibilita organizar e gerenciar de forma estruturada (em árvore) os componentes da página.

Sequelize

O Sequelize é um ORM (Object-Relational Mapper) que permite a construção de aplicações com uso de banco de dados, independente da linguagem, que mapeia entidades com as tabelas do banco, permitindo automatizar a criação de tabelas, migrations e criação de registros (seeders), além de prevenir, evitar ataques do tipo SQL Injection. O Projeto Conexão Solidária utiliza o banco de dados MySQL associado ao Sequelize.

Sistemas Relacionados

Os sites e aplicativos pesquisados permitem obter um bom entendimento de como foram empregados recursos para o desenvolvimento, produção e ter uma ideia de integração entre um site e um aplicativo. O site da Associação Beneficente Estrela da Manhã de Guarulhos-SP é exemplo de um site bastante completo, responsivo, com empregos de recursos para ação social, eventos, banco de profissionais autônomos, cursos, espaço para blog, utilizando linguagens de programação, como Javascript e PHP e frameworks como Bootstrap.

O aplicativo mobile da Igreja Metodista do Rio de Janeiro é encontrado no Google Play Android. O sistema é projetado de forma que permita visualizar a informação buscada com poucos passos. O cadastro é realizado e as informações são obtidas estando o usuário logado.

O projeto do Conexão Solidária está voltado para Ação Social da Igreja Católica nas Comunidades, com participação e integração dessas comunidades e as paróquia locais. A utilização de internet e telefonia móvel vem aumentando a cada dia, embora não seja tão amplo em comunidades carentes. Ainda sim é um recurso de comunicação entre os membros da Ação Social e participação nos cursos gratuitos profissionalizantes destinados a essas comunidades.

O sistema também permitirá a disponibilização de recursos materiais (infraestrutura) e humanos como divulgação de trabalhos de profissionais autônomos da comunidade e comunicação entre os colaboradores através do site e aplicativo, e nos cursos controle de alunos matriculados ou que participaram dos cursos profissionalizantes da Ação Social.

O Conexão Solidária emprega a linguagem Javascript, com os frameworks NodeJs e ReactJS e Bootstrap para o site e o framework React Native para o mobile, utilizando o banco de dados relacional MySQL, buscando fazer uma integração entre site e aplicativo.

Projeto do Sistema

Padrões de Desenvolvimento e Arquitetura

Diagrama ER

banco

Diagrama de Casos de Uso

Os Casos de Uso relacionados a entrega das MVPs, como Inscrição em Cursos Profissionalizantes disponibilizados pelas Comunidades que participam da Ação Social.

Sistema de Cadastro de Cursos Profissionalizantes - Comunidade, Entidade Afim e Outros Órgãos

Sistema de Cadastro de Paróquias, Comunidades, Entidades e Cargos

Sistemacadastroparoquiacomunidade

Sistema de Inscrição em Curso Disponibilizado por uma Paróquia

cursodisponibilizadoporumaparoquia

Sistema de Controle de Vagas em Cursos Profissionalizantes Gratuitos em Outras Entidades

Sistemacontrolecursosoutrasentidades

Sistema de Cadastro de Voluntário e de Autônomo

cadastroautonomo

MVP - Sistema de Cadastro de Curso, Turma, Instrutor e Participante

mvp

Prototipação

Os Protótipos das telas serão em formato responsivo para o site e aplicativo.

Mapa do Projeto

mapa

Tecnologias Utilizadas

Utilização da linguagem JavaScript com as tecnologias NodeJs, React e React Native. SGBD MySQL.

Referências

DEVMEDIA. Curso de Mysql. Disponível em: https://www.devmedia.com.br/mysql/. Acesso em: 2 set. 2020.

FERNANDES, João M.; MACHADO, Ricardo J. Requisitos em projetos de software e de sistemas de informação. Novatec: São Paulo, 2017.

IEPSEN, Edécio Fernando. Lógica de programação e algoritmos com Javascript. Novatec: São Paulo, 2018.

LIMA, Victor. Formação Node.js. Guia do Programador. Disponível em: https://www.udemy.com/course/formacao-nodejs/learn/lecture/16720728 Acesso em: 5 mai. 2020.

ORACLE BRASIL. Banco de dados. O que é um banco de dados relacional? Disponível em: https://www.oracle.com/br/database/what-is-a-relational-database/. Acesso em 21 set. 2020.

ROCKETSEAT. Curso de Node JS. Disponível em: https://app.rocketseat.com.br/dashboard/gostack-11. Acesso em: 2 set. 2020.

SZPAK, César. Curso de NodeJS. CELKE. Disponível em: https://celke.com.br/clms/aula-curso-view/2647. Acesso em: 5 abr. 2020.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published