Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
e4dc572
Ionic 4 Blank
daniielf Jan 2, 2019
0e78161
Fonte da Aplicacao
daniielf Jan 2, 2019
7eb583d
Fonte da Aplicacao
daniielf Jan 2, 2019
9171cb8
FakeFlix
daniielf Jan 2, 2019
d7dfe69
Componente de Slide Horizontal para a Home (Prototipo)
daniielf Jan 3, 2019
d24601a
Search Component (Prototipo)
daniielf Jan 3, 2019
474463f
Home Grid Search View Control
daniielf Jan 3, 2019
f41661f
Side Menu Prototipo
daniielf Jan 3, 2019
735b94a
Menu Event Emiiter Control
daniielf Jan 3, 2019
83111c2
GridViewComponent Event Handling
daniielf Jan 3, 2019
a9c78d5
Services, Reformulacao de Modulos, Testes de Prototipo
daniielf Jan 4, 2019
090f0b6
Detail Page, Navigation, Loading e Toast Services
daniielf Jan 5, 2019
69e7afa
Menu Pos. Change
daniielf Jan 5, 2019
d62d71b
Menu Navigation
daniielf Jan 5, 2019
1f800cd
Login Page, Login Form
daniielf Jan 7, 2019
805dc68
icon and splash
daniielf Jan 7, 2019
9aaa4b4
Register Form Component Preparation
daniielf Jan 8, 2019
317bfdb
FingerPrintIO
daniielf Jan 8, 2019
97b5281
Register Component Prot Finalizado
daniielf Jan 8, 2019
964cc7e
Digital Auth Register Verify
daniielf Jan 8, 2019
0ba241c
Firebase Auth, Register e Recover pass
daniielf Jan 9, 2019
9644dfc
Recover pass. finalizado
daniielf Jan 9, 2019
7568b74
Primeiros testes dos Componentes
daniielf Jan 9, 2019
c513b8c
ReadMe Update
daniielf Jan 9, 2019
f5415d4
PRimeiras Buscas Pela API (nao concluido)
daniielf Jan 9, 2019
6d2e2cd
Busca e Detalhes do Filme
daniielf Jan 16, 2019
fcf5ed0
Busca paginada por filme
daniielf Jan 16, 2019
69bbd64
Favoritos Com CloudStore
daniielf Jan 19, 2019
a55dcd2
No image Handling e GridView Display Fix
daniielf Jan 20, 2019
db81fdb
Cometario e Documentação do Código
daniielf Jan 21, 2019
172d700
Finalizacao do Projeto
daniielf Jan 21, 2019
60d2ba9
Ajustes de Plugins
daniielf Jan 21, 2019
9f861bf
Ajustes dos Packages e Arquivos
daniielf Jan 21, 2019
00f1135
Jasmine Fixing
daniielf Jan 21, 2019
d0e9fdf
Read Me Finalização
daniielf Jan 22, 2019
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
35 changes: 35 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# Specifies intentionally untracked files to ignore when using Git
# http://git-scm.com/docs/gitignore

*~
*.sw[mnpcod]
*.log
*.tmp
*.tmp.*
log.txt
*.sublime-project
*.sublime-workspace
.vscode/
npm-debug.log*

.idea/
.ionic/
.sourcemaps/
.sass-cache/
.tmp/
.versions/
coverage/
dist/
node_modules/
tmp/
temp/
platforms/
plugins/
plugins/android.json
plugins/ios.json
www/
$RECYCLE.BIN/

.DS_Store
Thumbs.db
UserInterfaceState.xcuserstate
112 changes: 51 additions & 61 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,61 +1,51 @@
# Show me the code

### # DESAFIO:

Você deverá criar um aplicativo, que será um clone do aplicativo do Netflix.

São obrigatórias:
* Página de cadastro.
* Página de login, deve ser possivel autenticar-se utilizando a digital (Fingerprint/TouchId), para permitir que o cliente acesse seu app com mais facilidade.
* Home, onde serão exibidas diversas listas horizontais de filmes, que você poderá organizar como quiser.
Exemplo: Exibir listas de acordo com genêro, exibir listas de acordo com popularidade, etc. Consulte as opções de query disponíveis na API e use a criatividade. :smiley:
* No topo das listas deve haver uma lista de "Favoritos", onde os filmes favoritados pelo cliente devem ser exibidos.
* Página de informações sobre o filme, como sinopse, ano de lançamento e etc, esta deverá ser exibida quando o cliente clicar em um filme. Deve conter um botão para que o cliente possa favoritar o filme, esta deve ser a marcação utilizada para exibir o filme na lista de favoritos da Home.

**Importante: Cada lista de filmes deve ser um componente isolado.**

### # Avaliação

Você será avaliado pela usabilidade, por respeitar o design e pela arquitetura do app. É esperado que você consiga explicar as decisões que tomou durante o desenvolvimento através de commits.

* Ionic 4
* SASS
* O app deve funcionar no iOS 9 e Android 4.4
* Splashscreen + Icones
* Testes unitários (Aqui você é livre pra usar o que quiser. Quer ir de Karma + Jasmine? Quer se aventurar no Jest? Quer sair da curva com Chai + Mocha? Não importa, só queremos que você teste. :heart:)
* Uso do git
* Fontes e Cores especificadas abaixo.

### # APIs e Biblioteca obrigatórias

* Para o cadastro e login: [FirebaseAuthentication](https://firebase.google.com/docs/auth/?hl=pt-br)
* Para a autenticação: [Fingerprint](https://ionicframework.com/docs/native/fingerprint-aio/)/[Touch ID](https://ionicframework.com/docs/native/touch-id/).
* Para listagem de filmes: [MovieDB](https://developers.themoviedb.org/3/getting-started/introduction)
* Exemplo de [lista horizontal e componente](https://www.imageupload.co.uk/images/2018/10/09/F28459C8-3212-472D-86D4-1616734C84AE.png)
* Para armazenar os filmes favoritados: [Cloud Firestore](https://firebase.google.com/docs/firestore/?hl=pt-br)

### Paleta de cores

$red: #E50914 (Para detalhes, colorir botões e etc);

$black: #221F1F (Backgrounds);

$white: #f5f5f1 (Texto)

### Fonte

https://fonts.google.com/specimen/K2D

### # Observações gerais

Adicione um arquivo [README.md](http://README.md) com os procedimentos para executar o projeto.

Comente qualquer coisa nele que você gostaria de nos contar, como a abordagem que você utilizou na solução do desafio, se você usou alguma arquitetura de CSS, como suas escolhas influenciaram na performance e etc.

Pedimos que trabalhe sozinho e não divulgue o resultado na internet.

Faça um fork desse desse repositório em seu Github e nos envie um Pull Request com o resultado, por favor informe por qual empresa você esta se candidatando.

### # Importante: não há prazo de entrega, faça com qualidade!

# BOA SORTE!
# FakeFlix

Projeto desenvolvido por Daniel de Freitas Gonçalves @ 2019

Resumo:
Para o desenvolvimento deste projeto primeiramente foi elaborado um protótipo para definir a usabilidade
e navegação de cada tela sempre com o foco em abordar todas as tecnologias esperadas e desejadas parte este projeto.
Com a primeira etapa pronta, foi estruturado uma primeira parte dos testes unitários*.
Com seu escopo de uso e de front-end definidos, foi sendo implementado as tecnologias e abordagens para a finalização
da aplicação.
A aplicação final possui um sistema de registro e autenticação através do Google Firebase e
tem como principal funcionalidade a busca por filmes e série inspirado no tema do Netflix.
Através da busca pode-se ver detalhes e informações sobre as séries e filmes disponibilizados
na API do MovieDB.

* A parte de teste do sistema pode estar muito superficial e alguns casos inexistente pela falta de conhecimento
no conceito e na ferramenta.

Considerações:
Este projeto necessitou de mim uma aprendizagem em diversos aspectos por não possuir uma experiência anterior
em algumas das tecnologias e ferramentas exigidas.
O Ionic versão 4 trouxe algumas novidades e diferenças ao 3 em que eu estava mais familiarizado.
A maior dificuldade foi a implementação dos Testes Unitários por ter sido a primeira vez que
lidei com a elaboração destes.

Instalação e Uso:
Dependências:
- Node
- Android SDK / XCode
- Ionic Cordova
- GIT (opcional)

Instalação:
No terminal:
- git clone https://github.com/daniielf/TesteIonic // Clonar repositório
- cd /TesteIonic // Navegar até a pasta do projeto
- npm install // Instalar dependências do projeto
- ionic cordova run android / ionic cordova run ios // Iniciar instalação no dispositivo de destino

OBS: DEVIDO A IMPOSSIBILIDADE DE TESTAR EM SISTEMAS IOS ESTE PROJETO PODE TER DIFICULDADES E INCOMPATIBILIDADES
COM DISPOSITIVOS COM SISTEMA OPERACIONAL IOS.

Tecnologias abordadas:
- Ionic 4 (v Beta)
- Autenticação por Digital
- Google Firebase
- Google Cloud FireStore
- MovieDB API (https://developers.themoviedb.org/3/)
- Karma & Jasmine

Esta aplicação não possui fins comerciais, apenas uma breve abordagem sobre conceitos e ferramentas citadas acima.
188 changes: 188 additions & 0 deletions angular.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,188 @@
{
"$schema": "./node_modules/@angular-devkit/core/src/workspace/workspace-schema.json",
"version": 1,
"defaultProject": "app",
"newProjectRoot": "projects",
"projects": {
"app": {
"root": "",
"sourceRoot": "src",
"projectType": "application",
"prefix": "app",
"schematics": {},
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:browser",
"options": {
"outputPath": "www",
"index": "src/index.html",
"main": "src/main.ts",
"polyfills": "src/polyfills.ts",
"tsConfig": "src/tsconfig.app.json",
"assets": [
{
"glob": "**/*",
"input": "src/assets",
"output": "assets"
}
],
"styles": [
{
"input": "src/theme/variables.scss"
},
{
"input": "src/global.scss"
}
],
"scripts": []
},
"configurations": {
"production": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.prod.ts"
}
],
"optimization": true,
"outputHashing": "all",
"sourceMap": false,
"extractCss": true,
"namedChunks": false,
"aot": true,
"extractLicenses": true,
"vendorChunk": false,
"buildOptimizer": true,
"budgets": [
{
"type": "initial",
"maximumWarning": "2mb",
"maximumError": "5mb"
}
]
},
"ci": {
"progress": false
}
}
},
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
"browserTarget": "app:build"
},
"configurations": {
"production": {
"browserTarget": "app:build:production"
},
"ci": {
"progress": false
}
}
},
"extract-i18n": {
"builder": "@angular-devkit/build-angular:extract-i18n",
"options": {
"browserTarget": "app:build"
}
},
"test": {
"builder": "@angular-devkit/build-angular:karma",
"options": {
"main": "src/test.ts",
"polyfills": "src/polyfills.ts",
"tsConfig": "src/tsconfig.spec.json",
"karmaConfig": "src/karma.conf.js",
"styles": [],
"scripts": [],
"assets": [
{
"glob": "favicon.ico",
"input": "src/",
"output": "/"
},
{
"glob": "**/*",
"input": "src/assets",
"output": "/assets"
}
]
},
"configurations": {
"ci": {
"progress": false,
"watch": false
}
}
},
"lint": {
"builder": "@angular-devkit/build-angular:tslint",
"options": {
"tsConfig": ["src/tsconfig.app.json", "src/tsconfig.spec.json"],
"exclude": ["**/node_modules/**"]
}
},
"ionic-cordova-build": {
"builder": "@ionic/angular-toolkit:cordova-build",
"options": {
"browserTarget": "app:build"
},
"configurations": {
"production": {
"browserTarget": "app:build:production"
}
}
},
"ionic-cordova-serve": {
"builder": "@ionic/angular-toolkit:cordova-serve",
"options": {
"cordovaBuildTarget": "app:ionic-cordova-build",
"devServerTarget": "app:serve"
},
"configurations": {
"production": {
"cordovaBuildTarget": "app:ionic-cordova-build:production",
"devServerTarget": "app:serve:production"
}
}
}
}
},
"app-e2e": {
"root": "e2e/",
"projectType": "application",
"architect": {
"e2e": {
"builder": "@angular-devkit/build-angular:protractor",
"options": {
"protractorConfig": "e2e/protractor.conf.js",
"devServerTarget": "app:serve"
},
"configurations": {
"ci": {
"devServerTarget": "app:serve:ci"
}
}
},
"lint": {
"builder": "@angular-devkit/build-angular:tslint",
"options": {
"tsConfig": "e2e/tsconfig.e2e.json",
"exclude": ["**/node_modules/**"]
}
}
}
}
},
"cli": {
"defaultCollection": "@ionic/angular-toolkit"
},
"schematics": {
"@ionic/angular-toolkit:component": {
"styleext": "scss"
},
"@ionic/angular-toolkit:page": {
"styleext": "scss"
}
}
}
Loading