-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
proffy v2 - projeto final de bloco Microsserviços e Mensageria .netcore
- Loading branch information
Gon
committed
Sep 19, 2020
1 parent
1894498
commit 7527f2a
Showing
645 changed files
with
71,327 additions
and
10,120 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,72 +1,98 @@ | ||
# Projeto para Estudo de ReactJS, React Native e NodeJS | ||
## Anotações rápidas: | ||
|
||
### ReactJS | ||
``` | ||
$ create-react-app web --template typescript | ||
$ yarn add react-router-dom | ||
$ yarn add @types/react-router-dom -D | ||
$ yarn add axios | ||
``` | ||
|
||
### NodeJs | ||
``` | ||
$ yarn init -y | ||
$ yarn add typescript -D | ||
$ yarn tsc --init | ||
tsconfig.json -> "target": "es5" para "target": "es2017", | ||
yarn add ts-node-dev -D | ||
package.json -> | ||
"scripts": { | ||
"start": "tsnd --transpile-only --ignore-watch node_modules --respawn src/server.ts" | ||
}, | ||
$ yarn add express | ||
$ yarn add @types/express -D | ||
$ yarn add knex sqlite3 | ||
package.json -> | ||
"scripts": { | ||
"start": "tsnd --transpile-only --ignore-watch node_modules --respawn src/server.ts", | ||
"knex:migrate": "knex --knexfile knexfile.ts migrate:latest", | ||
"knex:migrate:rollback": "knex --knexfile knexfile.ts migrate:rollback" | ||
}, | ||
Exemplo de post: | ||
{ | ||
"name": "Fulano", | ||
"avatar": "https://avatars1.githubusercontent.com/u/32773851?s=460&u=f4ad109717d170dc5bc8c4e0327681a348d41682&v=4", | ||
"whatsapp": "18451848", | ||
"bio": "Bio", | ||
"subject": "Informatica", | ||
"cost": 80, | ||
"schedule": [ | ||
{ "week_day": 1, "from": "8:00", "to": "14:00" }, | ||
{ "week_day": 2, "from": "8:00", "to": "14:00" }, | ||
{ "week_day": 5, "from": "8:00", "to": "14:00" } | ||
] | ||
} | ||
$ yarn add cors | ||
$ yarn add @types/cors -D | ||
``` | ||
|
||
### React Native | ||
``` | ||
$ npm install -g expo-cli | ||
$ expo init mobile | ||
- blank typescript | ||
- play store -> expo client | ||
- Run on Android device/emulator | ||
Caso erros ao executar: https://github.com/Rocketseat/expo-common-issues | ||
$ expo install expo-font @expo-google-fonts/archivo @expo-google-fonts/poppins | ||
$ yarn add @react-navigation/native | ||
$ expo install react-native-gesture-handler react-native-reanimated react-native-screens react-native-safe-area-context @react-native-community/masked-view | ||
$ yarn add @react-navigation/stack | ||
$ yarn add @react-navigation/bottom-tabs | ||
$ yarn add axios | ||
$ expo install @react-native-community/async-storage | ||
``` | ||
# Proffy - Sua plataforma de estudos online | ||
|
||
## Índice | ||
|
||
- [O que é Proffy?](#o_que_e_proffy) | ||
- [Sobre o projeto](#sobre_o_projeto) | ||
- [UML](#uml) | ||
- [Protótipo](#prototipo) | ||
- [Instalação](#instalacao) | ||
- [Dívida Ténica / Visão](#divida_tecnica) | ||
|
||
<a id="o_que_e_proffy"></a> | ||
|
||
## O que é Proffy? | ||
|
||
Proffy é uma plataforma que encurta a distância entre professores que realizam aula particular e alunos. | ||
|
||
O professor cria uma conta com seu nome e contato, informa o que ensina (Ex.: Inglês, Química, Violão ou outros) e quais horários está disponível. O aluno acessa a plataforma, busca pela matéria, dia e horário desejado e pronto! O aluno escolhe um professor da lista, entra em contato e combina a aula. | ||
|
||
[Apresentação pptx](docs/Apresentação.pptx) | ||
|
||
<a id="sobre_o_projeto"></a> | ||
|
||
## Sobre o Projeto | ||
|
||
**Proffy é um projeto acadêmico para a entrega do trabalho do bloco de Microserviços e Mensageria da Pós Engenharia de Software .NET. Portanto, para atender as rubricas do trabalho, o back foi PROPOSITALMENTE segmentado em microserviços, estruturado em DDD e utilizado mensageria para a funcionalidade de envio de e-mail.** | ||
|
||
De onde surgiu Proffy? Bem... Dai a César o que é de César, a DEUS o que é de DEUS e os créditos a quem pertence. | ||
|
||
Proffy foi idealizado pela Rocketseat para a "Next Level Week #2" onde o back-end foi em NodeJS e o front-end em ReactJS e ReactNative ([Proffy v1](https://github.com/gonribeiro/Proffy/releases/tag/v1.0.0)). Sendo assim, estou aproveitando parte do front-end já criado, reescrevendo o back em .NetCore, incrementando ambos (back e front) com funcionalidades para a "versão 2" desse projeto que contém: | ||
|
||
- Microserviço de Usuário: Responsável pelos dados do professor e a autenticação com JWT. | ||
- Microserviço de Cursos: Responsável pelas informações dos cursos lecionados. | ||
- Microserviço de Email: Responsável por enviar e-mail. | ||
- Index de cada microserviço (exceto email) exibe a documentação API pelo Swagger. | ||
- Utilizado RabbitMQ para mensagens. | ||
- Utilizado conceito "mobile first" onde as telas são responsivas se adaptando a computadores, tablets e smartphone. | ||
- Estilização customizada (sem uso de bootstrap ou material design). | ||
|
||
<a id="uml"></a> | ||
|
||
## UML | ||
|
||
Domínio | ||
|
||
![Domain](docs/images/domain2.jpg) | ||
|
||
Casos de Uso [.](https://www.ateomomento.com.br/caso-de-uso-include-extend-e-generalizacao/) [.](https://www.uml-diagrams.org/class-diagrams-overview.html) | ||
|
||
![Domain](docs/images/casos_de_uso.jpg) | ||
|
||
<a id="prototipo"></a> | ||
|
||
## Protótipo ([Visualizar](https://www.figma.com/file/ZRvbZ16cOsFlcir702PbS4/Proffy-Web?node-id=308122%3A1)) | ||
|
||
![Database](docs/images/layout.jpg) | ||
|
||
<a id="instalacao"></a> | ||
|
||
## Instalação | ||
|
||
Olá! Aqui irei informar apenas alguma particularidade do projeto para auxiliá-lo na execução. | ||
|
||
Sendo assim, assumo que já possua o conhecimento necessário com .NetCore3.1 e ReactJS e consiga executar ambos ambientes (web e server). | ||
|
||
- Ao executar o projeto do "server - .netcore", tenha certeza de executar o UserMicroservice e CourseMicroservice simultâneamente. | ||
- No Visual Studio, com o botão direito sobre a "Solução Proffy", clique em "Definir Projetos de Inicialização". Selecione "Vários projetos de inicialização" e em "ação" permita "Iniciar" os projetos "CourseMicroservice.Application e UserMicroservice.Application" (apenas esses são necessários). | ||
- Executar "update-database" para cada micro serviço. | ||
|
||
<a id="divida_tecnica"></a> | ||
|
||
## Dívida técnica / Visão | ||
|
||
2.0 | ||
|
||
- Web | ||
- Mensagem de carregando durante as requisições | ||
- React Select: Required não funciona, Usar como componente, Corrigir exibição da lista | ||
- Server e Web | ||
- Máscara e validação dos campos facebook, whatsapp e custo | ||
- Impedir cadastro de disponibilidade de aula com hora fim menor ou igual a de inicio | ||
|
||
2.1 | ||
|
||
- Web: Criar menu de navegação | ||
- Server: Estruturá-lo em DDD | ||
- Server e Web | ||
- Atualizar token de acesso (https://code-maze.com/using-refresh-tokens-in-asp-net-core-authentication/) | ||
- Email de confirmação de criação de conta (conta deverá ser habilitada após confirmação) | ||
- Inserir descrição do curso no momento do cadastro pelo professor (campo já criado no banco de dados) | ||
- Permitir professor desativar ou excluir curso cadastrado | ||
- Upload e armazenamento da foto de perfil | ||
- Permitir professor cadastar vários cursos e horários | ||
- Professor cadastrar novas categorias de matérias | ||
- Opção para usuário redefinir a senha quando esquecida | ||
- Área do administrador | ||
- Cadastro de alunos | ||
- Avaliação do professor pelo aluno |
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
## Banco de Dados | ||
|
||
https://yuml.me/diagram/scruffy/class/draw | ||
|
||
``` | ||
[Users]1-1[TeacherCourses] | ||
[TeacherCoursesSchedules]1-1[TeacherCourses] | ||
[Connections]1..*-1[Users] | ||
[TeacherCourses]1-1[Courses] | ||
[Users; Id: Guid; Email: Varchar(40); Password: Varchar(40); Name: Varchar(120); Photo: Varchar(255); Whatsapp: Varchar(13); Facebook: Varchar(255); Bio: Text; CreatedAt: DateTime; Actived: Bool ] | ||
[Connections; Id: Guid; UserId: Guid; CreatedAt: DateTime ] | ||
[TeacherCourses; Id: Guid; UserId: Guid; Cost: Varchar(7); Description: Varchar(255); Actived: Bool ] | ||
[TeacherCoursesSchedules; Id: Guid; ClassId: Guid; WeekDay: Int; From: Int; To: Int ] | ||
[Courses; Id: Guid; Name: Varchar(50); Actived: Bool ] | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
## Caso de Uso | ||
|
||
https://yuml.me/diagram/scruffy/class/draw | ||
|
||
``` | ||
[Professor]-(Criar conta) | ||
[Professor]-(Efetuar Login) | ||
[Professor]-(Atualizar dados pessoais) | ||
[Professor]-(Cadastrar Curso) | ||
(Cadastrar Curso)<(Cadastrar horário disponível) | ||
[Professor]-(Atualizar Curso) | ||
[Professor]-(Atualizar horário disponível) | ||
[Aluno]-(Procurar professor/curso) | ||
(Procurar professor/curso)<(Entrar em contato com professor) | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
## Domínio | ||
|
||
https://yuml.me/diagram/scruffy/class/draw | ||
|
||
``` | ||
[User]-[TeacherCourse] | ||
[TeacherCoursesSchedule]-[TeacherCourse] | ||
[Connection]-[User] | ||
[TeacherCourse]-[Course] | ||
[TeacherCoursesSchedule]-[EnumWeekDay] | ||
[User; Id; Email; Password; Name; Photo; Whatsapp; Facebook; Bio; CreatedAt; Actived ] | ||
[Connection; Id; UserId; CreatedAt ] | ||
[TeacherCourse; Id; UserId; Cost; Description; Actived ] | ||
[TeacherCoursesSchedule; Id; ClassId; WeekDay; From; To ] | ||
[Course; Id; Name; Actived ] | ||
[EnumWeekDay; Segunda; Terça; Quarta; Quinta; Sexta; Sábado] | ||
[ TeacherCourseSchedule; CreateSchedule(TeacherCourseSchedule); GetSchedule(Guid TeacherCourseId); UpdateSchedule(TeacherCourseSchedule); ] | ||
[ TeacherCourse; CreateTeacherCourse(TeacherCourse); GetTeacherCourse(Guid UserId); Update TeacherCourse(TeacherCourse); SearchCourse(CourseId, weekday, from)] | ||
[UserService; CreateUser(User); GetUser(Guid UserId); UpdateUser(User); Login (Email e Password); SearchUser(List Guid Id)] | ||
[WeekDayEnum; GetAll()] | ||
[Courses; GetAll()] | ||
``` |
Oops, something went wrong.