{"version":3,"sources":["webpack:///./src/pages/projects.js","webpack:///./.cache/public-page-renderer.js","webpack:///./.cache/public-page-renderer-prod.js","webpack:///./.cache/gatsby-browser-entry.js","webpack:///./src/components/layout.js"],"names":["__webpack_require__","r","__webpack_exports__","react__WEBPACK_IMPORTED_MODULE_0__","react__WEBPACK_IMPORTED_MODULE_0___default","n","_components_layout__WEBPACK_IMPORTED_MODULE_1__","a","createElement","href","m","module","exports","require","default","ProdPageRenderer","_ref","location","pageResources","loader","getResourcesForPathnameSync","pathname","React","InternalPageRenderer","Object","assign","json","propTypes","PropTypes","shape","string","isRequired","createContext","object","func","ListLink","props","react_default","style","display","marginRight","gatsby_link_default","to","children","margin","maxWidth","padding","marginBottom","textShadow","backgroundImage","listStyle","float","layout_ListLink"],"mappings":"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","file":"component---src-pages-projects-js-1de46ddc86fdb4b1245b.js","sourcesContent":["import React from \"react\"\nimport Layout from \"../components/layout\"\n\n\nexport default () => (\n \n\n

The100.io Mobile App

\n

\n Senior Software Engineer, Mobile | React Native | iOS | Android\n
\n View in iOS App Store | View in Google Play Store | View on Github\n

\n\n

Primary developer and responsible for all aspects of building, maintaining, and deploying app across both major App Stores. 4.7 star rating from 250+ reviews.

\n

The100.io mobile app lets video game players find and group up with likeminded players. They can communicate using realtime chat and private messages with push and email notifications, schedule games and automatically notify their group, and browse a customized social feed to keep up with their group's activity. Project is open source and viewable on Github.

\n\n

The100.io Web App

\n

\n \n Senior Software Engineer, Full Stack | Ruby on Rails | React | S3 | Heroku | Firebase | Stripe\n
\n View Website | View API\n
\n

\n

Primary developer and responsible for building and maintaining front end, back end, and API powering mobile app, along with managing volunteer developers and content creators.

\n

The100.io lets video game players find and group up with likeminded players. The site is a fully built out social network that handles over 30,000 Monthly Active Users in over 3,000 groups generating 250,000+ notifications per month, with past spikes of traffic as high as 500 concurrent users.

Features include automatic matchmaking into a group based off a user's criteria, realtime chat, in-browser and email notifications, private messaging, friending/ unfriending/ blocking other users, creating, scheduling, and searching upcoming gaming sessions, creating groups, and a custom built Patreon-style supporter program handling payments through Stripe.

\n

LimbSnap Mobile App

\n

\n \n Senior Software Engineer, Mobile | React Native | iOS | Android | Stripe | S3\n
\n View in iOS App Store | View in Google Play Store | View Website
\n

\n

Primary mobile developer and responsible for all aspects of building, maintaining, and deploying app across both major App Stores. Currently has perfect 5 star rating.

\n

Limbsnap lets Arborists take a picture of trees that need work and generate and mail a marketing postcard on the fly. It automatically grabs the closest addresses, generates a customized sales message, formats the postcard, and posts the data to a postcard printing company. Users can view and search sent postcards, check printing status, and make purchases directly through the app using stripe.

\n\n

Discord Chatbot

\n

\n \n Node.js | Discord API | Heroku\n
\n View on Github
\n

\n

Built an open source Discord Chatbot that connects to The100.io. Users can view and join group gaming sessions and create gaming sessions directly from Discord chat. Currently used by 750+ Discord servers.

\n\n

Node.js Twitter Bot

\n

\n \n Node.js | Twitter API | Heroku\n
\n Private Repository
\n

\n

Built a Twitter Bot in Node.js. It automatically retweets popular tweets from specified accounts, favorites tweets, and follows users who fit basic criteria. Currently generating 5-7 new followers per day.

\n\n

Mobile App With Image Recognition

\n

\n \n React Native | Google Cloud Vision API | Firebase\n
\n View Demo | View Tutorial | View on Github
\n

\n

Built a simple demo app using Google's Cloud Vision API. You can take a picture, and it will return labels of objects in the image such as \"cat\", along with things like detecting faces and even a person's emotional state based off their face. Images are saved to firebase, then posted to the Cloud Vision API which does the processing.

\n\n
\n)","const preferDefault = m => (m && m.default) || m\n\nif (process.env.BUILD_STAGE === `develop`) {\n module.exports = preferDefault(require(`./public-page-renderer-dev`))\n} else if (process.env.BUILD_STAGE === `build-javascript`) {\n module.exports = preferDefault(require(`./public-page-renderer-prod`))\n} else {\n module.exports = () => null\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nimport InternalPageRenderer from \"./page-renderer\"\nimport loader from \"./loader\"\n\nconst ProdPageRenderer = ({ location }) => {\n const pageResources = loader.getResourcesForPathnameSync(location.pathname)\n return React.createElement(InternalPageRenderer, {\n location,\n pageResources,\n ...pageResources.json,\n })\n}\n\nProdPageRenderer.propTypes = {\n location: PropTypes.shape({\n pathname: PropTypes.string.isRequired,\n }).isRequired,\n}\n\nexport default ProdPageRenderer\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport Link, {\n withPrefix,\n navigate,\n push,\n replace,\n navigateTo,\n parsePath,\n} from \"gatsby-link\"\nimport PageRenderer from \"./public-page-renderer\"\n\nconst StaticQueryContext = React.createContext({})\n\nconst StaticQuery = props => (\n \n {staticQueryData => {\n if (\n props.data ||\n (staticQueryData[props.query] && staticQueryData[props.query].data)\n ) {\n return (props.render || props.children)(\n props.data ? props.data.data : staticQueryData[props.query].data\n )\n } else {\n return
Loading (StaticQuery)
\n }\n }}\n
\n)\n\nconst useStaticQuery = query => {\n if (\n typeof React.useContext !== `function` &&\n process.env.NODE_ENV === `development`\n ) {\n throw new Error(\n `You're likely using a version of React that doesn't support Hooks\\n` +\n `Please update React and ReactDOM to 16.8.0 or later to use the useStaticQuery hook.`\n )\n }\n const context = React.useContext(StaticQueryContext)\n if (context[query] && context[query].data) {\n return context[query].data\n } else {\n throw new Error(\n `The result of this StaticQuery could not be fetched.\\n\\n` +\n `This is likely a bug in Gatsby and if refreshing the page does not fix it, ` +\n `please open an issue in https://github.com/gatsbyjs/gatsby/issues`\n )\n }\n}\n\nStaticQuery.propTypes = {\n data: PropTypes.object,\n query: PropTypes.string.isRequired,\n render: PropTypes.func,\n children: PropTypes.func,\n}\n\nfunction graphql() {\n throw new Error(\n `It appears like Gatsby is misconfigured. Gatsby related \\`graphql\\` calls ` +\n `are supposed to only be evaluated at compile time, and then compiled away,. ` +\n `Unfortunately, something went wrong and the query was left in the compiled code.\\n\\n.` +\n `Unless your site has a complex or custom babel/Gatsby configuration this is likely a bug in Gatsby.`\n )\n}\n\nexport {\n Link,\n withPrefix,\n graphql,\n parsePath,\n navigate,\n push, // TODO replace for v3\n replace, // TODO remove replace for v3\n navigateTo, // TODO: remove navigateTo for v3\n StaticQueryContext,\n StaticQuery,\n PageRenderer,\n useStaticQuery,\n}\n","import React from \"react\"\nimport { Link } from \"gatsby\"\n\nconst ListLink = props => (\n
  • \n {props.children}\n
  • \n)\n\nexport default ({ children }) => (\n
    \n
    \n \n

    Mike LaPeter

    \n \n \n
    \n {children}\n
    \n)\n"],"sourceRoot":""}