{"version":3,"sources":["assets/pie.jpg","assets/chat.jpg","Home.js","util/DateUtil.js","MyIoT.js","Cloud.js","components/Chatbot.js","components/AccordionSection.js","components/Accordion.js","components/BuildThermometer.js","Serverless.js","AboutMe.js","components/LoaderButton.js","Contact.js","NoMatch.js","components/NavigationBar.js","components/Layout.js","components/Jumbotron.js","App.js","serviceWorker.js","index.js"],"names":["module","exports","__webpack_require__","p","Home","react_default","a","createElement","Container","fluid","Row","Col","href","Button","variant","size","Component","Date","MyIot","props","_this","Object","classCallCheck","this","possibleConstructorReturn","getPrototypeOf","call","state","isLoading","feeds","dht22feeds","console","log","JSON","stringify","setState","API","get","className","scope","renderFeedRows","map","reading","i","key","payload","temperature","moisture","dateValue","time_reported","toLocaleString","md","react","Breadcrumb","Item","active","toLocaleDateString","isAuthenticated","renderFeedTable","renderNotAuthenticated","Cloud","style","fontWeight","hre","Card","width","Img","src","pieImage","height","Body","Title","Text","chatImage","customTheme","objectSpread","AmplifyTheme","sectionHeader","backgroundColor","color","err","confirmation","alert","Tab","id","defaultActiveKey","Nav","Link","eventKey","Content","Pane","dist","title","theme","botName","welcomeMessage","onComplete","handleComplete","bind","clearOnComplete","AccordionSection","onClick","label","_this$props","isOpen","background","border","borderRadius","padding","cursor","float","fontSize","marginTop","children","Accordion","_assertThisInitialize","assertThisInitialized","allowMultipleOpen","openSections","defineProperty","forEach","child","components_AccordionSection","BuildThermometer","components_Accordion","Serverless","AboutMe","components_LoaderButton","_ref","text","loadingText","_ref$className","_ref$disabled","disabled","objectWithoutProperties","assign","concat","MyVerticallyCenteredModal","Modal","aria-labelledby","centered","Header","closeButton","React","Contact","handleChange","event","_this$setState","target","value","handleSubmit","asyncToGenerator","regenerator_default","mark","_callee","response","wrap","_context","prev","next","preventDefault","sendEmail","name","username","email","content","sent","MessageId","modalShow","t0","message","stop","_x","apply","arguments","length","emailInfo","post","body","_React$createElement","Form","onSubmit","Group","controlId","Label","Control","autoFocus","type","onChange","as","rows","block","validateForm","_this2","renderForm","Contact_MyVerticallyCenteredModal","show","onHide","NoMatch","Styles","styled","div","_templateObject","NagivationBar","signOut","Hub","listen","data","authState","authData","authError","Auth","currentAuthenticatedUser","then","user","catch","e","_this3","isVisible","forceUpdate","Navbar","expand","Brand","Toggle","arial-controls","Collapse","OAuthSignIn","withOAuth","Layout","Container_default","Jumbotron_templateObject","Jumbotron","Jumbotron_Styles","es_Jumbotron","App","userHasAuthenticated","authenticated","isAuthenticating","childProps","NavigationBar","Jumbotron_Jumbotron","Layout_Layout","react_router_dom","react_router","exact","path","component","render","routeProps","MyIoT_MyIot","Serverless_Serverless","Chatbot_Cloud","About","Boolean","window","location","hostname","match","Amplify","configure","identityPoolId","region","identityPoolRegion","userPoolId","userPoolWebClientId","oauth","domain","redirectSignIn","redirectSignOut","responseType","mandatorySignIn","endpoints","endpoint","Interactions","bots","BookTrip","alias","ReactDOM","src_App_0","document","getElementById","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.da791e7c.chunk.js","sourcesContent":["module.exports = \"data:image/jpeg;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/chat.ae104db5.jpg\";","import React, { Component,Fragment } from 'react';\r\nimport {Container, Row, Col, Card, Button } from 'react-bootstrap';\r\nexport default class Home extends Component {\r\n render() {\r\n return (\r\n \r\n \r\n \r\n

Hi welcome to my Cloud and Serverless Computing home. I have been providing training on Cloud and Serverless computing for my team recently. I myself just use the apportunity to build and launch this serverless web portal. Over the years, I have led and developed many projects at my work. All those projects have been done and done well. I got a sense of great accomplishments out of them and felt very rewarding. I always feel like I need to build something for myself. But in those days, it was not an easy undertaking because you could have all the application building skills under your belt, but you had to have your own web server, database server, etc. Since I did not run my own business, it made no sense to spend a lot on servers. Of course you could host your site somewhere on a hosting provider, but you would not have all the freedom to flex your software development power to build whatever you would like into your hosted site.\r\n Now the mature Cloud platforms and Serverless frameworks open a whole new horizon and opportunities for businesses, large or small, and for individuals as well.\r\n I got all the cloud expertise and programming skills under my belt with years of software development experience, so it's just a breeze for me to build and launch this serverless web application. I just don't know how it's going to evolve and what I am going to do with it eventually. For now I can just share the knowledge with my colleagues and whoever is interested. And also use it as home for my IoT projects. This serverless portal is still in the process of construction. I am not trying to make it sporty and fancy right now as my spare time is limited. I am documenting what core AWS services and programming skills you need to build a Serverless solution (see more details here). I will fill in more content.

\r\n
\r\n \r\n
\r\n \r\n )\r\n }\r\n}","var d = new Date(1469433907836);\r\n\r\nexport default function valueToLocalDateString(dateValue) {\r\n var d = new Date(dateValue);\r\n return d.toLocaleString();\r\n /*\r\n d.toLocaleString(); // expected output: \"7/25/2016, 1:35:07 PM\"\r\n\r\n d.toLocaleDateString(); // expected output: \"7/25/2016\"\r\n\r\n d.toDateString(); // expected output: \"Mon Jul 25 2016\"\r\n\r\n d.toTimeString(); // expected output: \"13:35:07 GMT+0530 (India Standard Time)\"\r\n\r\n d.toLocaleTimeString(); // expected output: \"1:35:07 PM\"\r\n */\r\n}\r\n\r\n","import React, { Component, Fragment} from 'react';\r\nimport {Container, Row, Col, Breadcrumb } from 'react-bootstrap';\r\nimport Amplify, { Auth, API } from 'aws-amplify';\r\nimport valueToLocalDateString from './util/DateUtil.js'\r\nexport default class MyIot extends Component{\r\n constructor(props) {\r\n super(props);\r\n this.state = { isLoading:true, feeds:[]}\r\n }\r\n async componentDidMount() {\r\n //if (!this.props.isAuthenticated) {\r\n // return;\r\n //}\r\n \r\n try {\r\n const feeds = await this.dht22feeds();\r\n console.log(JSON.stringify(feeds));\r\n this.setState({ feeds });\r\n } catch (e) {\r\n // alert(e);\r\n console.log(\"error occurred while retrieving data\");\r\n }\r\n console.log(\"myiot\");\r\n this.setState({ isLoading: false });\r\n }\r\n \r\n dht22feeds() {\r\n return API.get(\"feeds\", \"/feeds\");\r\n }\r\n\r\n renderFeedTable (feeds) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderFeedRows(feeds)}\r\n \r\n
Temperature(oF)Humidity(%)Time Reported
\r\n );\r\n\r\n }\r\n renderFeedRows(feeds) {\r\n return feeds.map( (reading, i) =>\r\n {reading.payload.temperature}{reading.payload.moisture}{valueToLocalDateString(reading.time_reported)} \r\n );\r\n }\r\n renderNotAuthenticated() {\r\n return (
You are not authenticated to view my IoT device data
);\r\n }\r\n render() {\r\n \r\n return (\r\n \r\n \r\n Home\r\n My IoT Portal\r\n \r\n \r\n \r\n

My IoT Portal

\r\n \r\n
\r\n \r\n

IoT is a big thing these days. One application category of IoT is smart home. Many homes are becoming smart with all cool smart devices connected to the internet. And you can take care of your home front even if you are on travel on the other side of the globe.\r\n Quite some IoT providers are on the market and you can just buy their smart devices and subscribe their services. But as an IT professional with all the cloud computing and programming skills under your belt, is it cool to build your own smart devices and set up your IoT portal on a Cloud Service provider such as AWS?\r\n Here is exactly what I am doing. I have just started building my own smart home IoT. I can check my home temperature and humidity right here. I will try to build more devices when I have free time. If you are a tech guy and and a little handy, try to build one and see details here.

\r\n
\r\n \r\n

Home smart thermometer reading on {(new Date()).toLocaleDateString()}

\r\n
\r\n \r\n\r\n \r\n \r\n \r\n {this.props.isAuthenticated ? this.renderFeedTable(this.state.feeds): this.renderNotAuthenticated() }\r\n\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n )\r\n }\r\n}","import React, { Fragment, Component} from 'react';\r\nimport {Container, Row, Col, Card, Button, Breadcrumb } from 'react-bootstrap';\r\nimport pieImage from './assets/pie.jpg';\r\nimport chatImage from './assets/chat.jpg';\r\nexport default class Cloud extends Component{\r\n render() {\r\n return (\r\n \r\n \r\n Home\r\n Cloud Computing\r\n \r\n \r\n \r\n

Cloud Computing

\r\n \r\n
\r\n \r\n

Cloud computing wagon is raging along relentlessly. Many businesses are trying to jump on the wagon to take advantages of it such as cost effienecy, fast-to-market, flexibility, scalibility, global accessibility. Right now the major public cloud providers are AWS, Microsoft Azure and Google Cloud as many of you know, there are four major service models in the pulic cloud platform.

\r\n

Infrastructure as a service (IaaS) The cloud provider gives you all capabilities to build your own virtual machines, block storage, load balancing, etc. This model is similar to your current on-premises data center operation model, but it is implemented on the cloud provider's platform so that you don't need to buy any physical hardware. If you need to migrate your on-premises applications without much modification, this can be a good option.\r\n Another use case is that you need to manage your own resources, say, for compliance's reason. So it is up to your use cases.\r\n If you need to run your applications or microservices at the container level instead of virtual machine level, Kubernetes is a very popular portable and extensible open-source platform for the purpose. You can deploy a Kubernetes cluster on an IaaS platform. One of the benefits of Kubernetes platform is your containerized applications and services can be portable across IaaS providers, so that you don't have to get stuck with a particular cloud provider if for some business reason you need to switch cloud provider.

\r\n

Platform as a service (PaaS) PaaS providers offer a development environment to applicatiion developers. It makes the development and deployment a lot easier. The users can focus on creating and running applications rather than constructing and maintaining the underlying infrastructure and services. An example is AWS Elastic Beanstalk service. You can easily deploy, for example, a LAMP stack web application with load balancing and autoscaling features in AWS Elastic Beanstalk service. Another example which is used at my work place is Pivotal Cloud Foundry. It makes deploying microservices very simple and straightforward. We can just push our buildpack in Java with a CF push command. However using PaaS you still have to manage the underlying infrastruction in a certain degree. Let's say you need to an AWS Beanstalk application within your own private subnet, you need to set up your own VPC and you may need your own NAT instance or use AWS Nat Gateway. In the same way, if you need to deploy your Cloud Foundry platform on AWS within your own VPC, you still have to manage the infrastructure somehow.

\r\n

Serverless Computing Serverless computing is a cloud computing code execution model in which the cloud provider fully manages virtual machines as necessary to serve requests, and requests are billed by an abstract measure of the resources required to satisfy the request, rather than per virtual machine, per hour. The users can build a serverless application by using different managed services provided by the different cloud providers. You don't own any servers. All servers are owned and managed transparently by the cloud provider. You only need to construct your application. See more details on how I build my own Serverless portal.

\r\n

Software as a service (SaaS) In SaaS model, the users use the provider's applications running on the cloud infrastructure. The users just subscribe the application with the provider paying a subscription fee or paying per use basis. Google G Suite and Github are examples of SaaS. So the user does not need to build any application and has no infrastructure to manage. Basically you don't need an IT team for building your own application.

\r\n

\r\n \r\n
\r\n \r\n

Which cloud service model should you choose? There is no one-fit-all answer. It depends on your business use case, your current on-premises infrastructure, your talent pool, and many other factors. One business may have a hybrid model, i.e. using multiple models at the same time while another business may totally go serverless, especially smaller businesses. Many businesses now use this rule of thumb: if SaaS fits the need, just buy the SaaS service; if not, examine if Serverless fits the need; if still not, look at the PaaS model or Container Platform such as Kubernetes; then last look at the IaaS model.

\r\n \r\n
\r\n
\r\n \r\n

Examples on how to use AWS managed services in a cloud application

\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n Build IoT Device\r\n \r\n I have documented all the steps and skills you need to build a smart thermometer as an IoT thing.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Chatbot\r\n \r\n This demo shows a real sample chatbot I have set up on AWS Lex service and how you can integrate a chotbot in your application.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n )\r\n }\r\n}","import React, { Fragment, Component} from 'react';\r\nimport {Container, Row, Col, Breadcrumb, Tab, Nav} from 'react-bootstrap';\r\nimport {ChatBot, AmplifyTheme} from 'aws-amplify-react';\r\n\r\nconst customTheme = {\r\n ...AmplifyTheme,\r\n sectionHeader: {\r\n ...AmplifyTheme.sectionHeader,\r\n backgroundColor: '#e0e2e5', color:'#212529', fontWeight:'bold'\r\n }\r\n};\r\n\r\nexport default class Cloud extends Component{\r\n handleComplete(err, confirmation) {\r\n if (err) {\r\n alert('Bot conversation failed')\r\n return;\r\n }\r\n \r\n //alert('Success: ' + JSON.stringify(confirmation, null, 2));\r\n return 'Trip booked. Thank you! what would you like to do next?';\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n Home\r\n Cloud Computing\r\n Chatbot\r\n \r\n \r\n \r\n \r\n

Chatbot demo

\r\n \r\n
\r\n \r\n \r\n

Chatbot is another hot topic nowdays. A chatbot is a computer program that conducts a conversation via auditory or textual method. They are powered by natural language processing technology and artificial intelligence.\r\n Various chatbot platforms and services are available on the market now, for example, AWS Lex, Google Dialogflow, IBM Watson. To make our chatbot smart and provide good customer experience, we have to leverage big data analytics, machine learning, artificial intelligence and other related technologies. However using a chatbot and integrating it in your application is not that difficult.

\r\n

Here you can see I have integrated this live chatbot into my serverless portal page as a demo. The chatbot is a live dummy chatbot I have set up in AWS Lex service. Imagine you have a smart chatbot that can connect to your systems on cloud and/or on-premises to get all the power to assist customers. It will be put on a customer-facing application, web or mobile.

\r\n\r\n \r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n

content in progress

\r\n
\r\n
\r\n \r\n

content in progress

\r\n
\r\n
\r\n \r\n

If you try to interact with the demo chatbot without getting any response, that's because I set up in such way so only authenticated users can try.

\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n )\r\n }\r\n}","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nclass AccordionSection extends Component {\r\n static propTypes = {\r\n children: PropTypes.instanceOf(Object).isRequired,\r\n isOpen: PropTypes.bool.isRequired,\r\n label: PropTypes.string.isRequired,\r\n onClick: PropTypes.func.isRequired,\r\n };\r\n\r\n onClick = () => {\r\n this.props.onClick(this.props.label);\r\n };\r\n\r\n render() {\r\n const {\r\n onClick,\r\n props: { isOpen, label },\r\n } = this;\r\n\r\n return (\r\n \r\n
\r\n {label}\r\n
\r\n {!isOpen && }\r\n {isOpen && }\r\n
\r\n
\r\n {isOpen && (\r\n \r\n {this.props.children}\r\n \r\n )}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default AccordionSection;","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport AccordionSection from './AccordionSection';\r\n\r\nclass Accordion extends Component {\r\n static propTypes = {\r\n allowMultipleOpen: PropTypes.bool,\r\n children: PropTypes.instanceOf(Object).isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n const openSections = {};\r\n\r\n this.props.children.forEach(child => {\r\n if (child.props.isOpen) {\r\n openSections[child.props.label] = true;\r\n }\r\n });\r\n\r\n this.state = { openSections };\r\n }\r\n\r\n onClick = label => {\r\n const {\r\n props: { allowMultipleOpen },\r\n state: { openSections },\r\n } = this;\r\n\r\n const isOpen = !!openSections[label];\r\n\r\n if (allowMultipleOpen) {\r\n this.setState({\r\n openSections: {\r\n ...openSections,\r\n [label]: !isOpen\r\n }\r\n });\r\n } else {\r\n this.setState({\r\n openSections: {\r\n [label]: !isOpen\r\n }\r\n });\r\n }\r\n };\r\n\r\n render() {\r\n const {\r\n onClick,\r\n props: { children },\r\n state: { openSections },\r\n } = this;\r\n\r\n return (\r\n
\r\n {children.map((child,i) => (\r\n \r\n {child.props.children}\r\n \r\n ))}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default Accordion;","import React, { Fragment, Component} from 'react';\r\nimport {Container, Row, Col, Breadcrumb } from 'react-bootstrap';\r\nimport Accordion from './Accordion';\r\n\r\nexport default class BuildThermometer extends Component{\r\n render() {\r\n return (\r\n \r\n \r\n Home\r\n Cloud Computing\r\n Build an IoT Device\r\n \r\n \r\n \r\n \r\n

Hands-on building a smart thermometer

\r\n \r\n
\r\n \r\n \r\n

Here I walk through how I build an IoT device and how to use the device with AWS IoT Core service and then bring the data to My IoT portal page

\r\n
\r\n \r\n \r\n \r\n
\r\n Content in progress\r\n
\r\n
\r\n Content in progress\r\n
\r\n
\r\n Content in progress\r\n
\r\n
\r\n Content in progress\r\n
\r\n
\r\n Content in progress\r\n
\r\n
\r\n Content in progress\r\n
\r\n
\r\n Content in progress\r\n
\r\n
\r\n Content in progress\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n )\r\n }\r\n}","import React, { Component,Fragment } from 'react';\r\nimport {Container, Row, Col, Card, Button, Breadcrumb, Tab, Nav} from 'react-bootstrap';\r\nexport default class Serverless extends Component {\r\n render() {\r\n return (\r\n \r\n \r\n Home\r\n Serverless Computing\r\n \r\n \r\n \r\n

Serverless Computing

\r\n \r\n
\r\n \r\n \r\n

Serverless Computing is a big application trend, to say the least. Public cloud platforms make it possible and its adoption is accelerating. Basically all you need is a cloud provider of your preference and some developer(s) with established cloud expertise and development skills. You don't have to manage any hardware and you don't need to worry about availability and scalability and many other aspects of running your own data center or hardware.

\r\n

I have built my own Serverless web portal hosted on AWS Cloud platform with a few weekends. My portal right now does not have a lot content, but you got the idea why Serverless Computing is so powerful.

\r\n \r\n\r\n\r\n
\r\n Here I am showcasing what the core AWS Services and skills you need to build a Serverless web application\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n

Content in progress

\r\n
\r\n
\r\n \r\n

Content in progress

\r\n
\r\n
\r\n \r\n

Content in progress

\r\n
\r\n
\r\n \r\n

Content in progress

\r\n
\r\n
\r\n \r\n

Content in progress

\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n )\r\n }\r\n}","import React, { Component,Fragment } from 'react';\r\nimport {Container, Row, Col, Card, Button, Breadcrumb } from 'react-bootstrap';\r\nexport default class AboutMe extends Component{\r\n render() {\r\n return (\r\n \r\n \r\n Home\r\n About Me\r\n \r\n \r\n \r\n

About Me

\r\n \r\n
\r\n \r\n I am a software engineer with 20 years of solid experience of building enterprise solutions and system integrations for large enterprises.\r\n I am passionate about Cloud Computing and Serverless Computing, and DevOps and Automation. Over the past several years, I have been focused on AWS Cloud platform including end-to-end automation of infrastructure and service provision, application development and configuration management, and digital transformation. I am an AWS Certified Solutions Architect Professional, AWS Certified DevOps Engineer and AWS Certified Big Data engineer, and Automation \r\n Anywhere Certified Advanced RPA professional.\r\n Also I have years of extensive experience using Microsoft .NET technologies. In addition, I have done Java application developments in different projects over the years.\r\n\r\n \r\n \r\n I obtained my Master of Computer Science and PhD degrees from North Carolina State University.\r\n I am an enthusiastic learner and always keep myself at the top-notch of the technologies I use. \r\n
\r\n
\r\n )\r\n }\r\n}","import React from \"react\";\r\nimport { Button, Glyphicon } from \"react-bootstrap\";\r\nimport \"./LoaderButton.css\";\r\n\r\nexport default ({\r\n isLoading,\r\n text,\r\n loadingText,\r\n className = \"\",\r\n disabled = false,\r\n ...props\r\n}) =>\r\n \r\n {isLoading && }\r\n {!isLoading ? text : loadingText}\r\n ;","import React, { Component,Fragment } from 'react';\r\nimport {Container, Row, Col, Card, Button, Breadcrumb, Form, Modal } from 'react-bootstrap';\r\nimport {API} from 'aws-amplify';\r\nimport LoaderButton from \"./components/LoaderButton\";\r\n\r\nclass MyVerticallyCenteredModal extends React.Component {\r\n render() {\r\n return (\r\n \r\n Your message has been sent. Thanks.\r\n \r\n );\r\n }\r\n}\r\nexport default class Contact extends Component{\r\n\r\n constructor(props) {\r\n super(props);\r\n \r\n this.state = {\r\n isLoading: null,\r\n username: \"\",\r\n email: \"\",\r\n content: \"\",\r\n modalShow: false \r\n };\r\n }\r\n\r\n validateForm() {\r\n return (\r\n this.state.username.length > 0 &&\r\n this.state.email.length > 0 &&\r\n this.state.content.length > 0 \r\n );\r\n }\r\n handleChange = event => {\r\n this.setState({\r\n [event.target.id]: event.target.value, isLoading: false\r\n\r\n });\r\n }\r\n \r\n handleSubmit = async event => {\r\n event.preventDefault();\r\n \r\n this.setState({ isLoading: true });\r\n \r\n try {\r\n\r\n let response = await this.sendEmail({\r\n name: this.state.username,\r\n email: this.state.email,\r\n content: this.state.content\r\n });\r\n if(response && response.MessageId){\r\n\r\n console.log(response);\r\n console.log(\"email submitted\");\r\n this.setState({modalShow:true})\r\n\r\n }\r\n \r\n } catch (e) {\r\n console.log(e.message);\r\n this.setState({ isLoading: false });\r\n }\r\n\r\n }\r\n \r\n sendEmail(emailInfo) {\r\n //console.log(emailInfo);\r\n return API.post(\"feeds\", \"/feeds/email\", {\r\n body: emailInfo\r\n });\r\n }\r\n\r\n renderForm() {\r\n \r\n return (\r\n
\r\n \r\n Name\r\n \r\n \r\n \r\n Email\r\n \r\n \r\n \r\n Message\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n \r\n render() {\r\n let modalClose = () => this.setState({ modalShow: false });\r\n return (\r\n \r\n \r\n Home\r\n Contact\r\n \r\n \r\n \r\n

Contact

\r\n \r\n
\r\n \r\n

If You need a technology partner for your business, or if you need a Cloud solution, Serverless solution, or you just have some comments on my serverless web portal,\r\n you can contact me using the form below.

\r\n
\r\n
\r\n \r\n \r\n { this.renderForm() }\r\n \r\n \r\n \r\n
\r\n )\r\n }\r\n}","import React, { Component,Fragment } from 'react';\r\n\r\nexport default class NoMatch extends Component{\r\n render() {\r\n return (\r\n
\r\n

Page not found

\r\n

\r\n

\r\n
\r\n )\r\n }\r\n}","import React, { Component } from 'react';\r\nimport {Nav, Navbar} from 'react-bootstrap';\r\nimport Amplify, {Auth, Hub} from 'aws-amplify';\r\nimport {withOAuth, AmplifyTheme} from 'aws-amplify-react';\r\nimport styled from 'styled-components';\r\n\r\nconst Styles = styled.div `\r\n .navbar {\r\n background-color: #444;\r\n }\r\n .navbar-brand, .navbar-nav {\r\n color:#bbb;\r\n\r\n &:hover {\r\n color: white;\r\n }\r\n }\r\n .nav-link {\r\n color:#bbb !important;\r\n\r\n &:hover {\r\n color: white !important;\r\n }\r\n }\r\n\r\n .navbar-toggler {\r\n color:#bbb !important;\r\n\r\n &:hover {\r\n color: white !important;\r\n }\r\n }\r\n`;\r\n\r\n class NagivationBar extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.signOut = this.signOut.bind(this);\r\n // let the Hub module listen on Auth events\r\n Hub.listen('auth', (data) => {\r\n switch (data.payload.event) {\r\n case 'signIn':\r\n this.setState({authState: 'signedIn'});\r\n this.setState({authData: data.payload.data});\r\n break;\r\n case 'signIn_failure':\r\n this.setState({authState: 'signIn'});\r\n this.setState({authData: null});\r\n this.setState({authError: data.payload.data});\r\n break;\r\n default:\r\n break;\r\n }\r\n });\r\n this.state = {\r\n authState: 'loading',\r\n authData: null,\r\n authError: null\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n console.log('on component mount');\r\n // check the current user when the component is loaded\r\n Auth.currentAuthenticatedUser().then(user => {\r\n console.log(user);\r\n this.setState({authState: 'signedIn'});\r\n }).catch(e => {\r\n console.log(e);\r\n this.setState({authState: 'signIn'});\r\n });\r\n }\r\n\r\n signOut() {\r\n Auth.signOut().then(() => {\r\n this.setState({authState: 'signIn'});\r\n }).catch(e => {\r\n console.log(e);\r\n });\r\n }\r\n updateModal(isVisible) {\r\n \tthis.state.isVisible = isVisible;\r\n this.forceUpdate();\r\n }\r\n render() {\r\n const { authState } = this.state;\r\n return (\r\n \r\n \r\n xmin-cloud.guru\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n}\r\n\r\nexport default withOAuth(NagivationBar);\r\n\r\n","import React from 'react';\r\nimport Container from 'react-bootstrap/Container';\r\n\r\nexport const Layout = (props) => (\r\n \r\n {props.children}\r\n \r\n)","import React from 'react';\r\nimport { Jumbotron as Jumbo, Container } from 'react-bootstrap';\r\nimport styled from 'styled-components';\r\n\r\nconst Styles =styled.div `.jumbo { padding:10px;}`;\r\n\r\nexport const Jumbotron =() => (\r\n \r\n \r\n
\r\n \r\n

Welcome

\r\n

My Cloud and Serverless Computing Portal

\r\n
\r\n
\r\n
\r\n)","import React, { Component,Fragment } from 'react';\nimport { BrowserRouter as Router, Route, Switch } from 'react-router-dom';\n\nimport Home from './Home';\nimport MyIoT from './MyIoT';\nimport Cloud from './Cloud';\nimport Chatbot from './components/Chatbot';\nimport BuildThermometer from './components/BuildThermometer';\nimport Serverless from './Serverless';\nimport About from './AboutMe';\nimport Contact from './Contact';\nimport NoMatch from './NoMatch';\nimport NavigationBar from './components/NavigationBar'\nimport {Auth} from 'aws-amplify';\nimport {Layout} from './components/Layout';\nimport {Jumbotron } from './components/Jumbotron';\nimport './App.css';\n\n\nclass App extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n isAuthenticated: false,\n isAuthenticating: true\n };\n }\n\n /*async componentDidMount() {\n try {\n if (await Auth.currentSession()) {\n this.userHasAuthenticated(true);\n }\n }\n catch(e) {\n if (e !== 'No current user') {\n alert(e);\n }\n }\n */\n\n componentDidMount() {\n console.log('on component mount');\n // check the current user when the component is loaded\n Auth.currentAuthenticatedUser().then(user => {\n console.log(user);\n this.userHasAuthenticated(true);\n }).catch(e => {\n console.log(e);\n this.userHasAuthenticated(false);\n });\n \n this.setState({ isAuthenticating: false });\n }\n\n userHasAuthenticated = authenticated => {\n this.setState({ isAuthenticated: authenticated });\n }\n\n render() {\n const childProps = {\n isAuthenticated: this.state.isAuthenticated,\n userHasAuthenticated: this.userHasAuthenticated\n };\n return (\n \n \n \n \n \n \n \n ()} />\n ()} />\n ()} />\n \n \n \n \n \n \n \n \n \n );\n }\n}\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport Amplify, {Auth, Hub} from 'aws-amplify';\nimport * as serviceWorker from './serviceWorker';\n\nconst oauth = {\n // Domain name\n domain : 'xmin.auth.us-east-1.amazoncognito.com', \n \n // Authorized scopes\n scope : ['email','openid'], \n \n // Callback URL\n redirectSignIn : 'https://xmin-cloud.guru/', \n \n // Sign out URL\n redirectSignOut : 'https://xmin-cloud.guru/',\n \n // 'code' for Authorization code grant, \n // 'token' for Implicit grant\n responseType: 'token'\n \n };\n \nAmplify.configure({\n Auth: {\n \n // REQUIRED only for Federated Authentication - Amazon Cognito Identity Pool ID\n identityPoolId: 'us-east-1:8cfb25b9-c2ca-4f49-9db3-507867222105',\n \n // REQUIRED - Amazon Cognito Region\n region: 'us-east-1',\n \n // OPTIONAL - Amazon Cognito Federated Identity Pool Region \n // Required only if it's different from Amazon Cognito Region\n identityPoolRegion: 'us-east-1',\n \n // OPTIONAL - Amazon Cognito User Pool ID\n userPoolId: 'us-east-1_jQ47i9TON',\n \n // OPTIONAL - Amazon Cognito Web Client ID (26-char alphanumeric string)\n userPoolWebClientId: '1u3470iesie0jtvf8nboc116u9',\n oauth: oauth,\n mandatorySignIn: true\n },\n API: {\n endpoints: [\n {\n name: \"feeds\",\n endpoint: \"https://sw34b5v6j5.execute-api.us-east-1.amazonaws.com/prod\",\n region: \"us-east-1\"\n },\n ]\n },\n Interactions: {\n bots: {\n \"BookTrip\": {\n \"name\": \"BookTrip\",\n \"alias\": \"$LATEST\",\n \"region\": \"us-east-1\",\n },\n }\n }\n \n });\n \nReactDOM.render(, document.getElementById('root'));\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"sourceRoot":""}