├── web-build ├── .gitignore ├── favicon.ico ├── favicon-16.png ├── favicon-32.png ├── fonts │ ├── Entypo.ttf │ ├── AntDesign.ttf │ ├── Feather.ttf │ ├── Fontisto.ttf │ ├── Ionicons.ttf │ ├── FontAwesome.ttf │ ├── Foundation.ttf │ ├── MaterialIcons.ttf │ ├── SimpleLineIcons.ttf │ ├── FontAwesome5_Brands.ttf │ ├── FontAwesome5_Solid.ttf │ └── MaterialCommunityIcons.ttf ├── static │ ├── media │ │ └── logo.f1c5195b.png │ └── js │ │ ├── runtime~app.2e9f1821.js │ │ ├── 2.505c84bf.chunk.js.LICENSE.txt │ │ ├── runtime~app.2e9f1821.js.map │ │ ├── app.cc664779.chunk.js │ │ └── app.cc664779.chunk.js.map ├── pwa │ ├── chrome-icon │ │ ├── chrome-icon-144.png │ │ ├── chrome-icon-192.png │ │ └── chrome-icon-512.png │ ├── apple-touch-icon │ │ └── apple-touch-icon-180.png │ └── apple-touch-startup-image │ │ ├── apple-touch-startup-image-1125x2436.png │ │ ├── apple-touch-startup-image-1242x2208.png │ │ ├── apple-touch-startup-image-1242x2688.png │ │ ├── apple-touch-startup-image-1536x2048.png │ │ ├── apple-touch-startup-image-1668x2224.png │ │ ├── apple-touch-startup-image-1668x2388.png │ │ ├── apple-touch-startup-image-2048x2732.png │ │ ├── apple-touch-startup-image-640x1136.png │ │ ├── apple-touch-startup-image-750x1334.png │ │ └── apple-touch-startup-image-828x1792.png ├── serve.json ├── manifest.json ├── asset-manifest.json └── index.html ├── assets ├── icon.png ├── logo.png ├── favicon.png ├── splash.png └── adaptive-icon.png ├── .expo-shared └── assets.json ├── .gitignore ├── tsconfig.json ├── reducers ├── darkModeReducer.tsx ├── searchOptionReducer.tsx ├── rootReducer.tsx └── searchQueryReducer.tsx ├── babel.config.js ├── components ├── Logo.tsx ├── SearchContainer.tsx ├── Main.tsx ├── Footer.tsx ├── SearchBar.tsx ├── RadioButtonContainer.tsx ├── Header.tsx └── SearchResults.tsx ├── app.json ├── package.json ├── App.tsx └── README.md /web-build/.gitignore: -------------------------------------------------------------------------------- 1 | .vercel 2 | -------------------------------------------------------------------------------- /assets/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yonureker/gitsearch/HEAD/assets/icon.png -------------------------------------------------------------------------------- /assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yonureker/gitsearch/HEAD/assets/logo.png -------------------------------------------------------------------------------- /assets/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yonureker/gitsearch/HEAD/assets/favicon.png -------------------------------------------------------------------------------- /assets/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yonureker/gitsearch/HEAD/assets/splash.png -------------------------------------------------------------------------------- /web-build/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yonureker/gitsearch/HEAD/web-build/favicon.ico -------------------------------------------------------------------------------- /assets/adaptive-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yonureker/gitsearch/HEAD/assets/adaptive-icon.png -------------------------------------------------------------------------------- /web-build/favicon-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yonureker/gitsearch/HEAD/web-build/favicon-16.png -------------------------------------------------------------------------------- /web-build/favicon-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yonureker/gitsearch/HEAD/web-build/favicon-32.png -------------------------------------------------------------------------------- /web-build/fonts/Entypo.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yonureker/gitsearch/HEAD/web-build/fonts/Entypo.ttf -------------------------------------------------------------------------------- /web-build/fonts/AntDesign.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yonureker/gitsearch/HEAD/web-build/fonts/AntDesign.ttf -------------------------------------------------------------------------------- /web-build/fonts/Feather.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yonureker/gitsearch/HEAD/web-build/fonts/Feather.ttf -------------------------------------------------------------------------------- /web-build/fonts/Fontisto.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yonureker/gitsearch/HEAD/web-build/fonts/Fontisto.ttf -------------------------------------------------------------------------------- /web-build/fonts/Ionicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yonureker/gitsearch/HEAD/web-build/fonts/Ionicons.ttf -------------------------------------------------------------------------------- /web-build/fonts/FontAwesome.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yonureker/gitsearch/HEAD/web-build/fonts/FontAwesome.ttf -------------------------------------------------------------------------------- /web-build/fonts/Foundation.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yonureker/gitsearch/HEAD/web-build/fonts/Foundation.ttf -------------------------------------------------------------------------------- /web-build/fonts/MaterialIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yonureker/gitsearch/HEAD/web-build/fonts/MaterialIcons.ttf -------------------------------------------------------------------------------- /web-build/fonts/SimpleLineIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yonureker/gitsearch/HEAD/web-build/fonts/SimpleLineIcons.ttf -------------------------------------------------------------------------------- /web-build/fonts/FontAwesome5_Brands.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yonureker/gitsearch/HEAD/web-build/fonts/FontAwesome5_Brands.ttf -------------------------------------------------------------------------------- /web-build/fonts/FontAwesome5_Solid.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yonureker/gitsearch/HEAD/web-build/fonts/FontAwesome5_Solid.ttf -------------------------------------------------------------------------------- /web-build/static/media/logo.f1c5195b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yonureker/gitsearch/HEAD/web-build/static/media/logo.f1c5195b.png -------------------------------------------------------------------------------- /web-build/fonts/MaterialCommunityIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yonureker/gitsearch/HEAD/web-build/fonts/MaterialCommunityIcons.ttf -------------------------------------------------------------------------------- /web-build/pwa/chrome-icon/chrome-icon-144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yonureker/gitsearch/HEAD/web-build/pwa/chrome-icon/chrome-icon-144.png -------------------------------------------------------------------------------- /web-build/pwa/chrome-icon/chrome-icon-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yonureker/gitsearch/HEAD/web-build/pwa/chrome-icon/chrome-icon-192.png -------------------------------------------------------------------------------- /web-build/pwa/chrome-icon/chrome-icon-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yonureker/gitsearch/HEAD/web-build/pwa/chrome-icon/chrome-icon-512.png -------------------------------------------------------------------------------- /web-build/pwa/apple-touch-icon/apple-touch-icon-180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yonureker/gitsearch/HEAD/web-build/pwa/apple-touch-icon/apple-touch-icon-180.png -------------------------------------------------------------------------------- /.expo-shared/assets.json: -------------------------------------------------------------------------------- 1 | { 2 | "12bb71342c6255bbf50437ec8f4441c083f47cdb74bd89160c15e4f43e52a1cb": true, 3 | "40b842e832070c58deac6aa9e08fa459302ee3f9da492c7e77d93d2fbf4a56fd": true 4 | } 5 | -------------------------------------------------------------------------------- /web-build/pwa/apple-touch-startup-image/apple-touch-startup-image-1125x2436.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yonureker/gitsearch/HEAD/web-build/pwa/apple-touch-startup-image/apple-touch-startup-image-1125x2436.png -------------------------------------------------------------------------------- /web-build/pwa/apple-touch-startup-image/apple-touch-startup-image-1242x2208.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yonureker/gitsearch/HEAD/web-build/pwa/apple-touch-startup-image/apple-touch-startup-image-1242x2208.png -------------------------------------------------------------------------------- /web-build/pwa/apple-touch-startup-image/apple-touch-startup-image-1242x2688.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yonureker/gitsearch/HEAD/web-build/pwa/apple-touch-startup-image/apple-touch-startup-image-1242x2688.png -------------------------------------------------------------------------------- /web-build/pwa/apple-touch-startup-image/apple-touch-startup-image-1536x2048.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yonureker/gitsearch/HEAD/web-build/pwa/apple-touch-startup-image/apple-touch-startup-image-1536x2048.png -------------------------------------------------------------------------------- /web-build/pwa/apple-touch-startup-image/apple-touch-startup-image-1668x2224.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yonureker/gitsearch/HEAD/web-build/pwa/apple-touch-startup-image/apple-touch-startup-image-1668x2224.png -------------------------------------------------------------------------------- /web-build/pwa/apple-touch-startup-image/apple-touch-startup-image-1668x2388.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yonureker/gitsearch/HEAD/web-build/pwa/apple-touch-startup-image/apple-touch-startup-image-1668x2388.png -------------------------------------------------------------------------------- /web-build/pwa/apple-touch-startup-image/apple-touch-startup-image-2048x2732.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yonureker/gitsearch/HEAD/web-build/pwa/apple-touch-startup-image/apple-touch-startup-image-2048x2732.png -------------------------------------------------------------------------------- /web-build/pwa/apple-touch-startup-image/apple-touch-startup-image-640x1136.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yonureker/gitsearch/HEAD/web-build/pwa/apple-touch-startup-image/apple-touch-startup-image-640x1136.png -------------------------------------------------------------------------------- /web-build/pwa/apple-touch-startup-image/apple-touch-startup-image-750x1334.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yonureker/gitsearch/HEAD/web-build/pwa/apple-touch-startup-image/apple-touch-startup-image-750x1334.png -------------------------------------------------------------------------------- /web-build/pwa/apple-touch-startup-image/apple-touch-startup-image-828x1792.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yonureker/gitsearch/HEAD/web-build/pwa/apple-touch-startup-image/apple-touch-startup-image-828x1792.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/**/* 2 | .expo/* 3 | npm-debug.* 4 | *.jks 5 | *.p8 6 | *.p12 7 | *.key 8 | *.mobileprovision 9 | *.orig.* 10 | 11 | # macOS 12 | .DS_Store 13 | 14 | # env 15 | .env 16 | 17 | .vercel 18 | .static 19 | 20 | -------------------------------------------------------------------------------- /web-build/serve.json: -------------------------------------------------------------------------------- 1 | { 2 | "headers": [ 3 | { 4 | "source": "static/**/*.js", 5 | "headers": [ 6 | { 7 | "key": "Cache-Control", 8 | "value": "public, max-age=31536000, immutable" 9 | } 10 | ] 11 | } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowSyntheticDefaultImports": true, 4 | "jsx": "react-native", 5 | "lib": ["dom", "esnext"], 6 | "moduleResolution": "node", 7 | "noEmit": true, 8 | "skipLibCheck": true, 9 | "resolveJsonModule": true, 10 | "strict": true 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /reducers/darkModeReducer.tsx: -------------------------------------------------------------------------------- 1 | const initialState = { 2 | theme: false 3 | } 4 | 5 | const darkModeReducer = (state = initialState, action) => { 6 | switch (action.type) { 7 | case "TOGGLE_THEME": 8 | return {...state, theme: !state.theme} 9 | break; 10 | default: 11 | return state; 12 | } 13 | } 14 | 15 | export default darkModeReducer; -------------------------------------------------------------------------------- /reducers/searchOptionReducer.tsx: -------------------------------------------------------------------------------- 1 | const initialState = {value: 'repositories'} 2 | 3 | const searchOptionReducer = (state = initialState, action) => { 4 | switch(action.type) { 5 | case "TOGGLE_OPTION": 6 | return {...state, value: action.payload}; 7 | break; 8 | default: 9 | return state; 10 | } 11 | } 12 | 13 | export default searchOptionReducer; -------------------------------------------------------------------------------- /reducers/rootReducer.tsx: -------------------------------------------------------------------------------- 1 | import { combineReducers } from 'redux'; 2 | import searchOptionReducer from './searchOptionReducer'; 3 | import searchQueryReducer from './searchQueryReducer'; 4 | import darkModeReducer from './darkModeReducer' 5 | 6 | const rootReducer = combineReducers({ 7 | query: searchQueryReducer, 8 | searchOption: searchOptionReducer, 9 | darkMode: darkModeReducer 10 | }); 11 | 12 | export default rootReducer; -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function (api) { 2 | api.cache(true); 3 | return { 4 | presets: ["babel-preset-expo"], 5 | env: { 6 | production: { 7 | plugins: [ 8 | "react-native-paper/babel", 9 | [ 10 | "module:react-native-dotenv", 11 | { 12 | moduleName: "react-native-dotenv" 13 | }] 14 | ] 15 | } 16 | } 17 | }; 18 | }; 19 | -------------------------------------------------------------------------------- /reducers/searchQueryReducer.tsx: -------------------------------------------------------------------------------- 1 | const initialState = {text: ''} 2 | 3 | const searchQueryReducer = (state = initialState, action) => { 4 | switch(action.type) { 5 | case "UPDATE_QUERY": 6 | return {...state, text: action.payload}; 7 | break; 8 | case "RESET_QUERY": 9 | return {...state, text: ''}; 10 | break; 11 | default: 12 | return state; 13 | } 14 | } 15 | 16 | export default searchQueryReducer; -------------------------------------------------------------------------------- /components/Logo.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { View, Image, StyleSheet } from 'react-native' 3 | 4 | export default function Logo() { 5 | return ( 6 | 7 | 8 | 9 | ) 10 | } 11 | 12 | const styles = StyleSheet.create({ 13 | container: { 14 | alignItems: "center", 15 | justifyContent: "center", 16 | }, 17 | image: { 18 | aspectRatio: 5.5, 19 | resizeMode: 'contain', 20 | width: 276, 21 | height: 50 22 | } 23 | }) 24 | 25 | -------------------------------------------------------------------------------- /web-build/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "background_color": "#ffffff", 3 | "display": "standalone", 4 | "lang": "en", 5 | "name": "gitsearch", 6 | "short_name": "gitsearch", 7 | "start_url": "/?utm_source=web_app_manifest", 8 | "orientation": "portrait", 9 | "icons": [ 10 | { 11 | "src": "/pwa/chrome-icon/chrome-icon-144.png", 12 | "sizes": "144x144", 13 | "type": "image/png" 14 | }, 15 | { 16 | "src": "/pwa/chrome-icon/chrome-icon-192.png", 17 | "sizes": "192x192", 18 | "type": "image/png" 19 | }, 20 | { 21 | "src": "/pwa/chrome-icon/chrome-icon-512.png", 22 | "sizes": "512x512", 23 | "type": "image/png" 24 | } 25 | ] 26 | } -------------------------------------------------------------------------------- /components/SearchContainer.tsx: -------------------------------------------------------------------------------- 1 | import React, {useState} from 'react' 2 | import { StyleSheet, Text, View } from 'react-native' 3 | import SearchBar from './SearchBar' 4 | import RadioButtonContainer from './RadioButtonContainer' 5 | import SearchResults from './SearchResults'; 6 | 7 | export default function SearchContainer() { 8 | 9 | 10 | return ( 11 | 12 | 13 | 14 | 15 | 16 | ) 17 | } 18 | 19 | const styles = StyleSheet.create({ 20 | container: { 21 | height: 150, 22 | width: '100%', 23 | maxWidth: 600, 24 | padding: 10, 25 | marginBottom: 150 26 | } 27 | }) 28 | -------------------------------------------------------------------------------- /app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "name": "gitsearch", 4 | "slug": "gitsearch", 5 | "version": "1.0.0", 6 | "orientation": "portrait", 7 | "icon": "./assets/icon.png", 8 | "splash": { 9 | "image": "./assets/splash.png", 10 | "resizeMode": "contain", 11 | "backgroundColor": "#ffffff" 12 | }, 13 | "updates": { 14 | "fallbackToCacheTimeout": 0 15 | }, 16 | "assetBundlePatterns": [ 17 | "**/*" 18 | ], 19 | "ios": { 20 | "supportsTablet": true 21 | }, 22 | "android": { 23 | "adaptiveIcon": { 24 | "foregroundImage": "./assets/adaptive-icon.png", 25 | "backgroundColor": "#FFFFFF" 26 | } 27 | }, 28 | "web": { 29 | "favicon": "./assets/favicon.png" 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /components/Main.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { Platform, SafeAreaView, StyleSheet, Text, View } from "react-native"; 3 | import { StatusBar } from "expo-status-bar"; 4 | import { useSelector } from "react-redux"; 5 | 6 | import Header from "../components/Header"; 7 | import Logo from "../components/Logo"; 8 | import SearchContainer from "../components/SearchContainer"; 9 | import Footer from "../components/Footer"; 10 | 11 | export default function Main() { 12 | const darkMode = useSelector(state => state.darkMode.theme) 13 | const containerStyle = darkMode ? styles.darkModeContainer : null 14 | 15 | return ( 16 | 17 |
18 | 19 | 20 | {Platform.OS === "web" &&