Compare commits
3 Commits
44dbf74f1c
...
c2c3821ce2
Author | SHA1 | Date | |
---|---|---|---|
c2c3821ce2 | |||
77e5082680 | |||
3a7b83b990 |
35
frontend/.gitignore
vendored
Normal file
35
frontend/.gitignore
vendored
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
# Learn more https://docs.github.com/en/get-started/getting-started-with-git/ignoring-files
|
||||||
|
|
||||||
|
# dependencies
|
||||||
|
node_modules/
|
||||||
|
|
||||||
|
# Expo
|
||||||
|
.expo/
|
||||||
|
dist/
|
||||||
|
web-build/
|
||||||
|
|
||||||
|
# Native
|
||||||
|
*.orig.*
|
||||||
|
*.jks
|
||||||
|
*.p8
|
||||||
|
*.p12
|
||||||
|
*.key
|
||||||
|
*.mobileprovision
|
||||||
|
|
||||||
|
# Metro
|
||||||
|
.metro-health-check*
|
||||||
|
|
||||||
|
# debug
|
||||||
|
npm-debug.*
|
||||||
|
yarn-debug.*
|
||||||
|
yarn-error.*
|
||||||
|
|
||||||
|
# macOS
|
||||||
|
.DS_Store
|
||||||
|
*.pem
|
||||||
|
|
||||||
|
# local env files
|
||||||
|
.env*.local
|
||||||
|
|
||||||
|
# typescript
|
||||||
|
*.tsbuildinfo
|
18
frontend/App.js
Normal file
18
frontend/App.js
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
import { StatusBar } from "expo-status-bar";
|
||||||
|
import { StyleSheet, Text, View } from "react-native";
|
||||||
|
import { LoginForm } from "./screens/Login";
|
||||||
|
|
||||||
|
export default function App() {
|
||||||
|
return (
|
||||||
|
<View style={styles.container}>
|
||||||
|
<StatusBar style="light" />
|
||||||
|
<LoginForm />
|
||||||
|
</View>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
const styles = StyleSheet.create({
|
||||||
|
container: {
|
||||||
|
flex: 1,
|
||||||
|
},
|
||||||
|
});
|
30
frontend/app.json
Normal file
30
frontend/app.json
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
"expo": {
|
||||||
|
"name": "deguapp",
|
||||||
|
"slug": "deguapp",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"orientation": "portrait",
|
||||||
|
"icon": "./assets/icon.png",
|
||||||
|
"userInterfaceStyle": "light",
|
||||||
|
"splash": {
|
||||||
|
"image": "./assets/splash.png",
|
||||||
|
"resizeMode": "contain",
|
||||||
|
"backgroundColor": "#ffffff"
|
||||||
|
},
|
||||||
|
"assetBundlePatterns": [
|
||||||
|
"**/*"
|
||||||
|
],
|
||||||
|
"ios": {
|
||||||
|
"supportsTablet": true
|
||||||
|
},
|
||||||
|
"android": {
|
||||||
|
"adaptiveIcon": {
|
||||||
|
"foregroundImage": "./assets/adaptive-icon.png",
|
||||||
|
"backgroundColor": "#ffffff"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"web": {
|
||||||
|
"favicon": "./assets/favicon.png"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
BIN
frontend/assets/adaptive-icon.png
Normal file
BIN
frontend/assets/adaptive-icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 17 KiB |
BIN
frontend/assets/favicon.png
Normal file
BIN
frontend/assets/favicon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.4 KiB |
BIN
frontend/assets/icon.png
Normal file
BIN
frontend/assets/icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 22 KiB |
BIN
frontend/assets/splash.png
Normal file
BIN
frontend/assets/splash.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 46 KiB |
6
frontend/babel.config.js
Normal file
6
frontend/babel.config.js
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
module.exports = function(api) {
|
||||||
|
api.cache(true);
|
||||||
|
return {
|
||||||
|
presets: ['babel-preset-expo'],
|
||||||
|
};
|
||||||
|
};
|
33
frontend/components/Button.js
Normal file
33
frontend/components/Button.js
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
import React from "react";
|
||||||
|
import { Text, StyleSheet, Pressable } from "react-native";
|
||||||
|
|
||||||
|
export default function Button(props) {
|
||||||
|
const { onPress, title = "Save", color = "black" } = props;
|
||||||
|
return (
|
||||||
|
<Pressable
|
||||||
|
style={[styles.button, { backgroundColor: color }]}
|
||||||
|
onPress={onPress}
|
||||||
|
>
|
||||||
|
<Text style={styles.text}>{title}</Text>
|
||||||
|
</Pressable>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
const styles = StyleSheet.create({
|
||||||
|
button: {
|
||||||
|
alignItems: "center",
|
||||||
|
justifyContent: "center",
|
||||||
|
paddingVertical: 12,
|
||||||
|
paddingHorizontal: 32,
|
||||||
|
borderRadius: 4,
|
||||||
|
elevation: 3,
|
||||||
|
backgroundColor: "black",
|
||||||
|
},
|
||||||
|
text: {
|
||||||
|
fontSize: 16,
|
||||||
|
lineHeight: 21,
|
||||||
|
fontWeight: "bold",
|
||||||
|
letterSpacing: 0.25,
|
||||||
|
color: "white",
|
||||||
|
},
|
||||||
|
});
|
0
frontend/components/TextInput.js
Normal file
0
frontend/components/TextInput.js
Normal file
8
frontend/components/style.js
Normal file
8
frontend/components/style.js
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
export const colors = {
|
||||||
|
gold: "#FFD700ff",
|
||||||
|
brown: "#8B4513ff",
|
||||||
|
green: "#228B22ff",
|
||||||
|
charcoal: "#2C3E50ff",
|
||||||
|
black: "#020405ff",
|
||||||
|
dark: "#010611",
|
||||||
|
};
|
14265
frontend/package-lock.json
generated
Normal file
14265
frontend/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
24
frontend/package.json
Normal file
24
frontend/package.json
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"name": "deguapp",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"main": "node_modules/expo/AppEntry.js",
|
||||||
|
"scripts": {
|
||||||
|
"start": "expo start",
|
||||||
|
"android": "expo start --android",
|
||||||
|
"ios": "expo start --ios",
|
||||||
|
"web": "expo start --web"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"expo": "~50.0.17",
|
||||||
|
"expo-status-bar": "~1.11.1",
|
||||||
|
"react": "18.2.0",
|
||||||
|
"react-native": "0.73.6",
|
||||||
|
"react-native-web": "~0.19.6",
|
||||||
|
"react-dom": "18.2.0",
|
||||||
|
"@expo/metro-runtime": "~3.1.3"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@babel/core": "^7.20.0"
|
||||||
|
},
|
||||||
|
"private": true
|
||||||
|
}
|
66
frontend/screens/Login.js
Normal file
66
frontend/screens/Login.js
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
import {
|
||||||
|
StyleSheet,
|
||||||
|
TouchableOpacity,
|
||||||
|
TextInput,
|
||||||
|
View,
|
||||||
|
Text,
|
||||||
|
} from "react-native";
|
||||||
|
import Button from "../components/Button";
|
||||||
|
import { colors } from "../components/style";
|
||||||
|
|
||||||
|
export function LoginForm() {
|
||||||
|
return (
|
||||||
|
<View style={styles.container}>
|
||||||
|
<Text style={styles.header}>Please Log In</Text>
|
||||||
|
<TextInput
|
||||||
|
style={styles.input}
|
||||||
|
placeholder="Enter your email"
|
||||||
|
autoCapitalize="none"
|
||||||
|
autoCompleteType="email"
|
||||||
|
textContentType="emailAddress"
|
||||||
|
keyboardType="email-address"
|
||||||
|
placeholderTextColor={"#aaaaaa"}
|
||||||
|
returnKeyType="next"
|
||||||
|
/>
|
||||||
|
<TextInput
|
||||||
|
style={styles.input}
|
||||||
|
secureTextEntry={true}
|
||||||
|
placeholder="Enter your password"
|
||||||
|
placeholderTextColor={"#aaaaaa"}
|
||||||
|
returnKeyType="done"
|
||||||
|
/>
|
||||||
|
<View style={styles.btnContainer}>
|
||||||
|
<Button style={styles.button} title="Sign Up" color={colors.charcoal} />
|
||||||
|
<Button style={styles.button} title="Log In" color={colors.green} />
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
const styles = StyleSheet.create({
|
||||||
|
container: {
|
||||||
|
backgroundColor: colors.dark,
|
||||||
|
flex: 1,
|
||||||
|
gap: 15,
|
||||||
|
alignItems: "center",
|
||||||
|
justifyContent: "center",
|
||||||
|
width: "100%",
|
||||||
|
},
|
||||||
|
header: {
|
||||||
|
color: "#FFF",
|
||||||
|
fontSize: 22,
|
||||||
|
},
|
||||||
|
input: {
|
||||||
|
height: "auto",
|
||||||
|
width: "60%",
|
||||||
|
borderColor: "gray",
|
||||||
|
borderWidth: 1,
|
||||||
|
borderRadius: 5,
|
||||||
|
padding: 10,
|
||||||
|
},
|
||||||
|
button: {},
|
||||||
|
btnContainer: {
|
||||||
|
flexDirection: "row",
|
||||||
|
gap: 10,
|
||||||
|
},
|
||||||
|
});
|
Loading…
Reference in New Issue
Block a user