Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Switch dreams challenge #5

Open
wants to merge 21 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
14 changes: 14 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
node_modules/
.expo/
dist/
npm-debug.*
*.jks
*.p8
*.p12
*.key
*.mobileprovision
*.orig.*
web-build/

# macOS
.DS_Store
34 changes: 34 additions & 0 deletions App.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import * as React from "react";
import { NavigationContainer } from "@react-navigation/native";
import { createNativeStackNavigator } from "@react-navigation/native-stack";
import Login from "./src/screens/login";
import Register from "./src/screens/register";
import Home from "./src/screens/home";
import ClassPage from "./src/screens/classPage";
import editPage from "./src/screens/editPage";
import AuthProvider from "./src/context/auth";

const Stack = createNativeStackNavigator();

const MyStack = () => {
return (
<NavigationContainer>
<AuthProvider>
<Stack.Navigator
initialRouteName="Home"
screenOptions={{
headerShown: false,
}}
>
<Stack.Screen name="Home" component={Home} />
<Stack.Screen name="Login" component={Login} />
<Stack.Screen name="Register" component={Register} />
<Stack.Screen name="classPage" component={ClassPage} />
<Stack.Screen name="editPage" component={editPage} />
</Stack.Navigator>
</AuthProvider>
</NavigationContainer>
);
};

export default MyStack;
71 changes: 7 additions & 64 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,68 +1,11 @@
# Switch Dreams Challenge
### Challenge Sweet dreams

O desafio proposto visa avaliar suas habilidades com o React Native, sendo isso parte do processo seletivo para vaga de desenvolvedor frontend da Switch Dreams.
- O projeto teve como sua finalidade fazer um app para academias utilizando a ferramenta do expo e a linguagem react-native.

Esperamos que você tenha uma boa noção nos seguintes tópicos:
- Link para o figma do projeto: https://www.figma.com/file/rfhlRA09hiG1hWFo2X39F5/Untitled?node-id=0%3A1&t=1TBpeypndDg1qFEB-1
- OBS: A escolha das cores foi feita com base nas cores da empresa assim trazendo tons de roxo e verde.

- HTTP e estrutura básica da web
- Linguagem de programação Javascript
- Framework React Native
- Ferramenta [Expo](https://docs.expo.dev/)
- Consumo de API

Além disso é sempre interessante estar atento aos padrões usuais de qualidade de código.

## Problema

A academia Fit Dreams possui uma grande versatilidade de aulas em seu cronograma, sendo que as atividades variam a cada mês. A Fit Dreams acaba de te contratar para desenvolver o frontend de um sistema que organizará a disponibilidade de cada aula.

As informações das aulas estão disponíveis na API informada via email, assim como seus respectivos endpoints. A partir da API fornecida, deve-se desenvolver em React Native as telas:

- Cadastro de usuário
- Login
- Index de aulas disponíveis
- Show da aula
- Edit da aula

Cada aula contém as informações:

- Nome da aula
- Nome do professor
- Horário
- Dias da semana
- Imagem de capa da aula
- Descrição

## API
Para obter as informações que utilizará no aplicativo utilize a API fornecida:

API: https://gym.switchdreams.com.br/

[:memo: Docs](https://documenter.getpostman.com/view/12265896/Uz59MeAK#57d01a84-2799-4754-a891-7f08936f2a5e)

## Requisitos

Para iniciar o desafio, crie um fork a partir do presente repositório e inicie seu projeto react native nele. Altere o readme com todas as informações que julgar pertinente para o desafio. Para entregar a sua implementação você deve criar uma PR e inserir no readme um link de um vídeo demonstrativo de todas as telas e do fluxo criado para o projeto.


## Avaliação

Avaliaremos as seguintes habilidades

- Nível de conhecimento em Javascript
- Nível de conhecimento em React Native
- Nível de conhecimento em consumo de APIs
- Qualidade do código
- Utilização do github

## Entrega
Deve-se fazer uma [Publish](https://docs.expo.dev/workflow/publishing/#how-to-publish) através do Expo para que o aplicativo seja mais facilmente testado, além de deixar o link no readme de um vídeo demonstrando o aplicativo.

## Diferenciais
- Testes automatizados (para os testes recomenda-se o uso do Jest)
- Linter
- Prototipação das telas no Figma

## Observações
Ao enviar o desafio você declara que a solução implementada foi 100% feita por você, sem violar nenhuma licença de software de terceiros.
- Link para o publish do projeto https://expo.dev/@vhvictor1/Switch-dreams-challenge?serviceType=classic&distribution=expo-go
- Não mudei a splash art e nem o Icone por não saber o que colocar.

- Link para o vídeo de demonstração https://drive.google.com/file/d/1WCZlaDdILm7IuFp7ReNCDFr-gvct5Sbi/view?usp=sharing.
33 changes: 33 additions & 0 deletions app.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
{
"expo": {
"name": "Switch-dreams-challenge",
"slug": "Switch-dreams-challenge",
"version": "1.0.0",
"orientation": "portrait",
"icon": "",
"userInterfaceStyle": "light",
"splash": {
"image": "",
"resizeMode": "contain",
"backgroundColor": "#ffffff"
},
"updates": {
"fallbackToCacheTimeout": 0
},
"assetBundlePatterns": [
"**/*"
],
"ios": {
"supportsTablet": true
},
"android": {
"adaptiveIcon": {
"foregroundImage": "",
"backgroundColor": "#FFFFFF"
}
},
"web": {
"favicon": ""
}
}
}
6 changes: 6 additions & 0 deletions babel.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
module.exports = function(api) {
api.cache(true);
return {
presets: ['babel-preset-expo'],
};
};
Loading