diff --git a/GitView b/GitView
new file mode 160000
index 0000000000000000000000000000000000000000..690282746b8a50666215d24d2bf4c8cb7801b9de
--- /dev/null
+++ b/GitView
@@ -0,0 +1 @@
+Subproject commit 690282746b8a50666215d24d2bf4c8cb7801b9de
diff --git a/View.png b/View.png
new file mode 100644
index 0000000000000000000000000000000000000000..99593adae9b0be79a8328df54a83b14dfab7501f
Binary files /dev/null and b/View.png differ
diff --git a/src/App.js b/src/App.js
new file mode 100644
index 0000000000000000000000000000000000000000..fdc4270fcbb337f71d1ff06471019d504d6be49c
--- /dev/null
+++ b/src/App.js
@@ -0,0 +1,210 @@
+import * as React from 'react';
+import { Pressable, View, Text, Image, StyleSheet, ImageBackground } from 'react-native';
+import { NavigationContainer } from '@react-navigation/native';
+import { createStackNavigator } from '@react-navigation/stack';
+import Loading from './Components/Loading'
+import Profile from './Components/Profile'
+import Repo from './Components/Repo'
+import Unfound from './Components/Unfound'
+import DataGenerator from './Components/DataGenerator'
+
+const Stack = createStackNavigator();
+const styles = StyleSheet.create({
+  viewStyleVertical : { alignItems: 'center', justifyContent: 'center', margin: '10%' },
+  viewStyleHorizon : { flex: 1, flexDirection: 'row', justifyContent: 'space-between'},
+  pressableStyle : {flex: 1, flexDirection: 'row', justifyContent: 'space-between', backgroundColor:'lavender', paddingHorizontal:20, 
+  paddingVertical:10, borderColor:'thistle', borderWidth:2, borderRadius:5, marginHorizontal: 10, marginTop: 10},
+  image: { flex: 1, resizeMode: "cover", justifyContent: "center"},
+  container : {flex: 1},
+  textBox : {flex: 1, marginTop: 20, backgroundColor:'white', borderColor:'black', borderWidth:2, borderRadius:5, 
+  marginHorizontal: 10, paddingVertical:10, paddingHorizontal: 50, alignItems: 'flex-start'}
+});
+
+function generateData(route, navigation) {
+  const {name, login, avatarUrl, bio, createdAt, email, websiteUrl, repositories} = route.params;
+  const dataFile = {}
+  dataFile['navi'] = navigation
+  dataFile['nameContent'] = 'Name: \n' + name
+  dataFile['userNameContent'] = 'UserName\n: ' + login
+  dataFile['bioContent'] = 'Bio: \n' + bio
+  dataFile['createDate'] = 'Create at: \n' + createdAt
+  dataFile['emailContent'] = 'Email: \n' + email
+  dataFile['websiteLink'] = 'Website: \n' + websiteUrl
+  dataFile['repoCount'] = 'Repository count: ' + repositories['nodes'].length
+  var iconUrl
+  if (avatarUrl != null) {
+    iconUrl = { uri: avatarUrl }
+  } else {
+    iconUrl = require('C:/Coding/cs242-assignment3/GitView/assets/default.png')
+  }
+  dataFile['iconUrl'] = iconUrl
+  return dataFile
+}
+
+
+/** Home page **/
+function HomeScreen({ navigation }) {
+  return (
+    <View style={styles.container}>
+      <ImageBackground source={require('C:/Coding/cs242-assignment3/GitView/assets/ice.jpg')} style={styles.image}>
+      <View style={styles.viewStyleVertical}>
+        <Pressable  style={styles.pressableStyle} onPress={() => navigation.navigate('LoadingProfile')}>
+          <Text> Start </Text>
+        </Pressable>
+      </View>
+      </ImageBackground>
+    </View>
+  );
+}
+
+/** Profile page **/
+function ProfileScreen({ route, navigation }) {
+  var dataFile = generateData(route, navigation)
+  return (
+      <Profile data={dataFile}/>
+  );
+}
+
+/** Repo page **/
+function RepoScreen({ route, navigation }) {
+  const {nodes} = route.params
+  let cards = [];
+  for (let i = 0; i < nodes.length; i++) {
+    var repoName = 'Repo name: \n' + nodes[i]['name'] + '\n'
+    var repoDescription = 'Repo description: \n' + nodes[i]['description'] + '\n'
+    var repoOwner = 'Repo owner: \n' + nodes[i]['owner']['login'] + '\n'
+    var nativeID = 'repo#' + i
+    cards.push(
+    <View style={styles.textBox} nativeID={nativeID}>
+      <Text> {repoName} </Text>
+      <Text> {repoDescription} </Text>
+      <Text> {repoOwner} </Text>
+    </View>
+    )
+  }
+  const dataFile = {}
+  dataFile['cards'] = cards
+  dataFile['navi'] = navigation
+  return (
+    <Repo data={dataFile}/>
+  );
+}
+
+/** Unfound page **/
+function UnfoundScreen({ route, navigation }) {
+  const {errorMsg} = route.params
+  console.error(errorMsg)
+  const dataFile = {}
+  dataFile['navi'] = navigation
+  return (
+    <Unfound data={dataFile}/>
+  );
+}
+
+/** Loading Profile page **/
+function LoadProfileScreen({navigation}) {
+  const dataJson = require('C:/Coding/cs242-assignment3/env.json');
+  fetch(dataJson['endPoint'], {
+    method: 'POST',
+    headers: {
+      "Content-Type": "application/json",
+      "Authorization": dataJson['token']
+    },
+    body: JSON.stringify({
+      query: `
+        query {
+          viewer {
+            name
+            login
+            avatarUrl
+            bio
+            createdAt
+            email
+            websiteUrl
+            repositories(last:100, privacy:PUBLIC){
+              nodes{
+                name
+              }
+            }
+          }
+        }
+      `
+    })
+  })
+  .then(res => res.json())
+  .then((data)=> {
+    navigation.navigate('Profile', data['data']['viewer'])
+  })
+  .catch(error => {
+    console.error('Error:', error)
+    navigation.navigate('Unfound', {errorMsg: error})
+  })
+
+  return (
+    <Loading/>
+  );
+}
+
+/** Loading Repo page **/
+function LoadRepoScreen({navigation}) {
+  // setTimeout(function(){
+  //   navigation.navigate('Unfound'); 
+  // }, 1000)
+  const dataJson = require('C:/Coding/cs242-assignment3/env.json');
+  fetch(dataJson['endPoint'], {
+    method: 'POST',
+    headers: {
+      "Content-Type": "application/json",
+      "Authorization": dataJson['token']
+    },
+    body: JSON.stringify({
+      query: `
+        query {
+          viewer{
+            repositories(last:100, privacy:PUBLIC){
+              nodes{
+                name
+                owner{
+                  login
+                }
+                description
+              }
+            }
+          }
+        }
+      `
+    })
+  })
+  .then(res => res.json())
+  // .then((data) => console.log(data['data']['viewer']['repositories']['nodes']))
+  // .then((data) => console.log(data))
+  .then((data)=> {
+    navigation.navigate('Repo', data['data']['viewer']['repositories'])
+  })
+  .catch(error => {
+    console.error('Error:', error)
+    navigation.navigate('Unfound', {errorMsg: error})
+  })
+
+  return (
+    <Loading/>
+  );
+}
+
+/** Page loader **/
+function App() {
+  return (
+    <NavigationContainer>
+      <Stack.Navigator initialRouteName="Home">
+        <Stack.Screen name="Home" component={HomeScreen} options={{ title: 'Github User Info' }}/>
+        <Stack.Screen name="Profile" component={ProfileScreen} />
+        <Stack.Screen name="Repo" component={RepoScreen} options={{ title: 'Repositories' }}/>
+        <Stack.Screen name="LoadingProfile" component={LoadProfileScreen} />
+        <Stack.Screen name="LoadingRepo" component={LoadRepoScreen} />
+        <Stack.Screen name="Unfound" component={UnfoundScreen} options={{ title: 'Error' }}/>
+      </Stack.Navigator>
+    </NavigationContainer>
+  );
+}
+
+export default App;
diff --git a/src/Components/DataGenerator.js b/src/Components/DataGenerator.js
new file mode 100644
index 0000000000000000000000000000000000000000..744ec6363685848ca9b2305f924ed102ef6b5420
--- /dev/null
+++ b/src/Components/DataGenerator.js
@@ -0,0 +1,23 @@
+
+function generateData(route, navigation) {
+    const {name, login, avatarUrl, bio, createdAt, email, websiteUrl, repositories} = route.params;
+    const dataFile = {}
+    dataFile['navi'] = navigation
+    dataFile['nameContent'] = 'Name: \n' + name
+    dataFile['userNameContent'] = 'UserName\n: ' + login
+    dataFile['bioContent'] = 'Bio: \n' + bio
+    dataFile['createDate'] = 'Create at: \n' + createdAt
+    dataFile['emailContent'] = 'Email: \n' + email
+    dataFile['websiteLink'] = 'Website: \n' + websiteUrl
+    dataFile['repoCount'] = 'Repository count: ' + repositories['nodes'].length
+    var iconUrl
+    if (avatarUrl != null) {
+      iconUrl = { uri: avatarUrl }
+    } else {
+      iconUrl = require('C:/Coding/cs242-assignment3/GitView/assets/default.png')
+    }
+    dataFile['iconUrl'] = iconUrl
+    return dataFile
+  }
+  
+module.exports = generateData;
\ No newline at end of file
diff --git a/src/Components/Loading.js b/src/Components/Loading.js
new file mode 100644
index 0000000000000000000000000000000000000000..2e3ee0ca643c90383c19dabe92d37dfea733c5b6
--- /dev/null
+++ b/src/Components/Loading.js
@@ -0,0 +1,29 @@
+import * as React from 'react';
+import { Pressable, View, Text, Image, StyleSheet, ImageBackground } from 'react-native';
+
+const styles = StyleSheet.create({
+  viewStyleVertical : { alignItems: 'center', justifyContent: 'center', margin: '10%' },
+  viewStyleHorizon : { flex: 1, flexDirection: 'row', justifyContent: 'space-between'},
+  pressableStyle : {flex: 1, flexDirection: 'row', justifyContent: 'space-between', backgroundColor:'lavender', paddingHorizontal:20, 
+  paddingVertical:10, borderColor:'thistle', borderWidth:2, borderRadius:5, marginHorizontal: 10, marginTop: 10},
+  image: { flex: 1, resizeMode: "cover", justifyContent: "center"},
+  container : {flex: 1},
+  textBox : {flex: 1, marginTop: 20, backgroundColor:'white', borderColor:'black', borderWidth:2, borderRadius:5, 
+  marginHorizontal: 10, paddingVertical:10, paddingHorizontal: 50, alignItems: 'flex-start'}
+});
+
+const Loading = () => {
+    const pic = require('C:/Coding/cs242-assignment3/GitView/assets/loading.png')
+    return (
+        <View style={styles.container}>
+            <ImageBackground source={require('C:/Coding/cs242-assignment3/GitView/assets/ice.jpg')} style={styles.image}>
+            <View style={styles.viewStyleVertical}>
+                <Text style={{ fontSize: 30 }}>Loading......</Text>
+                <Image source={pic} style={{width: 200, height: 200}}/>
+            </View>
+            </ImageBackground>
+        </View>
+    )
+}
+
+export default Loading;
\ No newline at end of file
diff --git a/src/Components/Profile.js b/src/Components/Profile.js
new file mode 100644
index 0000000000000000000000000000000000000000..a6d95f8cb944ad07129eea719d39ba64d697e617
--- /dev/null
+++ b/src/Components/Profile.js
@@ -0,0 +1,62 @@
+import * as React from 'react';
+import { Pressable, View, Text, Image, StyleSheet, ImageBackground } from 'react-native';
+import { createStackNavigator } from '@react-navigation/stack';
+
+const Stack = createStackNavigator();
+const styles = StyleSheet.create({
+  viewStyleVertical : { alignItems: 'center', justifyContent: 'center', margin: '10%' },
+  viewStyleHorizon : { flex: 1, flexDirection: 'row', justifyContent: 'space-between'},
+  pressableStyle : {flex: 1, flexDirection: 'row', justifyContent: 'space-between', backgroundColor:'lavender', paddingHorizontal:20, 
+  paddingVertical:10, borderColor:'thistle', borderWidth:2, borderRadius:5, marginHorizontal: 10, marginTop: 10},
+  image: { flex: 1, resizeMode: "cover", justifyContent: "center"},
+  container : {flex: 1},
+  textBox : {flex: 1, marginTop: 20, backgroundColor:'white', borderColor:'black', borderWidth:2, borderRadius:5, 
+  marginHorizontal: 10, paddingVertical:10, paddingHorizontal: 50, alignItems: 'flex-start'}
+});
+
+const Profile = (props) => {
+    const file = props.data
+    const iconUrl = file['iconUrl']
+    const nameContent = file['nameContent']
+    const userNameContent = file['userNameContent']
+    const bioContent = file['bioContent']
+    const websiteLink = file['websiteLink']
+    const emailContent = file['emailContent']
+    const createDate = file['createDate']
+    const repoCount = file['repoCount']
+    const navigation = file['navi']
+    return (
+        <View style={styles.container}>
+            <ImageBackground source={require('C:/Coding/cs242-assignment3/GitView/assets/ice.jpg')} style={styles.image}> 
+            <View style={styles.viewStyleVertical}>
+                <View style={styles.viewStyleVertical}> 
+                <Image style={{width: 100, height: 100}} source={iconUrl} />
+                </View>
+                <View style={styles.viewStyleHorizon}> 
+                <Pressable style={styles.pressableStyle}> 
+                    <Text> Followers </Text>
+                </Pressable>
+                <Pressable style={styles.pressableStyle}>
+                    <Text> Followings </Text>
+                </Pressable>
+                </View>
+                <View style={styles.viewStyleVertical} > 
+                <Text style={styles.textBox}> {nameContent} </Text>
+                <Text style={styles.textBox}> {userNameContent} </Text>
+                <Text style={styles.textBox}> {bioContent} </Text>
+                <Text style={styles.textBox}> {websiteLink} </Text>
+                <Text style={styles.textBox}> {emailContent} </Text>
+                <Text style={styles.textBox}> {createDate} </Text>
+                </View>
+                <View style={styles.viewStyleVertical} > 
+                <Pressable  style={styles.pressableStyle} onPress={() => navigation.navigate('LoadingRepo')}> 
+                    <Text> {repoCount} </Text>
+                </Pressable>
+                </View>
+            </View>
+            </ImageBackground>
+        </View>
+    )
+}
+
+export default Profile;
\ No newline at end of file
diff --git a/src/Components/Repo.js b/src/Components/Repo.js
new file mode 100644
index 0000000000000000000000000000000000000000..05b44e6cdac3d6bdebb7b1103ff6901330aca894
--- /dev/null
+++ b/src/Components/Repo.js
@@ -0,0 +1,35 @@
+import * as React from 'react';
+import { Pressable, View, Text, Image, StyleSheet, ImageBackground } from 'react-native';
+import { createStackNavigator } from '@react-navigation/stack';
+
+const Stack = createStackNavigator();
+const styles = StyleSheet.create({
+  viewStyleVertical : { alignItems: 'center', justifyContent: 'center', margin: '10%' },
+  viewStyleHorizon : { flex: 1, flexDirection: 'row', justifyContent: 'space-between'},
+  pressableStyle : {flex: 1, flexDirection: 'row', justifyContent: 'space-between', backgroundColor:'lavender', paddingHorizontal:20, 
+  paddingVertical:10, borderColor:'thistle', borderWidth:2, borderRadius:5, marginHorizontal: 10, marginTop: 10},
+  image: { flex: 1, resizeMode: "cover", justifyContent: "center"},
+  container : {flex: 1},
+  textBox : {flex: 1, marginTop: 20, backgroundColor:'white', borderColor:'black', borderWidth:2, borderRadius:5, 
+  marginHorizontal: 10, paddingVertical:10, paddingHorizontal: 50, alignItems: 'flex-start'}
+});
+
+const Repo = (props) => {
+    const file = props.data
+    const cards = file['cards']
+    const navigation = file['navi']
+    return (
+        <View style={styles.container}>
+            <ImageBackground source={require('C:/Coding/cs242-assignment3/GitView/assets/ice.jpg')} style={styles.image}>
+            <View style={styles.viewStyleVertical}>
+                {cards}
+                <Pressable  style={styles.pressableStyle} onPress={() => navigation.navigate('Profile')}>
+                <Text> Go to Profile </Text>
+                </Pressable>
+            </View>
+            </ImageBackground>
+        </View>
+    )
+}
+
+export default Repo;
\ No newline at end of file
diff --git a/src/Components/Unfound.js b/src/Components/Unfound.js
new file mode 100644
index 0000000000000000000000000000000000000000..1bfc4a9715547d06d58d3e929b91d1fbaeb7b0af
--- /dev/null
+++ b/src/Components/Unfound.js
@@ -0,0 +1,35 @@
+import * as React from 'react';
+import { Pressable, View, Text, Image, StyleSheet, ImageBackground } from 'react-native';
+import { createStackNavigator } from '@react-navigation/stack';
+
+const Stack = createStackNavigator();
+const styles = StyleSheet.create({
+  viewStyleVertical : { alignItems: 'center', justifyContent: 'center', margin: '10%' },
+  viewStyleHorizon : { flex: 1, flexDirection: 'row', justifyContent: 'space-between'},
+  pressableStyle : {flex: 1, flexDirection: 'row', justifyContent: 'space-between', backgroundColor:'lavender', paddingHorizontal:20, 
+  paddingVertical:10, borderColor:'thistle', borderWidth:2, borderRadius:5, marginHorizontal: 10, marginTop: 10},
+  image: { flex: 1, resizeMode: "cover", justifyContent: "center"},
+  container : {flex: 1},
+  textBox : {flex: 1, marginTop: 20, backgroundColor:'white', borderColor:'black', borderWidth:2, borderRadius:5, 
+  marginHorizontal: 10, paddingVertical:10, paddingHorizontal: 50, alignItems: 'flex-start'}
+});
+
+const Unfound = (props) => {
+    const dataFile = props.data
+    const navigation = dataFile['navi']
+    return (
+        <View style={styles.container}>
+            <ImageBackground source={require('C:/Coding/cs242-assignment3/GitView/assets/ice.jpg')} style={styles.image}>
+            <View style={styles.viewStyleVertical}>
+                <Text style={{ fontSize: 30 }}> Error! Check log to see details </Text>
+                <Image style={{width: 200, height: 200}} source={require('C:/Coding/cs242-assignment3/GitView/assets/warn.png')} />
+                <Pressable  style={styles.pressableStyle} onPress={() => navigation.navigate('Home')}> 
+                <Text> Go back to Home Page </Text>
+                </Pressable>
+            </View>
+            </ImageBackground>
+        </View>
+    )
+}
+
+export default Unfound;
\ No newline at end of file
diff --git a/src/__mocks__/fileMock.js b/src/__mocks__/fileMock.js
new file mode 100644
index 0000000000000000000000000000000000000000..84c1da6fdcb26b510616f8dbbec6416945fd4104
--- /dev/null
+++ b/src/__mocks__/fileMock.js
@@ -0,0 +1 @@
+module.exports = 'test-file-stub';
\ No newline at end of file
diff --git a/src/__mocks__/styleMock.js b/src/__mocks__/styleMock.js
new file mode 100644
index 0000000000000000000000000000000000000000..a0995453769c8a76594b879c09c58064530c155a
--- /dev/null
+++ b/src/__mocks__/styleMock.js
@@ -0,0 +1 @@
+module.exports = {};
\ No newline at end of file
diff --git a/src/__tests__/App-test.js b/src/__tests__/App-test.js
new file mode 100644
index 0000000000000000000000000000000000000000..79c4721138f1ec19a2b1b602a773699cfb9b03c3
--- /dev/null
+++ b/src/__tests__/App-test.js
@@ -0,0 +1,65 @@
+import 'react-native';
+import React from 'react';
+import Profile from '../Components/Profile';
+import App from '../App'
+import renderer from 'react-test-renderer';
+import Loading from '../Components/Loading';
+import Repo from '../Components/Repo';
+import { createStackNavigator } from '@react-navigation/stack';
+import { NavigationContainer } from '@react-navigation/native';
+import Unfound from '../Components/Unfound';
+
+const Stack = createStackNavigator();
+
+test('renders correctly', () => {
+    const tree = renderer.create(
+      <Loading />
+    ).toJSON();
+    expect(tree).toMatchSnapshot();
+  });
+
+  test('renders correctly', ({navigation}) => {
+    const dataFile = {
+      iconUrl: "https://avatars.githubusercontent.com/u/42978932?u=b4a7beb2752bb6059cd13d12ca26d097767abf77&v=4",
+      nameContent: null,
+      userNameContent: null,
+      bioContent: null,
+      websiteLink: null,
+      emailContent: null,
+      createData: null,
+      repoCount: 0,
+      navi: navigation
+    }
+    const tree = renderer.create(
+      <Profile data={dataFile}/>
+    ).toJSON();
+    expect(tree).toMatchSnapshot();
+  });
+
+  test('renders correctly', ({navigation}) => {
+    const dataFile = {
+      iconUrl: "https://avatars.githubusercontent.com/u/42978932?u=b4a7beb2752bb6059cd13d12ca26d097767abf77&v=4",
+      nameContent: null,
+      userNameContent: null,
+      bioContent: null,
+      websiteLink: null,
+      emailContent: null,
+      createData: null,
+      repoCount: 0,
+      navi: navigation
+    }
+    const tree = renderer.create(
+      <Repo data={dataFile}/>
+    ).toJSON();
+    expect(tree).toMatchSnapshot();
+  });
+
+  test('renders correctly', ({navigation}) => {
+    const dataFile = {
+      navi: navigation
+    }
+    const tree = renderer.create(
+      <Unfound data={dataFile}/>
+    ).toJSON();
+    expect(tree).toMatchSnapshot();
+  });
\ No newline at end of file
diff --git a/src/__tests__/UnitTest.js b/src/__tests__/UnitTest.js
new file mode 100644
index 0000000000000000000000000000000000000000..2a52498cac4316899884e347f2a45ef6faa88568
--- /dev/null
+++ b/src/__tests__/UnitTest.js
@@ -0,0 +1,14 @@
+import 'react-native';
+import React from 'react';
+import Profile from '../Components/Profile';
+import App from '../App'
+import renderer from 'react-test-renderer';
+import Loading from '../Components/Loading';
+import Repo from '../Components/Repo';
+import { createStackNavigator } from '@react-navigation/stack';
+import { NavigationContainer } from '@react-navigation/native';
+import Unfound from '../Components/Unfound';
+
+const Stack = createStackNavigator();
+
+const generateData = require()
\ No newline at end of file
diff --git a/src/__tests__/__snapshots__/App-test.js.snap b/src/__tests__/__snapshots__/App-test.js.snap
new file mode 100644
index 0000000000000000000000000000000000000000..365ee0e77e7228c48f517b3cd3b2f31f19c0011c
--- /dev/null
+++ b/src/__tests__/__snapshots__/App-test.js.snap
@@ -0,0 +1,305 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`renders correctly 1`] = `
+<View
+  style={
+    Object {
+      "flex": 1,
+    }
+  }
+>
+  <View
+    accessibilityIgnoresInvertColors={true}
+    style={
+      Object {
+        "flex": 1,
+        "justifyContent": "center",
+        "resizeMode": "cover",
+      }
+    }
+  >
+    <Image
+      source="test-file-stub"
+      style={
+        Array [
+          Object {
+            "bottom": 0,
+            "left": 0,
+            "position": "absolute",
+            "right": 0,
+            "top": 0,
+          },
+          Object {
+            "height": undefined,
+            "width": undefined,
+          },
+          undefined,
+        ]
+      }
+    />
+    <View
+      style={
+        Object {
+          "alignItems": "center",
+          "justifyContent": "center",
+          "margin": "10%",
+        }
+      }
+    >
+      <View
+        style={
+          Object {
+            "alignItems": "center",
+            "justifyContent": "center",
+            "margin": "10%",
+          }
+        }
+      >
+        <Image
+          source="test-file-stub"
+          style={
+            Object {
+              "height": 100,
+              "width": 100,
+            }
+          }
+        />
+      </View>
+      <View
+        style={
+          Object {
+            "flex": 1,
+            "flexDirection": "row",
+            "justifyContent": "space-between",
+          }
+        }
+      >
+        <View
+          accessible={true}
+          focusable={true}
+          onBlur={[Function]}
+          onClick={[Function]}
+          onFocus={[Function]}
+          onResponderGrant={[Function]}
+          onResponderMove={[Function]}
+          onResponderRelease={[Function]}
+          onResponderTerminate={[Function]}
+          onResponderTerminationRequest={[Function]}
+          onStartShouldSetResponder={[Function]}
+          style={
+            Object {
+              "backgroundColor": "lavender",
+              "borderColor": "thistle",
+              "borderRadius": 5,
+              "borderWidth": 2,
+              "flex": 1,
+              "flexDirection": "row",
+              "justifyContent": "space-between",
+              "marginHorizontal": 10,
+              "marginTop": 10,
+              "paddingHorizontal": 20,
+              "paddingVertical": 10,
+            }
+          }
+        >
+          <Text>
+             Followers 
+          </Text>
+        </View>
+        <View
+          accessible={true}
+          focusable={true}
+          onBlur={[Function]}
+          onClick={[Function]}
+          onFocus={[Function]}
+          onResponderGrant={[Function]}
+          onResponderMove={[Function]}
+          onResponderRelease={[Function]}
+          onResponderTerminate={[Function]}
+          onResponderTerminationRequest={[Function]}
+          onStartShouldSetResponder={[Function]}
+          style={
+            Object {
+              "backgroundColor": "lavender",
+              "borderColor": "thistle",
+              "borderRadius": 5,
+              "borderWidth": 2,
+              "flex": 1,
+              "flexDirection": "row",
+              "justifyContent": "space-between",
+              "marginHorizontal": 10,
+              "marginTop": 10,
+              "paddingHorizontal": 20,
+              "paddingVertical": 10,
+            }
+          }
+        >
+          <Text>
+             Followings 
+          </Text>
+        </View>
+      </View>
+      <View
+        style={
+          Object {
+            "alignItems": "center",
+            "justifyContent": "center",
+            "margin": "10%",
+          }
+        }
+      >
+        <Text
+          style={
+            Object {
+              "alignItems": "flex-start",
+              "backgroundColor": "white",
+              "borderColor": "black",
+              "borderRadius": 5,
+              "borderWidth": 2,
+              "flex": 1,
+              "marginHorizontal": 10,
+              "marginTop": 20,
+              "paddingHorizontal": 50,
+              "paddingVertical": 10,
+            }
+          }
+        >
+           nameContent 
+        </Text>
+        <Text
+          style={
+            Object {
+              "alignItems": "flex-start",
+              "backgroundColor": "white",
+              "borderColor": "black",
+              "borderRadius": 5,
+              "borderWidth": 2,
+              "flex": 1,
+              "marginHorizontal": 10,
+              "marginTop": 20,
+              "paddingHorizontal": 50,
+              "paddingVertical": 10,
+            }
+          }
+        >
+           userNameContent 
+        </Text>
+        <Text
+          style={
+            Object {
+              "alignItems": "flex-start",
+              "backgroundColor": "white",
+              "borderColor": "black",
+              "borderRadius": 5,
+              "borderWidth": 2,
+              "flex": 1,
+              "marginHorizontal": 10,
+              "marginTop": 20,
+              "paddingHorizontal": 50,
+              "paddingVertical": 10,
+            }
+          }
+        >
+           bioContent 
+        </Text>
+        <Text
+          style={
+            Object {
+              "alignItems": "flex-start",
+              "backgroundColor": "white",
+              "borderColor": "black",
+              "borderRadius": 5,
+              "borderWidth": 2,
+              "flex": 1,
+              "marginHorizontal": 10,
+              "marginTop": 20,
+              "paddingHorizontal": 50,
+              "paddingVertical": 10,
+            }
+          }
+        >
+           websiteLink 
+        </Text>
+        <Text
+          style={
+            Object {
+              "alignItems": "flex-start",
+              "backgroundColor": "white",
+              "borderColor": "black",
+              "borderRadius": 5,
+              "borderWidth": 2,
+              "flex": 1,
+              "marginHorizontal": 10,
+              "marginTop": 20,
+              "paddingHorizontal": 50,
+              "paddingVertical": 10,
+            }
+          }
+        >
+           emailContent 
+        </Text>
+        <Text
+          style={
+            Object {
+              "alignItems": "flex-start",
+              "backgroundColor": "white",
+              "borderColor": "black",
+              "borderRadius": 5,
+              "borderWidth": 2,
+              "flex": 1,
+              "marginHorizontal": 10,
+              "marginTop": 20,
+              "paddingHorizontal": 50,
+              "paddingVertical": 10,
+            }
+          }
+        >
+           createDate 
+        </Text>
+      </View>
+      <View
+        style={
+          Object {
+            "alignItems": "center",
+            "justifyContent": "center",
+            "margin": "10%",
+          }
+        }
+      >
+        <View
+          accessible={true}
+          focusable={true}
+          onBlur={[Function]}
+          onClick={[Function]}
+          onFocus={[Function]}
+          onResponderGrant={[Function]}
+          onResponderMove={[Function]}
+          onResponderRelease={[Function]}
+          onResponderTerminate={[Function]}
+          onResponderTerminationRequest={[Function]}
+          onStartShouldSetResponder={[Function]}
+          style={
+            Object {
+              "backgroundColor": "lavender",
+              "borderColor": "thistle",
+              "borderRadius": 5,
+              "borderWidth": 2,
+              "flex": 1,
+              "flexDirection": "row",
+              "justifyContent": "space-between",
+              "marginHorizontal": 10,
+              "marginTop": 10,
+              "paddingHorizontal": 20,
+              "paddingVertical": 10,
+            }
+          }
+        >
+          <Text>
+             repoCount 
+          </Text>
+        </View>
+      </View>
+    </View>
+  </View>
+</View>
+`;
diff --git a/src/assets/adaptive-icon.png b/src/assets/adaptive-icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..03d6f6b6c6727954aec1d8206222769afd178d8d
Binary files /dev/null and b/src/assets/adaptive-icon.png differ
diff --git a/src/assets/default.png b/src/assets/default.png
new file mode 100644
index 0000000000000000000000000000000000000000..7284d396a4c589f887c952a760616fecfe734b5b
Binary files /dev/null and b/src/assets/default.png differ
diff --git a/src/assets/favicon.png b/src/assets/favicon.png
new file mode 100644
index 0000000000000000000000000000000000000000..e75f697b1801871ad8cd9309b05e8ffe8c6b6d01
Binary files /dev/null and b/src/assets/favicon.png differ
diff --git a/src/assets/ice.jpg b/src/assets/ice.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..ae36dd1e6687f10a20c552c269cf65e7c111c9c1
Binary files /dev/null and b/src/assets/ice.jpg differ
diff --git a/src/assets/icon.png b/src/assets/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..a0b1526fc7b78680fd8d733dbc6113e1af695487
Binary files /dev/null and b/src/assets/icon.png differ
diff --git a/src/assets/loading.png b/src/assets/loading.png
new file mode 100644
index 0000000000000000000000000000000000000000..110b65163b7a69485ccfca66ea61e5ff35a02d73
Binary files /dev/null and b/src/assets/loading.png differ
diff --git a/src/assets/splash.png b/src/assets/splash.png
new file mode 100644
index 0000000000000000000000000000000000000000..6f47774733be408640c3db372cf91117354b0479
Binary files /dev/null and b/src/assets/splash.png differ
diff --git a/src/assets/warn.png b/src/assets/warn.png
new file mode 100644
index 0000000000000000000000000000000000000000..3c13a9627d5d9db54c3d4f72ef1244e7dba01f46
Binary files /dev/null and b/src/assets/warn.png differ
diff --git a/src/package.json b/src/package.json
new file mode 100644
index 0000000000000000000000000000000000000000..87fc242d355b276e01b759058495c5cab6227626
--- /dev/null
+++ b/src/package.json
@@ -0,0 +1,42 @@
+{
+  "main": "node_modules/expo/AppEntry.js",
+  "scripts": {
+    "start": "expo start",
+    "android": "expo start --android",
+    "ios": "expo start --ios",
+    "web": "expo start --web",
+    "eject": "expo eject",
+    "test": "jest"
+  },
+  "jest": {
+    "preset": "react-native",
+    "setupFiles": [
+      "./node_modules/react-native-gesture-handler/jestSetup.js"
+    ],
+    "moduleNameMapper": {
+      "\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "<rootDir>/__mocks__/fileMock.js",
+      "\\.(css|less)$": "<rootDir>/__mocks__/styleMock.js"
+    }
+  },
+  "dependencies": {
+    "@react-native-community/masked-view": "0.1.10",
+    "@react-navigation/native": "^5.9.3",
+    "@react-navigation/stack": "^5.14.3",
+    "expo": "~40.0.0",
+    "expo-status-bar": "~1.0.3",
+    "react": "16.13.1",
+    "react-dom": "16.13.1",
+    "react-native": "https://github.com/expo/react-native/archive/sdk-40.0.1.tar.gz",
+    "react-native-gesture-handler": "~1.8.0",
+    "react-native-reanimated": "~1.13.0",
+    "react-native-safe-area-context": "3.1.9",
+    "react-native-screens": "~2.15.2",
+    "react-native-web": "~0.13.12",
+    "react-test-renderer": "^17.0.2"
+  },
+  "devDependencies": {
+    "@babel/core": "~7.9.0",
+    "jest": "^26.6.3"
+  },
+  "private": true
+}