- Introdução
- Funcionalidades
- Observações gerais sobre o projeto
- Informações sobre o Front-End
- Informações sobre o Back-End
- Licença
Inscritus Web é um sistema white label open-source para gerenciamento de evento. O projeto foi desenvolvido na disciplina MC853 - Projeto em Sistemas de Programação, oferecida pelo Instituto de Computação da Universidade Estadual de Campinas (IC/UNICAMP) no primeiro semestre letivo de 2020 (1S2020).
Este projeto também possui um app mobile que pode ser usado concomitantemente com o sistema web, podendo não fornecer todas as funcionalidades que o sistema web possui, porém entregando também novas funcionalidades. Para saber mais, acesse o repositório do app mobile.
Para acessar um live demo, clique aqui.
- Admin:
[email protected]
/123456
- Participante:
[email protected]
/123456
O sistema é estruturado de forma que uma instância do sistema gerencia um único evento, o qual pode conter diversas atividades vinculadas. Dentre as funcionalidades implementadas temos:
- Cadastro no evento
- Confirmação de e-mail
- Redefinição de senha
- Alteração de dados cadastrais e senha
- Identificação por QR Code para registro de presença
- Visualização de avisos gerais
- Visualização dos palestrantes do evento
- Visualização das atividades do evento
- Possibilidade de favoritar atividades
- Possibilidade de se inscrever em atividades
- Visualização das presenças em atividades
Todas as funcionalidades de usuário, além de:
- Gerenciamento de usuários:
- Visualização
- Edição
- Bloqueio de acesso
- Gerenciamento de atividades
- Criação
- Visualização
- Edição
- Controle de disponibilidade para visualização pelo usuário
- Gerenciamento de palestrantes
- Criação
- Visualização
- Edição
- Remoção
- Gerenciamento de avisos
- Criação
- Visualização
- Edição
- Remoção
- Gerenciamento de locais
- Criação
- Visualização
- Edição
- Remoção
- Gerenciamento de tipos de atividade
- Criação
- Visualização
- Edição
- Remoção
- Gerenciamento de presenças em atividades
- Registro
- Remoção
- Visualização
- Gerenciamento de inscrições em atividades
- Registro
- Remoção
- Visualização
- Definição de limite de vagas
- Definição de momento da abertura das inscrições
Este projeto utiliza duas versões do node.js
(v10 para o back-end e v12 para o front-end). Desta forma, recomenda-se a utilização do software nvm
para fácil gerênciamento e troca entre as versões.
Todos os comandos apresentados neste README são compatíveis com npm
e yarn
como gerenciadores de dependências. Nós recomendamos a utilização do yarn
e, por esta razão, todos os comandos serão apresentados no formato deste gerenciador. Caso prefira utilizar o npm
, basta utilizar a sintaxe exigida pelo mesmo.
Este projeto utiliza o Firebase como plataforma de cloud computing para hospedar esta aplicação como um todo, incluindo seus 5 principais produtos: autenticação, banco de dados, armazenamento de arquivos, hospedagem e microsserviços. A escolha dessa plataforma se deu devido à sua fácil integração com as demais tecnologias utilizadas, à sua fácil curva de aprendizagem e seu baixo custo comparado aos demais serviços concorrentes.
Para criar um novo projeto no Firebase, consulte a documentação oficial.
Para criar o primeiro administrador dentro do sistema, realize os seguintes passos:
- Cadastre-se normalmente no sistema
- No banco de dados, encontre o registro do usuário desejado na collection
users
e acrescente uma propriedade do tipoboolean
chamadaisAdmin
com valortrue
. Após isso você poderá definir outros administradores pelo próprio sistema.
O banco de dados do sistema possui a seguinte estrutura:
Collection | Model |
---|---|
users | /functions/src/users/user.model.ts --> User |
activities | /functions/src/activities/activity.model.ts --> Activity |
speakers | /functions/src/speakers/speaker.model.ts --> Speaker |
activity-types | /functions/src/activities/activity.model.ts --> ActivityType |
locations | /functions/src/locations/location.model.ts --> Location |
feed | /functions/src/feed/feed.model.ts --> Post |
Além disso, há também algumas subcollections para controle das atividades:
Collection | SubCcollection | Model |
---|---|---|
users | attendances | /functions/src/users/user.model.ts --> UserAttendance |
users | favorites | /functions/src/users/user.model.ts --> FavoriteActivity |
users | registrations | /functions/src/users/user.model.ts --> UserRegistration |
activities | attendants | /functions/src/activities/activity.model.ts --> ActivityAttendance |
activities | registrations | /functions/src/activities/activity.model.ts --> ActivityRegistration |
ATENÇÃO: Nenhuma das collections acima precisarão ser criadas previamente. As mesmas serão criadas automaticamente conforma a utilização do sistema.
O front-end do projeto foi construído utilizando o framework Angular 9, utilizando padrões de design do Material UI através da biblioteca Angular Material. Devido ao uso do Firebase como plataforma de cloud computing a necessidade de uma estrutura de back-end diminui drasticamente, uma vez que o mesmo pemite comunicação direta do front-end com o banco de dados e o serviço de gerenciamento de autenticação.
Para instalar as dependências do front-end, basta executar o seguinte comando na raiz do projeto:
yarn
Para servir o código do front-end localmente, basta executar o seguinte comando:
yarn start
Para compilar o código do front-end em modo de desenvolvimento, execute:
yarn build
Para compilar o código do front-end em modo de produção, execute:
yarn build:prod
O código compilado, em ambos os modos, estará disponível na pasta /public/inscritus-web
, dentro do projeto.
Para lançar o front-end da aplicação usando o Firebase é necessário ter o firebase-cli instalado e configurado (saiba mais na documentação oficial). Para efetuar o lançamento, execute:
firebase use <nome-do-projeto-no-firebase>
yarn deploy
Após o término da execução, a nova versão já estará disponível para uso.
IMPORTANTE: O código lançado é aquele que estiver disponível na pasta /public/inscritus-web
, dentro do projeto, no momento da execução dos comandos acima. Certifique-se de compilar o código adequadamente antes de realuzar o lançamento.
A estrutura dos arquivos do front-end se dá da seguinte forma:
/
|-/public --> Arquivos compilados
|-/node_modules --> Dependências
|-/src
|-/app --> Código da aplicação
|-/auth --> Gerenciamento de autenticação
|-/common --> Diretivas, pipes e códigos de uso geral
|-/components --> Elementos de tela reutilizáveis
|-/containers --> Páginas do sistema
|-/admin-side --> Páginas presentes apenas na visualização de administrador
|-/user-side --> Páginas presentes apenas na visualização de participante
|-/... --> Páginas comuns a ambas as visulizações
|-/services --> Serviços do sistema
|-/templates --> Estruturas de página globais
|-/assets --> Imagens
|-/config --> Configurações gerais
|-/environments --> Configurações de ambiente e compilação
|-favicon.ico --> Ícone da aplicação
|-styles.scss --> Estilos gerais da aplicação
|-theme.scss --> Configurações do tema da aplicação
|-variables.scss --> Variáveis de estilos
index.html --> Arquivo raiz, onde a página será carregada
As configurações necessárias para o back-end são:
- Altere o arquivo
/src/favicon.ico
para o de sua preferência - Altere as informações sobre a sua aplicação no arquivo
/src/config/app-info.ts
, incluindo nome, versão, descrição e links para Termos de Uso e Política de Privacidade, podendo ambos serem rotas do sistema ou links externos. - Altere as cores do sistema no arquivo
/src/theme.scss
para as de sua preferência. Recomenda-se a utilização das paletas de cores do Material UI - Obtenha o objeto de configuração do Firebase e adicione-o nos arquivos
/src/environments/environment.ts
e/src/environments/environment.prod.ts
. Além disso, altere os valores defunctionsUrl
em ambos os arquivos para coreesponderem aos endereços onde o seu back-end será servido em cada um dos ambientes.
Todas as operações envolvendo o back-end devem ser executadas utilizando o node.js
versão 10, que é a versão suportada pelo Firebase Functions.
Para instalar o node v10
usando o nvm
execute:
nvm install 10
Para utilizar o node v10
usando o nvm
execute:
nvm use 10
Para instalar as dependências do back-end, basta executar o seguinte comando na pasta functions
:
yarn
Para servir o código localmente, basta executar o seguinte comando:
firebase use <nome-do-projeto>
yarn serve
Para compilar o código, execute:
firebase use <nome-do-projeto>
yarn build
O código compilado estará disponível na pasta /functions/lib
, dentro do projeto.
Para lançar o back-end da aplicação usando o Firebase é necessário ter o firebase-cli instalado e configurado (saiba mais na documentação oficial). Para efetuar o lançamento, execute:
firebase use <nome-do-projeto-no-firebase>
yarn deploy
A estrutura dos arquivos do back-end se dá da seguinte forma:
/functions
|-/lib --> Arquivos compilados
|-/node_modules --> Dependências
|-/src --> Código: models, APIs e Handlers
|-/activities
|-/feed
|-/locations
|-/speakers
|-/users
index.ts --> Visibilidade de APIs e configurações
|-<your-key-file>.json
As configurações necessárias para o back-end são:
- Gere uma nova privada para o SDK Admin do Firebase. Para saber mais, acesse a documentação oficial sobre este tópico.
- Coloque o arquivo de chave com extensão
.json
na pastafunctions
, conforme mostrado acima. - Altere o nome do arquivo de chave e o valor do
databaseURL
no arquivo/functions/src/index.ts
, conforme especificado abaixo:
const serviceAccount = require("../<key_filename>.json");
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "your_database_url"
});
Distribuído dentro da licença MIT. Veja LICENSE para mais informações.