├── .gitattributes ├── LICENSE ├── README.md ├── asset-manifest.json ├── favicon.ico ├── index.html ├── logo192.png ├── logo512.png ├── manifest.json ├── precache-manifest.4fda5c3fc86818938c5c093db254a719.js ├── react-terminal.gif ├── robots.txt ├── service-worker.js └── static ├── css ├── main.bf0095ea.chunk.css └── main.bf0095ea.chunk.css.map └── js ├── 2.4ee44813.chunk.js ├── 2.4ee44813.chunk.js.map ├── main.280a35a0.chunk.js ├── main.280a35a0.chunk.js.map ├── runtime-main.e3d21111.js └── runtime-main.e3d21111.js.map /.gitattributes: -------------------------------------------------------------------------------- 1 | *.html linguist-detectable=false 2 | *.js linguist-detectable=true 3 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Shlok Somani 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## React-terminal-portfolio 2 | Minimal Portfolio template for Developers built with React. Use it to showcase your work, testimonials and other information to clients. 3 | If you like it give it a :star: 4 | ## Preview 5 | 6 | ![](react-terminal.gif) 7 | 8 | ## Code 9 | 10 | The code for this project is in the code-react-terminal branch. For deploying your react-app to GitHub pages follow this link - [Deploy-to-github-pages](https://reactgo.com/deploy-react-app-github-pages/) 11 | 12 | ## Installation 13 | 14 | - Clone/Fork the repo. 15 | - cd into the cloned repository 16 | - Run `npm install`. 17 | - Change the values in `src/components/cat.jsx` to suit your use-case. 18 | - Run `npm start` to spin the up the local dev server port http://localhost:3000 19 | 20 | ## GitHub Pages 21 | 22 | GitHub makes it easy to create personal websites. Follow this link - [GitHub Pages](https://pages.github.com/) to know how or follow the steps below. 23 | 24 | If you already have a GitHub profile (obviously) 25 | 26 | - Create a new repo with the name {username}.github.io 27 | - Clone/Fork this repo and copy the files to your newly created repo 28 | - Customize your name, links and everything else for your landing page 29 | - git push 30 | 31 | Voila! Your site should be live at https://{username}.github.io 32 | 33 | Here's is a **dummy Landing Page** - [react portfolio](https://shloksomani.github.io/react-terminal-portfolio/) 34 | 35 | ## Todo 36 | - Have the arrow functionality so that user can cycle through prev commands 37 | - Tab auto complete 38 | - Giving unique id's to list elements and removing the hard coded one 39 | - Change the theme on user commands 40 | - A card like structure for diffrent projects and education 41 | 42 | ## Licence 43 | 44 | MIT License © Shlok Somani 45 | -------------------------------------------------------------------------------- /asset-manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "files": { 3 | "main.css": "/react-terminal-portfolio/static/css/main.bf0095ea.chunk.css", 4 | "main.js": "/react-terminal-portfolio/static/js/main.280a35a0.chunk.js", 5 | "main.js.map": "/react-terminal-portfolio/static/js/main.280a35a0.chunk.js.map", 6 | "runtime-main.js": "/react-terminal-portfolio/static/js/runtime-main.e3d21111.js", 7 | "runtime-main.js.map": "/react-terminal-portfolio/static/js/runtime-main.e3d21111.js.map", 8 | "static/js/2.4ee44813.chunk.js": "/react-terminal-portfolio/static/js/2.4ee44813.chunk.js", 9 | "static/js/2.4ee44813.chunk.js.map": "/react-terminal-portfolio/static/js/2.4ee44813.chunk.js.map", 10 | "index.html": "/react-terminal-portfolio/index.html", 11 | "precache-manifest.4fda5c3fc86818938c5c093db254a719.js": "/react-terminal-portfolio/precache-manifest.4fda5c3fc86818938c5c093db254a719.js", 12 | "service-worker.js": "/react-terminal-portfolio/service-worker.js", 13 | "static/css/main.bf0095ea.chunk.css.map": "/react-terminal-portfolio/static/css/main.bf0095ea.chunk.css.map" 14 | }, 15 | "entrypoints": [ 16 | "static/js/runtime-main.e3d21111.js", 17 | "static/js/2.4ee44813.chunk.js", 18 | "static/css/main.bf0095ea.chunk.css", 19 | "static/js/main.280a35a0.chunk.js" 20 | ] 21 | } -------------------------------------------------------------------------------- /favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shloksomani/react-terminal-portfolio/857728357bbe703119a0e543f397d66ab6142481/favicon.ico -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | React App
-------------------------------------------------------------------------------- /logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shloksomani/react-terminal-portfolio/857728357bbe703119a0e543f397d66ab6142481/logo192.png -------------------------------------------------------------------------------- /logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shloksomani/react-terminal-portfolio/857728357bbe703119a0e543f397d66ab6142481/logo512.png -------------------------------------------------------------------------------- /manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "React App", 3 | "name": "Create React App Sample", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | }, 10 | { 11 | "src": "logo192.png", 12 | "type": "image/png", 13 | "sizes": "192x192" 14 | }, 15 | { 16 | "src": "logo512.png", 17 | "type": "image/png", 18 | "sizes": "512x512" 19 | } 20 | ], 21 | "start_url": ".", 22 | "display": "standalone", 23 | "theme_color": "#000000", 24 | "background_color": "#ffffff" 25 | } 26 | -------------------------------------------------------------------------------- /precache-manifest.4fda5c3fc86818938c5c093db254a719.js: -------------------------------------------------------------------------------- 1 | self.__precacheManifest = (self.__precacheManifest || []).concat([ 2 | { 3 | "revision": "2572e495e69a042d12f55626ea58399d", 4 | "url": "/react-terminal-portfolio/index.html" 5 | }, 6 | { 7 | "revision": "e4331104f69a5aae6b3b", 8 | "url": "/react-terminal-portfolio/static/css/main.bf0095ea.chunk.css" 9 | }, 10 | { 11 | "revision": "9e76de35d71e578643ac", 12 | "url": "/react-terminal-portfolio/static/js/2.4ee44813.chunk.js" 13 | }, 14 | { 15 | "revision": "e4331104f69a5aae6b3b", 16 | "url": "/react-terminal-portfolio/static/js/main.280a35a0.chunk.js" 17 | }, 18 | { 19 | "revision": "e52e33c27f8acaf35c6b", 20 | "url": "/react-terminal-portfolio/static/js/runtime-main.e3d21111.js" 21 | } 22 | ]); -------------------------------------------------------------------------------- /react-terminal.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shloksomani/react-terminal-portfolio/857728357bbe703119a0e543f397d66ab6142481/react-terminal.gif -------------------------------------------------------------------------------- /robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | -------------------------------------------------------------------------------- /service-worker.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Welcome to your Workbox-powered service worker! 3 | * 4 | * You'll need to register this file in your web app and you should 5 | * disable HTTP caching for this file too. 6 | * See https://goo.gl/nhQhGp 7 | * 8 | * The rest of the code is auto-generated. Please don't update this file 9 | * directly; instead, make changes to your Workbox build configuration 10 | * and re-run your build process. 11 | * See https://goo.gl/2aRDsh 12 | */ 13 | 14 | importScripts("https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js"); 15 | 16 | importScripts( 17 | "/react-terminal-portfolio/precache-manifest.4fda5c3fc86818938c5c093db254a719.js" 18 | ); 19 | 20 | self.addEventListener('message', (event) => { 21 | if (event.data && event.data.type === 'SKIP_WAITING') { 22 | self.skipWaiting(); 23 | } 24 | }); 25 | 26 | workbox.core.clientsClaim(); 27 | 28 | /** 29 | * The workboxSW.precacheAndRoute() method efficiently caches and responds to 30 | * requests for URLs in the manifest. 31 | * See https://goo.gl/S9QRab 32 | */ 33 | self.__precacheManifest = [].concat(self.__precacheManifest || []); 34 | workbox.precaching.precacheAndRoute(self.__precacheManifest, {}); 35 | 36 | workbox.routing.registerNavigationRoute(workbox.precaching.getCacheKeyForURL("/react-terminal-portfolio/index.html"), { 37 | 38 | blacklist: [/^\/_/,/\/[^\/?]+\.[^\/]+$/], 39 | }); 40 | -------------------------------------------------------------------------------- /static/css/main.bf0095ea.chunk.css: -------------------------------------------------------------------------------- 1 | body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#000}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}#root{color:#fff}@-webkit-keyframes cursor-blink{0%{opacity:0}50%{opacity:1}to{opacity:0}}@keyframes cursor-blink{0%{opacity:0}50%{opacity:1}to{opacity:0}}.four-oh-four{position:relative;top:0;left:0;min-height:100vh;min-width:100vw;z-index:2;background-color:#000;-webkit-transition:opacity .3s ease-out;transition:opacity .3s ease-out;background-position:50%;background-repeat:no-repeat}.four-oh-four .dJAX_internal,.here{opacity:0}.here{position:fixed;left:0;background-color:#000;width:100%}.terminal{position:relative;padding:4rem}.terminal .prompt{color:#1ff042;display:block;font-family:AndaleMono,monospace;font-weight:700;font-size:.9em;letter-spacing:.15em;white-space:pre-wrap;text-shadow:0 0 2px rgba(31,240,66,.75);line-height:1;margin-bottom:.75em}.terminal .prompt:before{content:"> ";display:inline-block}.terminal .new-output{display:inline-block}.terminal .new-output:after{display:inline-block;vertical-align:-.15em;width:.75em;height:1em;margin-left:5px;background:#1ff042;box-shadow:1px 1px 1px rgba(31,240,66,.65),-1px -1px 1px rgba(31,240,66,.65),1px -1px 1px rgba(31,240,66,.65),-1px 1px 1px rgba(31,240,66,.65);-webkit-animation:cursor-blink 1.25s steps(1) infinite;animation:cursor-blink 1.25s steps(1) infinite;content:""}.result{color:#1ff042;display:block;width:90vh;font-family:AndaleMono,monospace;font-size:.9em;letter-spacing:.15em;white-space:pre-wrap;text-shadow:0 0 2px rgba(31,240,66,.75);line-height:1;margin-bottom:.75em}a{color:#fff;text-decoration:none;-webkit-animation:cursor-blink 1.5s steps(1) infinite;animation:cursor-blink 1.5s steps(1) infinite;display:inline-block;padding:25px}a:hover{text-decoration:underline}img{padding:10px;vertical-align:middle} 2 | /*# sourceMappingURL=main.bf0095ea.chunk.css.map */ -------------------------------------------------------------------------------- /static/css/main.bf0095ea.chunk.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["index.css"],"names":[],"mappings":"AAAA,KACC,QAAS,CACT,mIAEW,CACX,kCAAmC,CACnC,iCAAkC,CAClC,eACD,CAEA,KACC,uEAED,CAEA,MACC,UACD,CAEA,gCACC,GACC,SACD,CACA,IACC,SACD,CACA,GACC,SACD,CACD,CAYA,wBACC,GACC,SACD,CACA,IACC,SACD,CACA,GACC,SACD,CACD,CAEA,cACC,iBAAkB,CAClB,KAAM,CACN,MAAO,CACP,gBAAiB,CACjB,eAAgB,CAChB,SAAU,CACV,qBAAuB,CACvB,uCAAkC,CAAlC,+BAAkC,CAClC,uBAAkC,CAClC,2BACD,CAIA,mCAFC,SAUD,CARA,MACC,cAAe,CAEf,MAAO,CAEP,qBAAuB,CACvB,UAED,CAEA,UACC,iBAAkB,CAClB,YACD,CACA,kBACC,aAAc,CACd,aAAc,CACd,gCAAoC,CACpC,eAAiB,CACjB,cAAgB,CAChB,oBAAsB,CACtB,oBAAqB,CACrB,uCAA4C,CAC5C,aAAc,CACd,mBACD,CACA,yBACC,YAAa,CACb,oBACD,CACA,sBACC,oBACD,CACA,4BACC,oBAAqB,CACrB,qBAAuB,CACvB,WAAa,CACb,UAAW,CACX,eAAgB,CAChB,kBAAmB,CACnB,8IAEqC,CACrC,sDAAuD,CAEvD,8CAA+C,CAC/C,UACD,CAEA,QACC,aAAc,CACd,aAAc,CACd,UAAW,CACX,gCAAoC,CAEpC,cAAgB,CAChB,oBAAsB,CACtB,oBAAqB,CACrB,uCAA4C,CAC5C,aAAc,CACd,mBACD,CAEA,EACC,UAAY,CACZ,oBAAqB,CACrB,qDAAsD,CAEtD,6CAA8C,CAC9C,oBAAqB,CACrB,YACD,CAEA,QACC,yBACD,CAEA,IACC,YAAa,CAEb,qBACD","file":"main.bf0095ea.chunk.css","sourcesContent":["body {\n\tmargin: 0;\n\tfont-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Roboto\", \"Oxygen\",\n\t\t\"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\",\n\t\tsans-serif;\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n\tbackground: black;\n}\n\ncode {\n\tfont-family: source-code-pro, Menlo, Monaco, Consolas, \"Courier New\",\n\t\tmonospace;\n}\n\n#root {\n\tcolor: white;\n}\n\n@-webkit-keyframes cursor-blink {\n\t0% {\n\t\topacity: 0;\n\t}\n\t50% {\n\t\topacity: 1;\n\t}\n\t100% {\n\t\topacity: 0;\n\t}\n}\n@-moz-keyframes cursor-blink {\n\t0% {\n\t\topacity: 0;\n\t}\n\t50% {\n\t\topacity: 1;\n\t}\n\t100% {\n\t\topacity: 0;\n\t}\n}\n@keyframes cursor-blink {\n\t0% {\n\t\topacity: 0;\n\t}\n\t50% {\n\t\topacity: 1;\n\t}\n\t100% {\n\t\topacity: 0;\n\t}\n}\n\n.four-oh-four {\n\tposition: relative;\n\ttop: 0;\n\tleft: 0;\n\tmin-height: 100vh;\n\tmin-width: 100vw;\n\tz-index: 2;\n\tbackground-color: black;\n\ttransition: opacity 300ms ease-out;\n\tbackground-position: center center;\n\tbackground-repeat: no-repeat;\n}\n.four-oh-four .dJAX_internal {\n\topacity: 0;\n}\n.here {\n\tposition: fixed;\n\t/* top: 0; */\n\tleft: 0;\n\topacity: 0;\n\tbackground-color: black;\n\twidth: 100%;\n\t/* color: #1ff042; */\n}\n\n.terminal {\n\tposition: relative;\n\tpadding: 4rem;\n}\n.terminal .prompt {\n\tcolor: #1ff042;\n\tdisplay: block;\n\tfont-family: \"AndaleMono\", monospace;\n\tfont-weight: bold;\n\tfont-size: 0.9em;\n\tletter-spacing: 0.15em;\n\twhite-space: pre-wrap;\n\ttext-shadow: 0 0 2px rgba(31, 240, 66, 0.75);\n\tline-height: 1;\n\tmargin-bottom: 0.75em;\n}\n.terminal .prompt:before {\n\tcontent: \"> \";\n\tdisplay: inline-block;\n}\n.terminal .new-output {\n\tdisplay: inline-block;\n}\n.terminal .new-output:after {\n\tdisplay: inline-block;\n\tvertical-align: -0.15em;\n\twidth: 0.75em;\n\theight: 1em;\n\tmargin-left: 5px;\n\tbackground: #1ff042;\n\tbox-shadow: 1px 1px 1px rgba(31, 240, 66, 0.65),\n\t\t-1px -1px 1px rgba(31, 240, 66, 0.65), 1px -1px 1px rgba(31, 240, 66, 0.65),\n\t\t-1px 1px 1px rgba(31, 240, 66, 0.65);\n\t-webkit-animation: cursor-blink 1.25s steps(1) infinite;\n\t-moz-animation: cursor-blink 1.25s steps(1) infinite;\n\tanimation: cursor-blink 1.25s steps(1) infinite;\n\tcontent: \"\";\n}\n\n.result {\n\tcolor: #1ff042;\n\tdisplay: block;\n\twidth: 90vh;\n\tfont-family: \"AndaleMono\", monospace;\n\t/* font-weight: bold; */\n\tfont-size: 0.9em;\n\tletter-spacing: 0.15em;\n\twhite-space: pre-wrap;\n\ttext-shadow: 0 0 2px rgba(31, 240, 66, 0.75);\n\tline-height: 1;\n\tmargin-bottom: 0.75em;\n}\n\na {\n\tcolor: white;\n\ttext-decoration: none;\n\t-webkit-animation: cursor-blink 1.5s steps(1) infinite;\n\t-moz-animation: cursor-blink 1.5s steps(1) infinite;\n\tanimation: cursor-blink 1.5s steps(1) infinite;\n\tdisplay: inline-block;\n\tpadding: 25px;\n}\n\na:hover {\n\ttext-decoration: underline;\n}\n\nimg {\n\tpadding: 10px;\n\t/* margin-top: 10px; */\n\tvertical-align: middle;\n}\n"]} -------------------------------------------------------------------------------- /static/js/2.4ee44813.chunk.js: -------------------------------------------------------------------------------- 1 | (this["webpackJsonpreact-terminal-portfolio"]=this["webpackJsonpreact-terminal-portfolio"]||[]).push([[2],[function(e,t,n){"use strict";e.exports=n(12)},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}n.d(t,"a",(function(){return r}))},function(e,t,n){"use strict";function r(e,t){for(var n=0;nz.length&&z.push(e)}function R(e,t,n){return null==e?0:function e(t,n,r,l){var o=typeof t;"undefined"!==o&&"boolean"!==o||(t=null);var u=!1;if(null===t)u=!0;else switch(o){case"string":case"number":u=!0;break;case"object":switch(t.$$typeof){case a:case i:u=!0}}if(u)return r(l,t,""===n?"."+F(t,0):n),1;if(u=0,n=""===n?".":n+":",Array.isArray(t))for(var c=0;c