{"id":15916666,"url":"https://github.com/kylemit/hellosern","last_synced_at":"2025-04-03T11:25:08.146Z","repository":{"id":71746041,"uuid":"166882683","full_name":"KyleMit/HelloSERN","owner":"KyleMit","description":"Introduction to SQL, Express, React, Node Stack","archived":false,"fork":false,"pushed_at":"2022-02-13T16:59:25.000Z","size":204,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-28T20:11:30.323Z","etag":null,"topics":["express","node","react","sql"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/KyleMit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-01-21T21:22:59.000Z","updated_at":"2024-12-07T04:33:56.000Z","dependencies_parsed_at":"2023-02-22T21:46:15.328Z","dependency_job_id":null,"html_url":"https://github.com/KyleMit/HelloSERN","commit_stats":{"total_commits":7,"total_committers":3,"mean_commits":"2.3333333333333335","dds":0.2857142857142857,"last_synced_commit":"357f1bfe179bf08ce543fa6f734059edc832c12f"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KyleMit%2FHelloSERN","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KyleMit%2FHelloSERN/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KyleMit%2FHelloSERN/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KyleMit%2FHelloSERN/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/KyleMit","download_url":"https://codeload.github.com/KyleMit/HelloSERN/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246990976,"owners_count":20865568,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["express","node","react","sql"],"created_at":"2024-10-06T18:03:09.739Z","updated_at":"2025-04-03T11:25:08.077Z","avatar_url":"https://github.com/KyleMit.png","language":null,"readme":"# Hello SERN Stack\n\nHigh level outline of the frameworks, tools, and concepts in the SQL, Express, React, Node (SERN) stack\n\n![Overview](Overview.png)\n\n## Development Stack\n\n* Client - SPA\n  * [React](https://reactjs.org/)\n    * [React DOM](https://reactjs.org/docs/react-dom.html)\n    * [State](https://reactjs.org/docs/state-and-lifecycle.html)\n      * ~~[redux](https://redux.js.org/basics/usage-with-react)~~\n      * React State Management\n        * [Context API](https://reactjs.org/docs/context.html)\n        * Encapsulation\n        * Props through State Tree\n        * Sideload\n        * Subscription\n    * [React Router](https://reacttraining.com/react-router/web/guides/quick-start)\n      * [`History.pushState()`](https://developer.mozilla.org/en-US/docs/Web/API/History_API)\n      * [HashRouter](https://reacttraining.com/react-router/web/api/HashRouter) uses [`window.location.hash`](https://developer.mozilla.org/en-US/docs/Web/API/Window/location)\n    * Views\n      * [JSX](https://reactjs.org/docs/introducing-jsx.html)\n      * [CSS-in-JS](https://cssinjs.org/)\n        * Multi-tenant themes?\n      * Library\n        * [Material UI](https://material-ui.com/)\n        * [Bootstrap](https://facebook.github.io/create-react-app/docs/adding-bootstrap) (CSS)\n  * Authentication\n    * [JSON Web Tokens](https://jwt.io/) (JWT)\n  * [Fetch API](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)\n    * ~~[AXIOS](https://github.com/axios/axios)~~\n    * [Polyfill](https://github.com/github/fetch)\n* Server - API\n  * [Node.js](https://nodejs.org/en/)\n  * [Express](https://expressjs.com/)\n    * Controller\n      * Service\n        * Data Access Object (DAO)\n          * [MySQL Driver](https://dev.mysql.com/downloads/connector/nodejs/8.0.html)\n          * ~~Object Relational Mapping (ORM)~~\n  * [Aurelia DI](https://aurelia.io/docs/fundamentals/dependency-injection/)\n  * Authentication\n    * [Passport](http://www.passportjs.org/)\n* Database\n  * [MySQL](https://www.mysql.com/)\n  * Procs written in Javascript (not SPs)\n* Testing\n  * [Mocha Test Runner](https://mochajs.org/)\n    * End to End (ETE) API Test\n  * Web Acceptance\n    * [Chrome Driver](https://sites.google.com/a/chromium.org/chromedriver/)\n    * [Cypress](https://www.cypress.io/)\n\n## Tooling\n\n* [Create React App](https://facebook.github.io/create-react-app/) (zero config)\n  * [Webpack](https://webpack.js.org/)\n  * [Babel](https://babeljs.io/)\n\n## Deployment Infrastructure\n\n* [Amazon Web Services (AWS)](https://aws.amazon.com/)\n  * Content Delivery Network (CDN)\n* [CloudFront](https://aws.amazon.com/cloudfront/)\n* [AWS S3](https://aws.amazon.com/s3/)\n* [AWS API Gateway](https://aws.amazon.com/api-gateway/)\n* [AWS Lambda](https://aws.amazon.com/lambda/)\n  * [Serverless Framework](https://serverless.com/)\n\n## Architectural Concepts\n\n* [REST](https://www.wikiwand.com/en/Representational_state_transfer) - REpresentational State Transfer\n  * Levels of Rest Compliance\n  * Evolvability\n  * Media Types\n  * [Richardson Maturity Model](https://martinfowler.com/articles/richardsonMaturityModel.html)\n    * Level 0\n    * Level 1 - Resources\n    * Level 2 - HTTP Verbs\n    * Level 3 - Hypermedia Controls\n* [Object Oriented Programing (OOP)](https://www.wikiwand.com/en/Object-oriented_programming) Concepts\n  * Abstraction\n  * Encapsulation\n  * Inheritance\n  * Polymorphism\n  * Association\n  * Aggregation\n  * Composition\n  * Delegation\n  * Coupling\n  * Cohesion\n* Patterns\n  * [Strategy Pattern](https://www.wikiwand.com/en/Strategy_pattern)\n  * [Data Access Object](https://www.wikiwand.com/en/Data_access_object)\n  * [Inversion of Control (IOC)](https://www.wikiwand.com/en/Inversion_of_control)\n  * [Dependency Injection (DI)](https://www.wikiwand.com/en/Dependency_injection)\n* [SOLID](https://www.wikiwand.com/en/SOLID)\n  * Single Responsibility Principle\n  * Open / Closed Principle\n  * Liskov Substitution Principle\n  * Interface Segregation Principle\n  * Dependency Inversion Principle\n* Javascript\n  * [JS Cheatsheet](https://mbeaudru.github.io/modern-js-cheatsheet/)\n  * [ES6](http://es6-features.org/)\n    * Import \u003e (~~require~~)\n    * Promises\n* Multi-tenancy\n\n## Questions\n\n* Typescript\n* Async / Await\n* IDE\n\n---\n\n## MySQL\n\n### Downloads\n\n* [MySql Full Install](https://dev.mysql.com/downloads/windows/installer/8.0.html)\n  * [MySQL Community Server](https://dev.mysql.com/downloads/windows/installer/8.0.html)\n  * [MySQL Workbench](https://dev.mysql.com/downloads/workbench/)\n\n### Docs\n\n* [MySQL Shell](https://dev.mysql.com/doc/mysql-shell/8.0/en/)\n* [MySql Community Server 8.0](https://dev.mysql.com/doc/refman/8.0/en/)\n* [MySQL Workbench](https://dev.mysql.com/doc/workbench/en/)\n* [AQS RDS MySql](https://aws.amazon.com/rds/mysql/)\n  * [Getting Started](https://aws.amazon.com/getting-started/tutorials/create-mysql-db/)\n\n\n* [Create Database](https://dev.mysql.com/doc/refman/8.0/en/create-database.html)\n\n  ```sql\n  CREATE DATABASE dbSky;\n  ```\n\n* [Create Table](https://dev.mysql.com/doc/refman/8.0/en/create-table.html)\n* [Data Types](https://dev.mysql.com/doc/refman/8.0/en/data-types.html)\n\n  ```sql\n  USE dbSky;\n  CREATE TABLE posts (\n    id smallint unsigned not null auto_increment,\n    text varchar(280) not null,\n    constraint pk_posts primary key (id)\n  );\n  INSERT INTO posts ( id, text ) VALUES ( null, 'Sample data' );\n  SELECT * FROM posts;\n  ```\n\n### Troubleshooting\n\n* [MySql 5.7 installer fails to detect VS 2013 redistributable](https://stackoverflow.com/q/45163588/1366033)\n* [Troubleshoot Installing MySql 8.0 and Visual C++ Redistributable on Windows](https://stackoverflow.com/q/54317796/1366033)\n* [Starting MySQL from the Windows Command Line](https://dev.mysql.com/doc/refman/8.0/en/windows-start-command-line.html)\n\n  ```bash\n  cd \"C:\\Program Files\\MySQL\\MySQL Server 8.0\\bin\\\"\n  .\\mysqld\n  ```\n\n* [mysqld: Can't change dir to data. Server doesn't start](https://stackoverflow.com/q/33752407/1366033)\n\n  ```bash\n  cd \"/c/Program Files/MySQL/MySQL Server 8.0/bin\"\n  ./mysqld --initialize\n  ```\n\n* [Only one usage of each socket address (protocol/network address/port) is normally permitted?](https://stackoverflow.com/q/41836209/1366033)\n* [Who's listening on a port](https://stackoverflow.com/q/48198/1366033)\n\n  ```bash\n  netstat -a -b\n  ```\n\n* [Cannot connect to Database server (mysql workbench)](https://stackoverflow.com/a/7875732/1366033)\n\n  ```bash\n  mysql -u root -p -h 127.0.0.1 -P 3306\n  ```\n\n* [Access Denied for User 'root'@'localhost' (using password: YES)](https://stackoverflow.com/q/17975120/1366033)\n* [What is the benefit of zerofill in MySQL?](https://stackoverflow.com/q/5256469/1366033)\n* [MySql Console - Can't quit incorrect mySQL command line](https://stackoverflow.com/q/28098061/1366033)\n\n### X-Dev API\n\n* [Database Connection Example](https://dev.mysql.com/doc/x-devapi-userguide/en/database-connection-example.html)\n* [Session Object](https://dev.mysql.com/doc/x-devapi-userguide/en/working-with-a-session-object.html)\n* [Session - Dynamic SQL](https://dev.mysql.com/doc/x-devapi-userguide/en/using-sql.html)\n\n```js\nvar mySession = mysqlx.getSession('user:pwd@localhost');\nmySession.getSchemas()\nvar schema = mySession.getSchema(\"dbsky\")\nschema.getTables()\nvar posts = schema.getTable(\"posts\")\n\n\n// dynamic sql\nmySession.sql(\"USE dbsky\").execute()\nmySession.sql(\"Select * FROM posts\");\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkylemit%2Fhellosern","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkylemit%2Fhellosern","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkylemit%2Fhellosern/lists"}