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

Projeto Feito #2

Open
wants to merge 15 commits into
base: main
Choose a base branch
from
55 changes: 8 additions & 47 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,6 @@
# Switch Dreams Challenge

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.

Esperamos que você tenha uma boa noção nos seguintes tópicos:

- 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.
Aplicativo desenvolvido para o desafio técnico do processo seletivo na Switch Dreams.

## Problema

Expand All @@ -24,45 +14,16 @@ As informações das aulas estão disponíveis na API informada via email, assim
- 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:

Documentação: [https://documenter.getpostman.com/view/12265896/Uz59MeAK](https://documenter.getpostman.com/view/12265896/Uz59MeAK)

API: https://switch-gym.herokuapp.com/

## 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
## Aplicativo Feito

Avaliaremos as seguintes habilidades
O aplicativo foi feito usando React Native, Expo, e algumas bibliotecas adicionais. O projeto está pronto. Além disso, também é possível criar novos usuários, fazer autenticação, listar aulas por categorias, etc.. Para testar o app, acesse os links abaixo.

- 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
## Links de acesso

## 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.
Abaixo alguns links úteis:

## Diferenciais
- Testes automatizados (para os testes recomenda-se o uso do Jest)
- Linter
- Prototipação das telas no Figma
- Design no figma: [https://www.figma.com/file/OYVMRxbVg00HMj2K2vnNh0/Fit-Dreams-Prototype?node-id=0%3A1](https://www.figma.com/file/OYVMRxbVg00HMj2K2vnNh0/Fit-Dreams-Prototype?node-id=0%3A1)

## 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.
- Aplicação no Expo: [https://expo.dev/@cezari0o/fd-app?serviceType=classic&distribution=expo-go](https://expo.dev/@cezari0o/fd-app?serviceType=classic&distribution=expo-go)

- Vídeo demonstrativo: [https://youtu.be/sQe32TWHzrs](https://youtu.be/sQe32TWHzrs)
4 changes: 4 additions & 0 deletions fd-app/.expo-shared/assets.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"12bb71342c6255bbf50437ec8f4441c083f47cdb74bd89160c15e4f43e52a1cb": true,
"40b842e832070c58deac6aa9e08fa459302ee3f9da492c7e77d93d2fbf4a56fd": true
}
14 changes: 14 additions & 0 deletions fd-app/.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
71 changes: 71 additions & 0 deletions fd-app/App.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
import { StatusBar } from 'expo-status-bar';
import { LogBox, StyleSheet, Text, View } from 'react-native';
import { Login } from './src/components/Login';
import { theme } from './src/theme';
import * as SplashScreen from 'expo-splash-screen';
import { useFonts, IBMPlexSans_400Regular, IBMPlexSans_600SemiBold } from '@expo-google-fonts/ibm-plex-sans';
import { setCustomText } from 'react-native-global-props'
import { Register } from './src/components/Register';
import { NavigationContainer } from '@react-navigation/native';
import { createNativeStackNavigator, NativeStackNavigationOptions, } from '@react-navigation/native-stack';
import { ClassIndex } from './src/components/ClassIndex';
import { Header } from './src/components/Header';
import { TabBar } from './src/components/TabBar';
import { myScreenOptions } from './src/util/screenOptions';
import { Provider } from 'react-native-paper';

export default function App() {
SplashScreen.preventAutoHideAsync()

const [fontsLoaded] = useFonts({
IBMPlexSans_400Regular,
IBMPlexSans_600SemiBold,
})

if (!fontsLoaded) {
return null
}

LogBox.ignoreAllLogs();
const Stack = createNativeStackNavigator()

// setCustomText(customTextProps)
SplashScreen.hideAsync()

return (
<Provider>
<View style={styles.container}>
<StatusBar style="auto" />

<NavigationContainer>
<Stack.Navigator initialRouteName='Login'
screenOptions={myScreenOptions}
>
<Stack.Screen name='Login' component={Login} options={{ headerShown: false }} />
<Stack.Screen name='Register' component={Register} options={{ headerShown: false }} />
<Stack.Screen name='Logged' component={TabBar} options={{ title: 'Aulas Disponíveis', headerShown: false }} />
</Stack.Navigator>


</NavigationContainer>
</View>
</Provider>
);
}

const customTextProps = {
style: {
fontFamily: theme.fonts.regular,
color: theme.color.text
}
};


const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: theme.color.primary,
// alignItems: 'center',
// justifyContent: 'center',
},
});
35 changes: 35 additions & 0 deletions fd-app/app.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
{
"expo": {
"name": "fd-app",
"slug": "fd-app",
"version": "1.0.0",
"orientation": "portrait",
"icon": "./assets/icon.png",
"userInterfaceStyle": "light",
"splash": {
"image": "./assets/splash.png",
"resizeMode": "contain",
"backgroundColor": "#282830"
},
"updates": {
"fallbackToCacheTimeout": 0
},
"assetBundlePatterns": [
"**/*",
"src/assets/*",
"assets/*"
],
"ios": {
"supportsTablet": true
},
"android": {
"adaptiveIcon": {
"foregroundImage": "./assets/adaptive-icon.png",
"backgroundColor": "#282830"
}
},
"web": {
"favicon": "./assets/favicon.png"
}
}
}
Binary file added fd-app/assets/adaptive-icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added fd-app/assets/favicon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added fd-app/assets/icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added fd-app/assets/splash.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
11 changes: 11 additions & 0 deletions fd-app/babel.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
module.exports = function(api) {
api.cache(true);
return {
presets: ['babel-preset-expo'],
env: {
production: {
plugins: ['react-native-paper/babel'],
},
},
};
};
Loading