diff --git a/Resources/AstartupToolkitArtGitHub.png b/Resources/AstartupToolkitArtGitHub.png new file mode 100644 index 0000000..6688198 Binary files /dev/null and b/Resources/AstartupToolkitArtGitHub.png differ diff --git a/Resources/AstartupToolkitArtGitHub.xcf b/Resources/AstartupToolkitArtGitHub.xcf new file mode 100644 index 0000000..ad408a4 Binary files /dev/null and b/Resources/AstartupToolkitArtGitHub.xcf differ diff --git a/Resources/repository-open-graph-template.png b/Resources/repository-open-graph-template.png new file mode 100644 index 0000000..d03dffd Binary files /dev/null and b/Resources/repository-open-graph-template.png differ diff --git a/mcc/package-lock.json b/mcc/package-lock.json index 9d0bad0..746f647 100644 --- a/mcc/package-lock.json +++ b/mcc/package-lock.json @@ -1078,6 +1078,29 @@ "resolved": "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-10.1.0.tgz", "integrity": "sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg==" }, + "@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "requires": { + "@emotion/memoize": "0.7.4" + } + }, + "@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==" + }, + "@emotion/stylis": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz", + "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==" + }, + "@emotion/unitless": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" + }, "@hapi/address": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", @@ -2641,6 +2664,22 @@ "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.6.tgz", "integrity": "sha512-1aGDUfL1qOOIoqk9QKGIo2lANk+C7ko/fqH0uIyC71x3PEGz0uVP8ISgfEsFuG+FKmjHTvFK/nNM8dowpmUxLA==" }, + "babel-plugin-styled-components": { + "version": "1.10.7", + "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-1.10.7.tgz", + "integrity": "sha512-MBMHGcIA22996n9hZRf/UJLVVgkEOITuR2SvjHLb5dSTUyR4ZRGn+ngITapes36FI3WLxZHfRhkA1ffHxihOrg==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-module-imports": "^7.0.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "lodash": "^4.17.11" + } + }, + "babel-plugin-syntax-jsx": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", + "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=" + }, "babel-plugin-syntax-object-rest-spread": { "version": "6.13.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", @@ -2970,6 +3009,11 @@ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" }, + "bowser": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-1.9.4.tgz", + "integrity": "sha512-9IdMmj2KjigRq6oWhmwv1W36pDuA4STQZ8q6YO9um+x07xgYNCD3Oou+WP/3L1HNz7iqythGet3/p4wvc8AAwQ==" + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -3249,6 +3293,11 @@ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" }, + "camelize": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.0.tgz", + "integrity": "sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs=" + }, "caniuse-api": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", @@ -3876,6 +3925,11 @@ "postcss": "^7.0.5" } }, + "css-color-keywords": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", + "integrity": "sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU=" + }, "css-color-names": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", @@ -3916,6 +3970,15 @@ } } }, + "css-in-js-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-2.0.1.tgz", + "integrity": "sha512-PJF0SpJT+WdbVVt0AOYp9C8GnuruRlL/UFW7932nLWmFLQTaWEzTBQEx7/hn4BuV+WON75iAViSUJLiU3PKbpA==", + "requires": { + "hyphenate-style-name": "^1.0.2", + "isobject": "^3.0.1" + } + }, "css-loader": { "version": "3.4.2", "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.4.2.tgz", @@ -3966,6 +4029,16 @@ "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==" }, + "css-to-react-native": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.0.0.tgz", + "integrity": "sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ==", + "requires": { + "camelize": "^1.0.0", + "css-color-keywords": "^1.0.0", + "postcss-value-parser": "^4.0.2" + } + }, "css-tree": { "version": "1.0.0-alpha.37", "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", @@ -5173,9 +5246,9 @@ "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" }, "eventemitter3": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.3.tgz", - "integrity": "sha512-HyaFeyfTa18nYjft59vEPsvuq6ZVcrCC1rBw6Fx8ZV9NcuUITBNCnTOyr0tHHkkHn//d+lzhsL1YybgtLQ7lng==" + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz", + "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==" }, "events": { "version": "3.1.0", @@ -5218,6 +5291,11 @@ "strip-eof": "^1.0.0" } }, + "exenv": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/exenv/-/exenv-1.2.2.tgz", + "integrity": "sha1-KueOhdmJQVhnCwPUe+wfA72Ru50=" + }, "exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", @@ -6151,6 +6229,14 @@ "minimalistic-crypto-utils": "^1.0.1" } }, + "hoist-non-react-statics": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.0.tgz", + "integrity": "sha512-0XsbTXxgiaCDYDIWFcwkmerZPSwywfUqYmwT4jzewKTQSWoE6FCMoUVOeBJWK3E/CrWbxRG3m5GzY4lnIwGRBA==", + "requires": { + "react-is": "^16.7.0" + } + }, "hosted-git-info": { "version": "2.8.8", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", @@ -6319,9 +6405,9 @@ "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=" }, "http-proxy": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.0.tgz", - "integrity": "sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ==", + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "requires": { "eventemitter3": "^4.0.0", "follow-redirects": "^1.0.0", @@ -6354,6 +6440,11 @@ "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" }, + "hyphenate-style-name": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.3.tgz", + "integrity": "sha512-EcuixamT82oplpoJ2XU4pDtKGWQ7b00CD9f1ug9IaQ3p1bkHMiKCZ9ut9QDI6qsa6cpUuB+A/I+zLtdNK4n2DQ==" + }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -6471,6 +6562,15 @@ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" }, + "inline-style-prefixer": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-4.0.2.tgz", + "integrity": "sha512-N8nVhwfYga9MiV9jWlwfdj1UDIaZlBFu4cJSJkIr7tZX7sHpHhGR5su1qdpW+7KPL8ISTvCIkcaFi/JdBknvPg==", + "requires": { + "bowser": "^1.7.3", + "css-in-js-utils": "^2.0.0" + } + }, "inquirer": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.1.0.tgz", @@ -10201,6 +10301,17 @@ "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==" }, + "radium": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/radium/-/radium-0.26.0.tgz", + "integrity": "sha512-4+oqTuMmrOpuwk7ikzft5Aau24UTD/SsurgRmLlDsZZeegCCScmviCiBiLw6XyFk8BiACYfjB2Yq0gmgHQfV0Q==", + "requires": { + "exenv": "^1.2.1", + "hoist-non-react-statics": "3.3.0", + "inline-style-prefixer": "^4.0.0", + "prop-types": "^15.5.8" + } + }, "raf": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", @@ -11406,6 +11517,11 @@ } } }, + "shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" + }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", @@ -12094,6 +12210,23 @@ } } }, + "styled-components": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.1.0.tgz", + "integrity": "sha512-0Qs2wEkFBXHFlysz6CV831VG6HedcrFUwChjnWylNivsx14MtmqQsohi21rMHZxzuTba063dEyoe/SR6VGJI7Q==", + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/traverse": "^7.4.5", + "@emotion/is-prop-valid": "^0.8.8", + "@emotion/stylis": "^0.8.4", + "@emotion/unitless": "^0.7.4", + "babel-plugin-styled-components": ">= 1", + "css-to-react-native": "^3.0.0", + "hoist-non-react-statics": "^3.0.0", + "shallowequal": "^1.1.0", + "supports-color": "^5.5.0" + } + }, "stylehacks": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", diff --git a/mcc/package.json b/mcc/package.json index 2aa2b41..11f4437 100644 --- a/mcc/package.json +++ b/mcc/package.json @@ -6,9 +6,11 @@ "@testing-library/jest-dom": "^4.2.4", "@testing-library/react": "^9.5.0", "@testing-library/user-event": "^7.2.1", + "radium": "^0.26.0", "react": "^16.13.1", "react-dom": "^16.13.1", - "react-scripts": "3.4.1" + "react-scripts": "3.4.1", + "styled-components": "^5.1.0" }, "scripts": { "start": "react-scripts start", diff --git a/mcc/readme.md b/mcc/readme.md index b811b9d..7a2e10a 100644 --- a/mcc/readme.md +++ b/mcc/readme.md @@ -1,12 +1,3 @@ -# Assignment +# Astartup Mission Control Center -* Create TWO new components: UserInput and UserOutput. -* UserInput should hold an input element, UserOutput two paragraphs. -* Output multiple UserOutput components in the App component (any paragraph texts of your choice). -* Pass a username (of your choice) to UserOutput via props and display it there. -* Add state to the App component (=> the username) and pass the username to the UserOutput component. -* Add a method to manipulate the state (=> an event-handler method). -* Pass the event-handler method reference to the UserInput component and bind it to the input-change event. -* Ensure that the new input entered by the user overwrites the old username passed to UserOutput. -* Add two-way-binding to your input (in UserInput) to also display the starting username. -* Add styling of your choice to your components/ elements in the components - both with inline styles and stylesheets. +The Astartup Mission Control Center is a browser extension for producing Simple Startup Syndication content. diff --git a/mcc/src.zip b/mcc/src.zip deleted file mode 100644 index 5bce18f..0000000 Binary files a/mcc/src.zip and /dev/null differ diff --git a/mcc/src/App.js b/mcc/src/App.js index 81e6b8f..58384ce 100644 --- a/mcc/src/App.js +++ b/mcc/src/App.js @@ -1,33 +1,86 @@ -import React, { Component } from "react"; -import "./App.css"; -import UserInput from "./UserInput"; -import UserOutput from "./UserOutput/UserOutput"; +import React, { Component } from 'react'; +import Classes from './App.module.css'; +import Radium, { StyleRoot } from 'radium'; +import Accounts from './Components/Accounts/Accounts'; +import UserInput from './Components/UserInput'; +import AccountValidator from './Components/AccountValidator'; +import Hud from './Components/Hud/Hud' class App extends Component { + constructor(Props) { + super(Props); + console.log('[App.js] constructor'); + } + state = { - username: 'A-Star' + AppTitle: 'Astartup Mission Control Center', + StartupName: 'My Startup', + Accounts: [ + { Username: 'Root', ID: 0, Name: 'Super user', Password: '0' }, + { Username: 'Foo', ID: 1, Name: 'Mr Foo', Password: '1' }, + { Username: 'Bar', ID: 2, Name: 'Mr Bar', Password: '2' }, + ], + ShowAccounts: true }; - HandleChangeUsername = (event) => { - this.setState({username: event.target.value}); + static getDerivedStateFromProps(Props, State) { + console.log('[App.js] getDerivedStateFromProps', Props); + return State; + } + + HandleAccountNameChange = (event, id) => { + const AccountIndex = this.state.Accounts.findIndex(p => { + return p.id === id; + }); + + const Target = { ...this.state.Accounts[AccountIndex]}; + + Target.Name = event.target.value; + + const Accounts = [...this.state.Accounts]; + Accounts[AccountIndex] = Target; + + this.setState({Accounts: event.target.Accounts}); + } + + HandleAccountDelete = (AccountIndex) => { + window.alert('Works :-)'); + //const AccountsState = this.state.Accounts.slice(); //< Better to do: + const Accounts = [...this.state.Accounts]; + PermissionStatus.splice(AccountIndex, 1); + this.setState({Accounts: Accounts}); + } + + HandleToggleShowAccounts = () => { + const VisibleState = !this.state.ShowAccounts; + this.setState({ShowAccounts: VisibleState}); } render() { + + let AccountsView = null; + if (this.state.ShowAccounts) { + AccountsView = ( + + ); + } + return ( -
-

Astartup Mission Control Center

- - - - -
+ +
+ + {AccountsView} +
+
); } } -export default App; +export default Radium(App); diff --git a/mcc/src/App.css b/mcc/src/App.module.css similarity index 97% rename from mcc/src/App.css rename to mcc/src/App.module.css index 3dc4ff8..f9c72e9 100644 --- a/mcc/src/App.css +++ b/mcc/src/App.module.css @@ -1,7 +1,9 @@ .App { text-align: center; + display: block; } + .App-logo { height: 40vmin; pointer-events: none; diff --git a/mcc/src/Person/Person.css b/mcc/src/Person/Person.css deleted file mode 100644 index 58b2133..0000000 --- a/mcc/src/Person/Person.css +++ /dev/null @@ -1,8 +0,0 @@ -.Person { - width: 60%; - margin: 16px auto; - border: 1px solid #eee; - box-shadow: 0 2px 3px #ccc; - padding: 16px; - text-align: center; -} \ No newline at end of file diff --git a/mcc/src/Person/Person.js b/mcc/src/Person/Person.js deleted file mode 100644 index c2ebcd4..0000000 --- a/mcc/src/Person/Person.js +++ /dev/null @@ -1,14 +0,0 @@ -import React from 'react'; -import './Person.css' - -const Person = (props) => { - return ( -
-

I'm {props.name} and I'm {props.age}.

-

{props.children}

- -
- ) -}; - -export default Person; diff --git a/mcc/src/components/Account/Account.js b/mcc/src/components/Account/Account.js new file mode 100644 index 0000000..0e1cab4 --- /dev/null +++ b/mcc/src/components/Account/Account.js @@ -0,0 +1,26 @@ +import React from 'react'; +import Radium from 'radium'; +import styled from 'styled-components'; + +import Classes from './Account.module.css'; + +const Account = (props) => { + return ( +
+

{props.Username}

+

ID: {props.ID}

+

Name: {props.Name}

+

Password: {props.Password}

+

{props.children}

+
+ +

Ok

+
+

Delete

+
+ ) +}; + +export default Radium(Account); diff --git a/mcc/src/components/Account/Account.module.css b/mcc/src/components/Account/Account.module.css new file mode 100644 index 0000000..2906630 --- /dev/null +++ b/mcc/src/components/Account/Account.module.css @@ -0,0 +1,20 @@ +.Account { + width: 60%; + margin: 16px auto; + border: 1px solid #eee; + box-shadow: 0 2px 3px #ccc; + padding: 16px; + text-align: center; + @media (min-width: 500px) { + width: '450px' + } +} + +.Account.Div { + width: 60%; + margin: 16px auto; + border: 1px solid #eee; + box-shadow: 0 2px 3px #ccc; + padding: 16px; + text-align: center; +} diff --git a/mcc/src/components/AccountValidator.js b/mcc/src/components/AccountValidator.js new file mode 100644 index 0000000..0470b96 --- /dev/null +++ b/mcc/src/components/AccountValidator.js @@ -0,0 +1,9 @@ +import React from 'react'; + +const AccountValidator = (props) => { + let ValidOrNot = "Ok"; + if (props.inputLength > 5) ValidOrNot = "Too short"; + return (

{ValidOrNot}

) +} + +export default AccountValidator; diff --git a/mcc/src/components/Accounts/Accounts.js b/mcc/src/components/Accounts/Accounts.js new file mode 100644 index 0000000..96d8d02 --- /dev/null +++ b/mcc/src/components/Accounts/Accounts.js @@ -0,0 +1,18 @@ +import React from 'react'; +import Classes from './Accounts.module.css'; +import Account from '../Account/Account'; + +const Accounts = (Props) => //{ + //
+ Props.Accounts.map ((Target, Index) => { + return Props.Click(Index)} + Change={(Event)=> Props.Change(Event, Target.ID)} /> + }); +//
+//} +export default Accounts; diff --git a/mcc/src/components/Accounts/Accounts.module.css b/mcc/src/components/Accounts/Accounts.module.css new file mode 100644 index 0000000..fc86d72 --- /dev/null +++ b/mcc/src/components/Accounts/Accounts.module.css @@ -0,0 +1,3 @@ +.Accounts { + border: 1px; +} diff --git a/mcc/src/components/algolia_search.js b/mcc/src/components/AlgoliaSearch.js similarity index 93% rename from mcc/src/components/algolia_search.js rename to mcc/src/components/AlgoliaSearch.js index 5a427de..4399fb4 100644 --- a/mcc/src/components/algolia_search.js +++ b/mcc/src/components/AlgoliaSearch.js @@ -1,4 +1,4 @@ -import React, {StyleSheet} from 'react'; +import React, {StyleSheet} from './node_modules/react'; function ComponentAngoliaSearch() { return ( diff --git a/mcc/src/components/author_skills.js b/mcc/src/components/AuthorSkills.js similarity index 62% rename from mcc/src/components/author_skills.js rename to mcc/src/components/AuthorSkills.js index 70d5cee..b8962d8 100644 --- a/mcc/src/components/author_skills.js +++ b/mcc/src/components/AuthorSkills.js @@ -1,4 +1,4 @@ -import React, {StyleSheet} from 'react'; +import React, {StyleSheet} from './node_modules/react'; function ComponentAuthorSkills() { return ( @@ -10,4 +10,4 @@ function ComponentAuthorSkills() { const styles = StyleSheet.create({ }); -export default ComponentAuthorSkills; \ No newline at end of file +export default ComponentAuthorSkills; diff --git a/mcc/src/components/component_header.js b/mcc/src/components/ComponentHeader.js similarity index 86% rename from mcc/src/components/component_header.js rename to mcc/src/components/ComponentHeader.js index 3965022..9b560ce 100644 --- a/mcc/src/components/component_header.js +++ b/mcc/src/components/ComponentHeader.js @@ -1,4 +1,4 @@ -import React, {StyleSheet} from 'react'; +import React, {StyleSheet} from './node_modules/react'; function ComponentHeader() { return ( diff --git a/mcc/src/components/contact_form.js b/mcc/src/components/ContactForm.js similarity index 91% rename from mcc/src/components/contact_form.js rename to mcc/src/components/ContactForm.js index 0bc050f..abac521 100644 --- a/mcc/src/components/contact_form.js +++ b/mcc/src/components/ContactForm.js @@ -1,4 +1,4 @@ -import React, {StyleSheet} from 'react'; +import React, {StyleSheet} from './node_modules/react'; function ComponentContactForm() { return ( diff --git a/mcc/src/components/ErrorBoundry.js b/mcc/src/components/ErrorBoundry.js new file mode 100644 index 0000000..ad4d660 --- /dev/null +++ b/mcc/src/components/ErrorBoundry.js @@ -0,0 +1,22 @@ +import React, { Component } from 'react'; + +class ErrorBoundary extends Component { + state = { + HasError: false, + ErrorMessage: '', + }; + + componentDidCatch = (error, info) => { + this.setState({HasError: true, ErrorMessage: error}); + } + + render() { + if (this.state.HasError) { + return

Something went wrong! :-(

+ } else { + return this.props.children; + } + } +} + +export default ErrorBoundary; diff --git a/mcc/src/components/estuary_categories.js b/mcc/src/components/EstuaryCategories.js similarity index 85% rename from mcc/src/components/estuary_categories.js rename to mcc/src/components/EstuaryCategories.js index fa0e210..d374773 100644 --- a/mcc/src/components/estuary_categories.js +++ b/mcc/src/components/EstuaryCategories.js @@ -1,4 +1,4 @@ -import React, {StyleSheet} from 'react'; +import React, {StyleSheet} from './node_modules/react'; function ComponentEstuaryCategories() { return ( diff --git a/mcc/src/components/estuary_post_article.js b/mcc/src/components/EstuaryPostArticle.js similarity index 94% rename from mcc/src/components/estuary_post_article.js rename to mcc/src/components/EstuaryPostArticle.js index 4c3bc43..f46dd71 100644 --- a/mcc/src/components/estuary_post_article.js +++ b/mcc/src/components/EstuaryPostArticle.js @@ -1,4 +1,4 @@ -import React, {StyleSheet} from 'react'; +import React, {StyleSheet} from './node_modules/react'; function ComponentEstuaryPostArticle() { return ( diff --git a/mcc/src/components/estuary_post_breadcrumb.js b/mcc/src/components/EstuaryPostBreadcrumb.js similarity index 86% rename from mcc/src/components/estuary_post_breadcrumb.js rename to mcc/src/components/EstuaryPostBreadcrumb.js index 863a09f..c21706c 100644 --- a/mcc/src/components/estuary_post_breadcrumb.js +++ b/mcc/src/components/EstuaryPostBreadcrumb.js @@ -1,4 +1,4 @@ -import React, {StyleSheet} from 'react'; +import React, {StyleSheet} from './node_modules/react'; function ComponentEstuaryPostBreadcrumb() { return ( diff --git a/mcc/src/components/estuary_post_comments.js b/mcc/src/components/EstuaryPostComments.js similarity index 91% rename from mcc/src/components/estuary_post_comments.js rename to mcc/src/components/EstuaryPostComments.js index 2520315..f1488ae 100644 --- a/mcc/src/components/estuary_post_comments.js +++ b/mcc/src/components/EstuaryPostComments.js @@ -1,4 +1,4 @@ -import React, {StyleSheet} from 'react'; +import React, {StyleSheet} from './node_modules/react'; function ComponentEstuaryPostComments() { return ( diff --git a/mcc/src/components/estuary_sidebar.js b/mcc/src/components/EstuarySidebar.js similarity index 87% rename from mcc/src/components/estuary_sidebar.js rename to mcc/src/components/EstuarySidebar.js index 3bc470e..3387036 100644 --- a/mcc/src/components/estuary_sidebar.js +++ b/mcc/src/components/EstuarySidebar.js @@ -1,4 +1,4 @@ -import React, {StyleSheet} from 'react'; +import React, {StyleSheet} from './node_modules/react'; function ComponentEstuarySidebar() { return ( diff --git a/mcc/src/components/estuary_tags.js b/mcc/src/components/EstuaryTags.js similarity index 84% rename from mcc/src/components/estuary_tags.js rename to mcc/src/components/EstuaryTags.js index 8f1dd4c..faedaa9 100644 --- a/mcc/src/components/estuary_tags.js +++ b/mcc/src/components/EstuaryTags.js @@ -1,4 +1,4 @@ -import React, {StyleSheet} from 'react'; +import React, {StyleSheet} from './node_modules/react'; function ComponentEstuaryTag() { return ( diff --git a/mcc/src/components/github_follow_button.js b/mcc/src/components/GithubFollowButton.js similarity index 85% rename from mcc/src/components/github_follow_button.js rename to mcc/src/components/GithubFollowButton.js index ba7b67f..c64c55b 100644 --- a/mcc/src/components/github_follow_button.js +++ b/mcc/src/components/GithubFollowButton.js @@ -1,4 +1,4 @@ -import React, {StyleSheet} from 'react'; +import React, {StyleSheet} from './node_modules/react'; function ComponentGitHubFollowButton() { return ( diff --git a/mcc/src/components/github_star_button.js b/mcc/src/components/GithubStarButton.js similarity index 85% rename from mcc/src/components/github_star_button.js rename to mcc/src/components/GithubStarButton.js index 48a3cc5..21b4aca 100644 --- a/mcc/src/components/github_star_button.js +++ b/mcc/src/components/GithubStarButton.js @@ -1,4 +1,4 @@ -import React, {StyleSheet} from 'react'; +import React, {StyleSheet} from './node_modules/react'; function ComponentGitHubStarButton() { return ( diff --git a/mcc/src/components/Hud/Hud.js b/mcc/src/components/Hud/Hud.js new file mode 100644 index 0000000..e7f7c4b --- /dev/null +++ b/mcc/src/components/Hud/Hud.js @@ -0,0 +1,28 @@ +import React from 'react'; +import Classes from './Hud.module.css' + +const Hud = (Props) => { + const AssignedClasses = []; + let ButtonClass = ''; + if (Props.Accounts.length <= 1) { + AssignedClasses.push(Classes.Red); + } + if (Props.Accounts.length <= 2) { + AssignedClasses.push(Classes.Bold); + } + if (Props.ShowAccounts) { + ButtonClass = Classes.Red; + } + + return ( +
+

{Props.AppTitle}

+ +
+ ); +}; + +export default Hud; diff --git a/mcc/src/components/Hud/Hud.module.css b/mcc/src/components/Hud/Hud.module.css new file mode 100644 index 0000000..d77a44d --- /dev/null +++ b/mcc/src/components/Hud/Hud.module.css @@ -0,0 +1,43 @@ +.Hud { + text-align: center; +} + +.Red { + color: red; +} + +.Bold { + font-weight: bold; +} + +.Italics { + font-weight: italics; +} + +.Hud button { + background-color: green; + color: white; + font: inherit; + border: 1px solid blue; + padding: 8px; + cursor: pointer; +} + +.Hud button:hover { + background-color: lightgreen; + color: black; +} + +.Hud button.Red { + background-color: red; + color: white; + font: inherit; + border: 1px solid blue; + padding: 8px; + cursor: pointer; +} + +.Hud button.Red:hover { + background-color: salmon; + color: black; +} diff --git a/mcc/src/components/qr-login.js b/mcc/src/components/LoginQR.js similarity index 90% rename from mcc/src/components/qr-login.js rename to mcc/src/components/LoginQR.js index 1fab4c0..7332367 100644 --- a/mcc/src/components/qr-login.js +++ b/mcc/src/components/LoginQR.js @@ -1,4 +1,4 @@ -import React, {StyleSheet} from 'react'; +import React, {StyleSheet} from './node_modules/react'; function ComponentQrLogin() { return ( diff --git a/mcc/src/components/product_definition.js b/mcc/src/components/ProductDefinition.js similarity index 88% rename from mcc/src/components/product_definition.js rename to mcc/src/components/ProductDefinition.js index e56d0ae..397d39f 100644 --- a/mcc/src/components/product_definition.js +++ b/mcc/src/components/ProductDefinition.js @@ -1,4 +1,4 @@ -import React, {StyleSheet} from 'react'; +import React, {StyleSheet} from './node_modules/react'; function ComponentProductDefinition() { return ( diff --git a/mcc/src/components/project-widget.js b/mcc/src/components/ProjectWidget.js similarity index 67% rename from mcc/src/components/project-widget.js rename to mcc/src/components/ProjectWidget.js index 02a88ab..efbc9c9 100644 --- a/mcc/src/components/project-widget.js +++ b/mcc/src/components/ProjectWidget.js @@ -1,4 +1,4 @@ -import React, {StyleSheet} from 'react'; +import React, {StyleSheet} from './node_modules/react'; function ComponentProjectWidget() { return ( diff --git a/mcc/src/serviceWorker.js b/mcc/src/components/ServiceWorker.js similarity index 50% rename from mcc/src/serviceWorker.js rename to mcc/src/components/ServiceWorker.js index b04b771..4a3ccf0 100644 --- a/mcc/src/serviceWorker.js +++ b/mcc/src/components/ServiceWorker.js @@ -1,93 +1,67 @@ -// This optional code is used to register a service worker. -// register() is not called by default. +// In production, we register a service worker to serve assets from local cache. // This lets the app load faster on subsequent visits in production, and gives // it offline capabilities. However, it also means that developers (and users) -// will only see deployed updates on subsequent visits to a page, after all the -// existing tabs open on the page have been closed, since previously cached -// resources are updated in the background. +// will only see deployed updates on the "N+1" visit to a page, since previously +// cached resources are updated in the background. -// To learn more about the benefits of this model and instructions on how to -// opt-in, read https://bit.ly/CRA-PWA +// To learn more about the benefits of this model, read https://goo.gl/KwvDNy. +// This link also includes instructions on opting out of this behavior. const isLocalhost = Boolean( window.location.hostname === 'localhost' || // [::1] is the IPv6 localhost address. window.location.hostname === '[::1]' || - // 127.0.0.0/8 are considered localhost for IPv4. + // 127.0.0.1/8 is considered localhost for IPv4. window.location.hostname.match( /^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/ ) ); -export function register(config) { +export default function register() { if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) { // The URL constructor is available in all browsers that support SW. - const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href); + const publicUrl = new URL(process.env.PUBLIC_URL, window.location); if (publicUrl.origin !== window.location.origin) { // Our service worker won't work if PUBLIC_URL is on a different origin // from what our page is served on. This might happen if a CDN is used to - // serve assets; see https://github.com/facebook/create-react-app/issues/2374 + // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374 return; } window.addEventListener('load', () => { const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`; - if (isLocalhost) { - // This is running on localhost. Let's check if a service worker still exists or not. - checkValidServiceWorker(swUrl, config); - - // Add some additional logging to localhost, pointing developers to the - // service worker/PWA documentation. - navigator.serviceWorker.ready.then(() => { - console.log( - 'This web app is being served cache-first by a service ' + - 'worker. To learn more, visit https://bit.ly/CRA-PWA' - ); - }); + if (!isLocalhost) { + // Is not local host. Just register service worker + registerValidSW(swUrl); } else { - // Is not localhost. Just register service worker - registerValidSW(swUrl, config); + // This is running on localhost. Lets check if a service worker still exists or not. + checkValidServiceWorker(swUrl); } }); } } -function registerValidSW(swUrl, config) { +function registerValidSW(swUrl) { navigator.serviceWorker .register(swUrl) .then(registration => { registration.onupdatefound = () => { const installingWorker = registration.installing; - if (installingWorker == null) { - return; - } installingWorker.onstatechange = () => { if (installingWorker.state === 'installed') { if (navigator.serviceWorker.controller) { - // At this point, the updated precached content has been fetched, - // but the previous service worker will still serve the older - // content until all client tabs are closed. - console.log( - 'New content is available and will be used when all ' + - 'tabs for this page are closed. See https://bit.ly/CRA-PWA.' - ); - - // Execute callback - if (config && config.onUpdate) { - config.onUpdate(registration); - } + // At this point, the old content will have been purged and + // the fresh content will have been added to the cache. + // It's the perfect time to display a "New content is + // available; please refresh." message in your web app. + console.log('New content is available; please refresh.'); } else { // At this point, everything has been precached. // It's the perfect time to display a // "Content is cached for offline use." message. console.log('Content is cached for offline use.'); - - // Execute callback - if (config && config.onSuccess) { - config.onSuccess(registration); - } } } }; @@ -98,17 +72,14 @@ function registerValidSW(swUrl, config) { }); } -function checkValidServiceWorker(swUrl, config) { +function checkValidServiceWorker(swUrl) { // Check if the service worker can be found. If it can't reload the page. - fetch(swUrl, { - headers: { 'Service-Worker': 'script' }, - }) + fetch(swUrl) .then(response => { // Ensure service worker exists, and that we really are getting a JS file. - const contentType = response.headers.get('content-type'); if ( response.status === 404 || - (contentType != null && contentType.indexOf('javascript') === -1) + response.headers.get('content-type').indexOf('javascript') === -1 ) { // No service worker found. Probably a different app. Reload the page. navigator.serviceWorker.ready.then(registration => { @@ -118,7 +89,7 @@ function checkValidServiceWorker(swUrl, config) { }); } else { // Service worker found. Proceed as normal. - registerValidSW(swUrl, config); + registerValidSW(swUrl); } }) .catch(() => { @@ -130,12 +101,8 @@ function checkValidServiceWorker(swUrl, config) { export function unregister() { if ('serviceWorker' in navigator) { - navigator.serviceWorker.ready - .then(registration => { - registration.unregister(); - }) - .catch(error => { - console.error(error.message); - }); + navigator.serviceWorker.ready.then(registration => { + registration.unregister(); + }); } } diff --git a/mcc/src/components/twitter_follow_button.js b/mcc/src/components/TwitterFollowButton.js similarity index 85% rename from mcc/src/components/twitter_follow_button.js rename to mcc/src/components/TwitterFollowButton.js index 57520d9..a4a8497 100644 --- a/mcc/src/components/twitter_follow_button.js +++ b/mcc/src/components/TwitterFollowButton.js @@ -1,4 +1,4 @@ -import React, {StyleSheet} from 'react'; +import React, {StyleSheet} from './node_modules/react'; function TwitterFollowButton() { return ( diff --git a/mcc/src/UserInput.js b/mcc/src/components/UserInput.js similarity index 100% rename from mcc/src/UserInput.js rename to mcc/src/components/UserInput.js diff --git a/mcc/src/UserOutput/UserOutput.css b/mcc/src/components/UserOutput/UserOutput.css similarity index 100% rename from mcc/src/UserOutput/UserOutput.css rename to mcc/src/components/UserOutput/UserOutput.css diff --git a/mcc/src/UserOutput/UserOutput.js b/mcc/src/components/UserOutput/UserOutput.js similarity index 52% rename from mcc/src/UserOutput/UserOutput.js rename to mcc/src/components/UserOutput/UserOutput.js index 7321593..4a58d94 100644 --- a/mcc/src/UserOutput/UserOutput.js +++ b/mcc/src/components/UserOutput/UserOutput.js @@ -4,8 +4,10 @@ import './UserOutput.css'; const UserOutput = (props) => { return (
-

Username: {props.username}

-

Foo

+

Username: {props.Username}

+

UID: {props.UID}

+

Name: {props.Name}

+

Password: {props.Password}

); } diff --git a/mcc/src/components/ads.js b/mcc/src/components/ads.js index acf4016..2e3c542 100644 --- a/mcc/src/components/ads.js +++ b/mcc/src/components/ads.js @@ -1,4 +1,4 @@ -import React, {StyleSheet} from 'react'; +import React, {StyleSheet} from './node_modules/react'; function ComponentAds() { return ( diff --git a/mcc/src/components/footer.js b/mcc/src/components/footer.js index c043483..11847cb 100644 --- a/mcc/src/components/footer.js +++ b/mcc/src/components/footer.js @@ -1,4 +1,4 @@ -import React, {StyleSheet} from 'react'; +import React, {StyleSheet} from './node_modules/react'; function ComponentFooter() { return ( diff --git a/mcc/src/components/header.js b/mcc/src/components/header.js index 34e532b..1b59673 100644 --- a/mcc/src/components/header.js +++ b/mcc/src/components/header.js @@ -1,4 +1,4 @@ -import React, {StyleSheet} from 'react'; +import React, {StyleSheet} from './node_modules/react'; function ComponentHeader() { return ( diff --git a/mcc/src/components/repo.js b/mcc/src/components/repo.js index 76911fc..d486423 100644 --- a/mcc/src/components/repo.js +++ b/mcc/src/components/repo.js @@ -1,4 +1,4 @@ -import React, {StyleSheet} from 'react'; +import React, {StyleSheet} from './node_modules/react'; function ComponentRepo() { return ( diff --git a/mcc/src/components/sidebar.js b/mcc/src/components/sidebar.js index c5f90bc..c2fc3a5 100644 --- a/mcc/src/components/sidebar.js +++ b/mcc/src/components/sidebar.js @@ -1,4 +1,4 @@ -import React, {StyleSheet} from 'react'; +import React, {StyleSheet} from './node_modules/react'; function ComponentSidebar() { return ( diff --git a/mcc/src/components/stream.js b/mcc/src/components/stream.js index 64f074e..5b706f1 100644 --- a/mcc/src/components/stream.js +++ b/mcc/src/components/stream.js @@ -1,4 +1,4 @@ -import React, {StyleSheet} from 'react'; +import React, {StyleSheet} from './node_modules/react'; function ComponentStream() { return ( diff --git a/mcc/src/index.js b/mcc/src/index.js index f5185c1..7fa03f2 100644 --- a/mcc/src/index.js +++ b/mcc/src/index.js @@ -1,8 +1,8 @@ -import React from 'react'; +/*import React from 'react'; import ReactDOM from 'react-dom'; import './index.css'; import App from './App'; -import * as serviceWorker from './serviceWorker'; +import * as serviceWorker from './Components/serviceWorker'; ReactDOM.render( @@ -15,3 +15,12 @@ ReactDOM.render( // unregister() to register() below. Note this comes with some pitfalls. // Learn more about service workers: https://bit.ly/CRA-PWA serviceWorker.unregister(); +*/ +import React from 'react'; +import ReactDOM from 'react-dom'; +import './index.css'; +import App from './App'; +import ServiceWorker from './Components/ServiceWorker'; + +ReactDOM.render(, document.getElementById('root')); +ServiceWorker(); diff --git a/mcc/src/screens/careers.js b/mcc/src/screens/careers.js index 9c78978..9a13a0e 100644 --- a/mcc/src/screens/careers.js +++ b/mcc/src/screens/careers.js @@ -1,4 +1,4 @@ -import React, {StyleSheet} from 'react'; +import React, {StyleSheet} from './node_modules/react'; import ContactForm from "../components/contact_form"; function ScreenCareers() { diff --git a/mcc/src/screens/posts/2019-10-05-hello-world.md b/mcc/src/screens/posts/2019-10-05-hello-world.md deleted file mode 100644 index 316c9aa..0000000 --- a/mcc/src/screens/posts/2019-10-05-hello-world.md +++ /dev/null @@ -1,15 +0,0 @@ -import React, {StyleSheet} from 'react'; - -function ComponentSidebar() { - return ( ---- -layout: post -title: Hello World -author: Cale McCollough -date: '2019-10-04 1:00:00 +0800' -category: guides -summary: Getting started with the Astartup and IMUL. -thumbnail: post.hello_world.thumbnail.png ---- - -This says foo. Astartup is cool. Hu ha ha ha... I like nachos. diff --git a/mcc/src/screens/products/astartup-cookbook.md b/mcc/src/screens/products/astartup-cookbook.md deleted file mode 100644 index c6ac23b..0000000 --- a/mcc/src/screens/products/astartup-cookbook.md +++ /dev/null @@ -1,16 +0,0 @@ -import React, {StyleSheet} from 'react'; - -function ProductAstartupCookbook() { - return ( ---- -identifier: astartup-cookbook -name: Astartup Cookbook -price: 50 -image: /media/astartup.cookbook.thumbnail.jpg ---- - -The [Astartup Cookbook™](github.com/a-startup/astartup.cookbook) is an open-source book on how to invent, launch, and run a modern startup with I am You Language (IMUL). The Astartup, or A* Startup, is a productivity technique developed by Cale McCollough that integrates your pen-and-paper development logs with your computer and A* Startup Network. - -The cookbook skelton is pretty well outlined and there is about 100 pages so far but there is a lot of work left to do. The demo projects in this book walk you through inventing a product through end of life using I am You Language (IMUL) using the [Oregon-Cooler](oregoncooler.org) as an example. - -If you would like to fund my work, you can do so by [subscribing as a Patreon](patreon.com/astartup). diff --git a/mcc/src/screens/products/greentech-cookbook.md b/mcc/src/screens/products/greentech-cookbook.md deleted file mode 100644 index e5485af..0000000 --- a/mcc/src/screens/products/greentech-cookbook.md +++ /dev/null @@ -1,15 +0,0 @@ -import React, {StyleSheet} from 'react'; - -function ProductGreentechCookbook() { - return (--- -identifier: greentech-cookbook -name: Greentech Cookbook -price: 50 -image: /theme/products/astartup.cookbook.jpg ---- - -The [Greentech Cookbook™](https://github.com/oregon-cooler/greentech.cookbook) is an open-source book that teaches how to make Oregon-Coolers to combat global warming. The [Oregon-Cooler](oregoncooler.org) is an open-source green water heater, solar power station, HVAC, and smart-home system. - -This is a very new cookbook and it doesn't have much work or even a skeleton, but it's a FREAKING AWESOME IDEA!!! The demo projects in this cookbook are an extension of the [KabukiPress Cookbook](kabukipress-cookbook), an open-source book on how to make intelligent connected services, apps, websites, and books with Modern Embedded-C++, Script2, and I am You Language (IMUL). These technologies serve as the foundation of the Oregon-Cooler smart-home system. The Cookbook adds the [Kabuki Tek Toolkit](github.com/kabuki-starship/kabuki.toolkit.tek) to create firmware using [mbed](mbed.com) and Script2. - -If you would like to fund my work, [you can do so on Patreon](patreon.com/astartup). diff --git a/mcc/src/screens/products/kabuki.press.cookbook.md b/mcc/src/screens/products/kabuki.press.cookbook.md deleted file mode 100644 index e1cff05..0000000 --- a/mcc/src/screens/products/kabuki.press.cookbook.md +++ /dev/null @@ -1,16 +0,0 @@ -import React, {StyleSheet} from 'react'; - -function ProductKabukiPressCookbook() { - return ( - --- -identifier: kabukipress-cookbook -name: KabukiPress Cookbook -price: 50 -image: /theme/products/kabuki.press.cookbook.jpg ---- - -The [KabukiPress Cookbook](github.com/kabuki-starship/kabuki.press.cookbook)™ is an open-source book on how to make intelligent connected services, apps, websites, and books with Modern Embedded-C++, Script2™, and I am You Language™ (IMUL™). This cookbook covers the entire process of creating a KabukiPress book, website, book app, and web service using [Script2](github.com/kabuki-starship/script2), [Kabuki Toolkit](github.com/kabuki-starship/kabuki.toolkit)™, and [KabukiPress](github.com/kabuki-starship/kabuki.press)™. - -The demo projects for the cookbook are the Oregon-Cooler service, client app, Greentech Cookbook, and website, and it serves as the foundation of the [Greentech Cookbook](greentech-cookbook)™. You're looking at a VERY early version of this website, the products are very new, we don't have a lot of work done yet, and currently we're using Jekyll; but we have our own Script2, IMUL, and Embedded-C++ version of Jekyll to replace it that can import Jekyll sites. - -If you would like to fund my work, [you can do so on Patreon](patreon.com/astartup). diff --git a/mcc/src/website/index.html b/mcc/src/website/index.html deleted file mode 100644 index 9ad7807..0000000 --- a/mcc/src/website/index.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - React Local - - - - - - - -
- - - - - - diff --git a/mcc/src/website/p/astartup.toolkit/astartup.toolkit.js b/mcc/src/website/p/astartup.toolkit/astartup.toolkit.js deleted file mode 100644 index e69de29..0000000 diff --git a/readme.md b/readme.md index 3c9929e..f642ab4 100644 --- a/readme.md +++ b/readme.md @@ -4,7 +4,7 @@ This repository contains the Astartup React.JS Framework, [Mission Control Cente ## Quick Links -* [Astartup Cookbook](https://github.com/AStarStartup/AstartupCookbook) - An open-source book that teaches you to invent, launch, and run a modern startup with IDD and IMUL. +* [Astartup Cookbook](https://github.com/AStarStartup/AstartupCookbook) - An open-source book that teaches you to invent, launch, and run a modern startup with Issue-driven Development (IDD) and I am You Language (IMUL). * [astartup.net](https://astartup.net) - The A* Startup Network website is an online version of the Astartup Mission Control Center. ## Mission and Vision