Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
ea19047
docs: clear folder
bartcosta Apr 10, 2022
661f8be
feat: backend init
bartcosta Apr 10, 2022
b54e6ca
refactor: config database
bartcosta Apr 10, 2022
cc286b0
feat: create BaseModels
bartcosta Apr 10, 2022
e333f07
feat: create Course Models
bartcosta Apr 10, 2022
ccf6147
feat: create migration courses
bartcosta Apr 10, 2022
c7536a0
refactor: BaseModels + CourseModels
bartcosta Apr 10, 2022
3c6f0bf
refactor: config database
bartcosta Apr 10, 2022
ca52048
Merge branch 'master' of https://github.com/bartcosta/desafio-fullstack
bartcosta Apr 10, 2022
51b32e0
refactor: models
bartcosta Apr 10, 2022
535c1c6
feat: create BaseValidator and CourseValidator
bartcosta Apr 10, 2022
3f5412b
feat: create CourseController
bartcosta Apr 10, 2022
7016ed7
feat: Routes
bartcosta Apr 10, 2022
5b92f82
refactor: cors
bartcosta Apr 10, 2022
086f63b
remove: validator
bartcosta Apr 10, 2022
65a1e6b
refactor: CourseService
bartcosta Apr 10, 2022
8953b27
refactor: database config
bartcosta Apr 10, 2022
d9c6035
chore: add Docker
bartcosta Apr 10, 2022
54daeae
chore: Env, package
bartcosta Apr 10, 2022
e1c12bc
feat: frontend init
bartcosta Apr 10, 2022
2c77587
docs: clear folder
bartcosta Apr 11, 2022
5731a0a
refactor: index html
bartcosta Apr 11, 2022
afd926f
docs: clear folder
bartcosta Apr 11, 2022
8aeb0de
refactor: index.js
bartcosta Apr 11, 2022
97133c5
feat: global css
bartcosta Apr 11, 2022
5afcfd2
feat: add api with axios
bartcosta Apr 11, 2022
650687b
refactor: api
bartcosta Apr 11, 2022
495d080
feat: Pages Logon and delete api.js
bartcosta Apr 11, 2022
52403a7
feat: Page List Courses
bartcosta Apr 11, 2022
6f725cf
feat: Pages Create Courses
bartcosta Apr 11, 2022
3e93d5d
feat: Header Component
bartcosta Apr 11, 2022
62783d2
feat: create routes
bartcosta Apr 11, 2022
4fc2a64
refactor: App.js
bartcosta Apr 11, 2022
db9ec9e
chore: .env, package and yarn
bartcosta Apr 11, 2022
f518936
chore: .env.example
bartcosta Apr 11, 2022
a84b5c0
Create README.md
bartcosta Apr 11, 2022
e4f953f
Update README.md
bartcosta Apr 11, 2022
e35ffdd
Update README.md
bartcosta Apr 11, 2022
40417e2
Update README.md
bartcosta Apr 11, 2022
6b0bf89
docs: gitignore
bartcosta Apr 11, 2022
c15a12a
refactor: Course Controller
bartcosta Apr 11, 2022
a3dde45
Merge branch 'master' of https://github.com/bartcosta/desafio-fullstack
bartcosta Apr 11, 2022
d454fa5
refactor: Course Service
bartcosta Apr 11, 2022
38229f2
refactor: Header remove body
bartcosta Apr 11, 2022
7a90b0f
refactor: Logon
bartcosta Apr 11, 2022
6a61ce2
refactor: remove body and add catch error
bartcosta Apr 11, 2022
5b00588
refactor: addCourses and add console.error
bartcosta Apr 11, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 0 additions & 21 deletions LICENSE

This file was deleted.

31 changes: 5 additions & 26 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,29 +1,8 @@
# Desafio Celso Lisboa para FullStack

### Cenário
### Inicialização

**Como** Coordenador Acadêmico de uma Instituição de Ensino
**Eu preciso** realizar a gestão dos cursos oferecidos pela Instituição, com seus respectivos professores, salas e horários
**Para** que o setor de Marketing possa vender os cursos online.

### Segue instruções para realizar o desafio

1. Faça um fork deste repositório.
2. Baseado no cenário acima, modele e crie o esquema do banco de dados para armazenar as informações normalizadas.
* Comite a imagem em jpg ou png do DER e o script do DDL.
3. Desenvolva uma API REST para realizar as operações necessárias com o banco de dados criado.
4. Baseado nas imagens `wireframe/1-login-mobile.png` e `wireframe/2-login-desktop.png`, crie a tela de login da aplicação.
* Considere apenas uma validação simples por e-mail e senha.
* Não existe a necessidade de CRUD de usuário, recuperação de senha ou outra operação mais complexa.
5. Baseado nas imagens `wireframe/3-cursos-mobile.png` e `wireframe/4-cursos-desktop.png`, crie a tela de visualização e deleção de cursos.
* Deve conter as informações de horário, professor e sala.
6. Baseado nas imagens `wireframe/5-detalhe-mobile.png` e `wireframe/6-detalhe-desktop.png`, crie a tela de criação e alteração de cursos.
* Os campos de professor e sala deverão ser um multi-select.
* Não existe a necessidade de CRUD de professor e sala.
7. Realizar um Pull Request para este repositório, com instruções necessárias para instalação e instânciação dos sistemas.

### O que será avaliado

1. Fidelidade às instruções e ao cenário.
2. Clean Code e boas práticas.
3. Boas práticas de versionamento.
1. Para inicializar o backend será preciso ter o DOCKER instalado em sua máquina.
2. Com o Docker instalado, use o comando "docker-compose up" no diretório do BACKEND para startar os containers de API e BD.
3. Com os containers inicializados, utilize o comando "docker-compose exec adonis-demo-api sh" e em seguida "node ace migration:run" para rodar as migrations necessárias.
4. Para inicializar o Frontend "yarn" ou "yarn install" e em seguida "yarn start" no diretório do FRONTEND
28 changes: 28 additions & 0 deletions backend/.adonisrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
{
"typescript": true,
"commands": [
"./commands",
"@adonisjs/core/build/commands/index.js",
"@adonisjs/repl/build/commands",
"@adonisjs/lucid/build/commands"
],
"exceptionHandlerNamespace": "App/Exceptions/Handler",
"aliases": {
"App": "app",
"Config": "config",
"Database": "database",
"Contracts": "contracts"
},
"preloads": [
"./start/routes",
"./start/kernel"
],
"providers": [
"./providers/AppProvider",
"@adonisjs/core",
"@adonisjs/lucid"
],
"aceProviders": [
"@adonisjs/repl"
]
}
1 change: 1 addition & 0 deletions backend/.dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
node_modules
14 changes: 14 additions & 0 deletions backend/.editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@

[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true

[*.json]
insert_final_newline = ignore

[*.md]
trim_trailing_whitespace = false
14 changes: 14 additions & 0 deletions backend/.env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
PORT=3333
HOST=0.0.0.0
NODE_ENV=development
APP_KEY=YExJ0oi4WPaO37kFLvgNp4JF8kzRwZl6


DB_CONNECTION=pg
DB_HOST=db
DB_PORT=5432
DB_USER=demo
DB_PASSWORD=demo1234
DB_DATABASE=demo_db

DRIVE_DISK=local
7 changes: 7 additions & 0 deletions backend/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
node_modules
build
coverage
.vscode
.DS_STORE
.env
tmp
23 changes: 23 additions & 0 deletions backend/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
FROM node:14-alpine

# make the 'app' folder the current working directory
WORKDIR /app

# add git to project to some cloning can be done
RUN apk add --no-cache git

# copy both 'package.json' and 'package-lock.json' (if available)
COPY package*.json ./

# install project dependencies
RUN npm install

# copy project files and folders to the current working directory (i.e. 'app' folder)
COPY . .

# Will fix hot reload for Windows, but in compensation, will use more CPU (35~60%) and energy.
# Linux users don't need because hot reload works.
#ENV CHOKIDAR_USEPOLLING=true

# container entrypoint
ENTRYPOINT ["node","ace","serve", "--watch"]
16 changes: 16 additions & 0 deletions backend/ace
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
/*
|--------------------------------------------------------------------------
| Ace Commands
|--------------------------------------------------------------------------
|
| This file is the entry point for running ace commands.
|
*/

require('reflect-metadata')
require('source-map-support').install({ handleUncaughtExceptions: false })

const { Ignitor } = require('@adonisjs/core/build/standalone')
new Ignitor(__dirname)
.ace()
.handle(process.argv.slice(2))
Loading