<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://training-course-material.com/index.php?action=history&amp;feed=atom&amp;title=Mean_Stack</id>
	<title>Mean Stack - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://training-course-material.com/index.php?action=history&amp;feed=atom&amp;title=Mean_Stack"/>
	<link rel="alternate" type="text/html" href="https://training-course-material.com/index.php?title=Mean_Stack&amp;action=history"/>
	<updated>2026-05-13T22:05:13Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://training-course-material.com/index.php?title=Mean_Stack&amp;diff=89034&amp;oldid=prev</id>
		<title>Lsokolowski1 at 17:19, 27 August 2025</title>
		<link rel="alternate" type="text/html" href="https://training-course-material.com/index.php?title=Mean_Stack&amp;diff=89034&amp;oldid=prev"/>
		<updated>2025-08-27T17:19:47Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en-GB&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 17:19, 27 August 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l4&quot;&gt;Line 4:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 4:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;slideshow style=&quot;nobleprog&quot; headingmark=&quot;⌘&quot; incmark=&quot;…&quot; scaled=&quot;false&quot; font=&quot;Trebuchet MS&quot; &amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;;title: MEAN Stack course&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;;title: MEAN Stack course&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;;author: Lukasz Sokolowski&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;;author: Lukasz Sokolowski&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/slideshow&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== MEAN Stack Course ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== MEAN Stack Course ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Lsokolowski1</name></author>
	</entry>
	<entry>
		<id>https://training-course-material.com/index.php?title=Mean_Stack&amp;diff=88854&amp;oldid=prev</id>
		<title>Lsokolowski1 at 07:42, 12 June 2025</title>
		<link rel="alternate" type="text/html" href="https://training-course-material.com/index.php?title=Mean_Stack&amp;diff=88854&amp;oldid=prev"/>
		<updated>2025-06-12T07:42:43Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en-GB&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 07:42, 12 June 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Cat|Angular}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Cat|Angular}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:course_code_meanangular2]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;!-- &lt;/ins&gt;[[Category:course_code_meanangular2]] &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;--&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:JavaScript]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:JavaScript]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Lsokolowski1</name></author>
	</entry>
	<entry>
		<id>https://training-course-material.com/index.php?title=Mean_Stack&amp;diff=80564&amp;oldid=prev</id>
		<title>Lsokolowski: /* Our Course Plan ⌘ */</title>
		<link rel="alternate" type="text/html" href="https://training-course-material.com/index.php?title=Mean_Stack&amp;diff=80564&amp;oldid=prev"/>
		<updated>2020-11-23T15:10:58Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Our Course Plan ⌘&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Cat|Angular}}&lt;br /&gt;
[[Category:course_code_meanangular2]]&lt;br /&gt;
[[Category:JavaScript]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;slideshow style=&amp;quot;nobleprog&amp;quot; headingmark=&amp;quot;⌘&amp;quot; incmark=&amp;quot;…&amp;quot; scaled=&amp;quot;false&amp;quot; font=&amp;quot;Trebuchet MS&amp;quot; &amp;gt;&lt;br /&gt;
;title: MEAN Stack course&lt;br /&gt;
;author: Lukasz Sokolowski&lt;br /&gt;
&amp;lt;/slideshow&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== MEAN Stack Course ==&lt;br /&gt;
MEAN Stack Training Materials&lt;br /&gt;
&lt;br /&gt;
{{Can I use your material}}&lt;br /&gt;
&lt;br /&gt;
== Overview ⌘==&lt;br /&gt;
[[File:Mean_stack_small.jpg]]&lt;br /&gt;
* What is MEAN stack?&lt;br /&gt;
* MEAN stack included technologies&lt;br /&gt;
* How is it better/worse than the good old LAMP Stack?&lt;br /&gt;
&lt;br /&gt;
=== MEAN acronym ⌘===&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;M&amp;#039;&amp;#039;&amp;#039;ongoDB - [https://docs.mongodb.com/manual/tutorial/getting-started/ MongoDB]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;E&amp;#039;&amp;#039;&amp;#039;xpress.js - [https://expressjs.com/ Express]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;A&amp;#039;&amp;#039;&amp;#039;ngular - [https://angular.io/ Angular]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039;ode.js - [https://nodejs.org Node]&lt;br /&gt;
&lt;br /&gt;
=== What do we have on board? ⌘===&lt;br /&gt;
* The Mean Stack is&lt;br /&gt;
** a &amp;#039;&amp;#039;&amp;#039;fullstack javascript framework&amp;#039;&amp;#039;&amp;#039; built with MongoDB, Express.js, Angular.js, Node.js&lt;br /&gt;
** a solution that helps you build &amp;#039;&amp;#039;&amp;#039;fast, robust, and maintainable&amp;#039;&amp;#039;&amp;#039; production web applications&lt;br /&gt;
[[File:Mean_stack.gif]]&lt;br /&gt;
&lt;br /&gt;
=== Why do we need it? ⌘===&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Flexibility, simplicity, and performance&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* When the &amp;#039;&amp;#039;&amp;#039;simplicity and common structure&amp;#039;&amp;#039;&amp;#039; make our life easier&lt;br /&gt;
* A &amp;#039;&amp;#039;&amp;#039;clean, coherent mechanism&amp;#039;&amp;#039;&amp;#039; for moving data from user to disk farm and back again&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;MongoDB&amp;#039;&amp;#039;&amp;#039; offers a more &amp;#039;&amp;#039;&amp;#039;flexible, accommodating layer&amp;#039;&amp;#039;&amp;#039; for storing data&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Node.js&amp;#039;&amp;#039;&amp;#039; provides a better nexus for running our server&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Express&amp;#039;&amp;#039;&amp;#039; helps &amp;#039;&amp;#039;&amp;#039;standardize how we build&amp;#039;&amp;#039;&amp;#039; our websites&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Angular&amp;#039;&amp;#039;&amp;#039; provides a clean way of adding &amp;#039;&amp;#039;&amp;#039;interactive functions and AJAX-driven rich components&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== The reasons in more depth ⌘===&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Cloud&amp;#039;&amp;#039;&amp;#039; orientated MongoDB&lt;br /&gt;
* The &amp;#039;&amp;#039;&amp;#039;server layer simplified&amp;#039;&amp;#039;&amp;#039; with Node.js&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Isomorphic&amp;#039;&amp;#039;&amp;#039; code&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;JSON&amp;#039;&amp;#039;&amp;#039; everywhere&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Superfast&amp;#039;&amp;#039;&amp;#039; is Node.js, indeed&lt;br /&gt;
* Angular is &amp;#039;&amp;#039;&amp;#039;modern&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==== Cloud orientated MongoDB ⌘====&lt;br /&gt;
* MEAN stack offers a &amp;#039;&amp;#039;&amp;#039;compelling database layer&amp;#039;&amp;#039;&amp;#039; in MongoDB, if our web app plans include &amp;#039;&amp;#039;&amp;#039;embedding it in the cloud&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Modern database equipped with: automatic &amp;#039;&amp;#039;&amp;#039;sharding&amp;#039;&amp;#039;&amp;#039;, full &amp;#039;&amp;#039;&amp;#039;cluster&amp;#039;&amp;#039;&amp;#039; support, &amp;#039;&amp;#039;&amp;#039;failover&amp;#039;&amp;#039;&amp;#039; support and automatic &amp;#039;&amp;#039;&amp;#039;replication&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* MongoDB&amp;#039;s document structure is &amp;#039;&amp;#039;&amp;#039;far more flexible&amp;#039;&amp;#039;&amp;#039; (projects in flux and dealing with data which is tricky to constrain in table form)&lt;br /&gt;
** To compare, MySQL’s structure is confining (tables and their normalization requirements, etc)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Cheap disk space&amp;#039;&amp;#039;&amp;#039; (multiple terabytes rather then megabytes)&lt;br /&gt;
** Relational DBs have JOINs to save disk space, but they can be tricky and hard on RAM&lt;br /&gt;
** Some database designers end up de-normalizing their data because the JOINs are too slow&lt;br /&gt;
&lt;br /&gt;
==== The server layer simplified with Node.js ⌘====&lt;br /&gt;
* Navigating the various layers of the LAMP stack can be difficult - shuffling through various config files with differing syntax&lt;br /&gt;
* Node.js put this kind of pipework &amp;#039;&amp;#039;&amp;#039;all in one place, all in one language, all in one pile of logic&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Changes how our &amp;#039;&amp;#039;&amp;#039;app routes requests&amp;#039;&amp;#039;&amp;#039;, with small js code and the rest is handled by Node.js&lt;br /&gt;
** Changes the logic used to &amp;#039;&amp;#039;&amp;#039;answer queries&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Rewrites URLs or constructs an odd mapping &lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Less different documentations&amp;#039;&amp;#039;&amp;#039; references&lt;br /&gt;
** No more different config files for everything &lt;br /&gt;
* Having everything in one layer means&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;less confusion&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;less chance of strange bugs&amp;#039;&amp;#039;&amp;#039; created by weird interactions between multiple layers&lt;br /&gt;
&lt;br /&gt;
==== Isomorphic code ⌘====&lt;br /&gt;
[[File:All_in_js.jpg|500px]]&lt;br /&gt;
&lt;br /&gt;
==== Isomorphic code con&amp;#039;t ⌘====&lt;br /&gt;
* By going MEAN, we can enjoy that &amp;#039;&amp;#039;&amp;#039;same JavaScript on the client and the server&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Leave behind the LAMP stack’s client/server schizophrenia&lt;br /&gt;
* If we write code for Node and decide it’s better placed in Angular&lt;br /&gt;
** We can move it over with ease&lt;br /&gt;
** And we run it the same way&lt;br /&gt;
* Programming MEAN-based apps is &amp;#039;&amp;#039;&amp;#039;significantly easier&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Staffing up a project&lt;br /&gt;
** No need to look for a PHP expert and a JavaScript expert&lt;br /&gt;
** Or a front-end and a back-end specialist&lt;br /&gt;
** Instead, it’s &amp;#039;&amp;#039;&amp;#039;all JavaScript across the stack&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==== JSON everywhere ⌘====&lt;br /&gt;
[[File:Json_everywhere.jpg|450px]]&lt;br /&gt;
&lt;br /&gt;
==== JSON everywhere con&amp;#039;t ⌘====&lt;br /&gt;
* Angular and MongoDB both &amp;#039;&amp;#039;&amp;#039;speak JSON&amp;#039;&amp;#039;&amp;#039;, as do Node.js and Express&lt;br /&gt;
* The data flows neatly among all the layers &amp;#039;&amp;#039;&amp;#039;without rewriting or reformatting&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* MEAN uses &amp;#039;&amp;#039;&amp;#039;the same JSON format for data everywhere&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Which makes it &amp;#039;&amp;#039;&amp;#039;simpler&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;saves time&amp;#039;&amp;#039;&amp;#039; reformatting as it passes through each layer&lt;br /&gt;
* JSON’s ubiquity through the MEAN stack makes &amp;#039;&amp;#039;&amp;#039;working with external APIs that much easier&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** GET, manipulate, present, POST, and store &amp;#039;&amp;#039;&amp;#039;all with one format&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* MySQL’s native format for answering queries is not reusable&lt;br /&gt;
* PHP already has the code to import MySQL data and make it easy to process&lt;br /&gt;
** But that doesn’t help the client layer&lt;br /&gt;
* Of course there are so many well-tested PHP libraries that convert the data easily&lt;br /&gt;
** But it all seems a bit inefficient and confusing&lt;br /&gt;
&lt;br /&gt;
==== Superfast is Node.js, indeed ⌘====&lt;br /&gt;
[[File:Nodejs_jedi.jpg|500px]]&lt;br /&gt;
&lt;br /&gt;
==== Superfast is Node.js, indeed con&amp;#039;t ⌘====&lt;br /&gt;
* These days Node.js is often &amp;#039;&amp;#039;&amp;#039;flat out faster than Apache&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** A number of benchmarks show that Node.js &amp;#039;&amp;#039;&amp;#039;offers better performance, while doing much more&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Node.js &amp;#039;&amp;#039;&amp;#039;event-driven architecture is quicker&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Shaving even milliseconds off our app’s performance is important and Node.js can do that&lt;br /&gt;
** While offering a Turing-complete &amp;#039;&amp;#039;&amp;#039;mechanism for reprogramming it&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Dominant platforms like WordPress or Drupal have great libraries of php code&lt;br /&gt;
* Node.js has NPM, package manager, which makes it even &amp;#039;&amp;#039;&amp;#039;easier to share code&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** The public repositories targeting Node.js are growing quickly&lt;br /&gt;
&lt;br /&gt;
==== Angular is modern ⌘====&lt;br /&gt;
[[File:Angufresh2.png|350px]]&lt;br /&gt;
&lt;br /&gt;
==== Angular is modern con&amp;#039;t ⌘====&lt;br /&gt;
* LAMP doesn’t include an analog to &amp;#039;&amp;#039;&amp;#039;A&amp;#039;&amp;#039;&amp;#039; in &amp;#039;&amp;#039;MEAN&amp;#039;&amp;#039;&lt;br /&gt;
** If we want to do anything on the client side, we’re on our own&lt;br /&gt;
** There are plenty of good PHP-based frameworks that work with MySQL: WordPress, Joomla, Drupal, etc&lt;br /&gt;
*** Each is a bit different and moving in its own direction&lt;br /&gt;
*** They offer differing strategies, and it’s hard to switch between them, let alone port code from one to the other&lt;br /&gt;
* Anointing &amp;#039;&amp;#039;&amp;#039;one client framework&amp;#039;&amp;#039;&amp;#039; adds &amp;#039;&amp;#039;&amp;#039;consistency and stability&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==== Angular is modern con&amp;#039;t 2 ⌘====&lt;br /&gt;
* Angular was built by folks with &amp;#039;&amp;#039;&amp;#039;20 years of experience&amp;#039;&amp;#039;&amp;#039; building web apps&lt;br /&gt;
** They knew well enough to leave the &amp;#039;&amp;#039;&amp;#039;design work&amp;#039;&amp;#039;&amp;#039; to HTML and CSS&lt;br /&gt;
** They also figured out how to add a bit of JavaScript to &amp;#039;&amp;#039;&amp;#039;scan the HTML&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** They looked at what humans do well, then tailored the &amp;#039;&amp;#039;&amp;#039;JavaScript to support the humans&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** The &amp;#039;&amp;#039;&amp;#039;templating system&amp;#039;&amp;#039;&amp;#039; and the &amp;#039;&amp;#039;&amp;#039;logic layers&amp;#039;&amp;#039;&amp;#039; are dramatically &amp;#039;&amp;#039;&amp;#039;cleaner&amp;#039;&amp;#039;&amp;#039; than what we’ve seen before&lt;br /&gt;
*** They figured out simpler ways to leverage the local power of JavaScript to guess what we are doing (UI)&lt;br /&gt;
&lt;br /&gt;
==== Not only alternatives ⌘====&lt;br /&gt;
* Facebook&amp;#039;s Reactjs - [https://reactjs.org/ React]&lt;br /&gt;
* Emberjs - [https://emberjs.com/ Ember] (wanna see the real-life example?)&lt;br /&gt;
* Vuejs - [https://vuejs.org/ Vue]&lt;br /&gt;
* &amp;quot; &amp;lt;big&amp;gt;&amp;#039;&amp;#039;&amp;#039;****&amp;#039;&amp;#039;&amp;#039;&amp;lt;/big&amp;gt; &amp;quot; - take a noun, add &amp;quot;.js&amp;quot; and probably it will be existing library already there (-;&lt;br /&gt;
&lt;br /&gt;
== MEAN quick-starters ⌘==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Mean.io&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** [https://github.com/linnovate/mean Mean.io stack]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Bitnami&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** [https://bitnami.com/stack/mean Bitnami&amp;#039;s mean stack]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Mean.js&amp;#039;&amp;#039;&amp;#039; (atm AngularJS only)&lt;br /&gt;
** [http://meanjs.org/ Meanjs]&lt;br /&gt;
&lt;br /&gt;
== Our Course Plan ⌘==&lt;br /&gt;
&lt;br /&gt;
In overall&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Angular&amp;#039;&amp;#039;&amp;#039; will appear in all of the 5 days, each day providing something new and meaningful&lt;br /&gt;
* Also each day will provide something more extended and more difficult, what can be done with Angular&lt;br /&gt;
* We will cover&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Angular&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;Typescript&amp;#039;&amp;#039;&amp;#039; basics and later we will extend it&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;node.js&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;express.js&amp;#039;&amp;#039;&amp;#039; (also other useful related node-based &amp;#039;&amp;#039;middle-wares&amp;#039;&amp;#039; from npm community)&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Mongodb&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;Mongoose.js&amp;#039;&amp;#039;&amp;#039; (also simpler node-based db connectors like &amp;#039;&amp;#039;mongodb&amp;#039;&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
=== Our Course Plan in more details per day ⌘===&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Day1&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;Day2&amp;#039;&amp;#039;&amp;#039; - mostly &amp;#039;&amp;#039;Typescript&amp;#039;&amp;#039; and our &amp;#039;&amp;#039;Angular&amp;#039;&amp;#039; first basic applications&lt;br /&gt;
#* [[Angular_Fundamentals|Angular and Typescript]]&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Day3&amp;#039;&amp;#039;&amp;#039; - mainly &amp;#039;&amp;#039;nodejs&amp;#039;&amp;#039; and express.js, at the end we will connect it with &amp;#039;&amp;#039;Angular&amp;#039;&amp;#039;&lt;br /&gt;
#* [[Nodejs|Node.js and Express.js materials]]&lt;br /&gt;
#* Nodejs [[Nodejs#Exercises.2C_Examples|exercise]]&lt;br /&gt;
#* Express [[Express|exercise]]&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Day4&amp;#039;&amp;#039;&amp;#039; - largely &amp;#039;&amp;#039;mongodb&amp;#039;&amp;#039;, then we will connect it with &amp;#039;&amp;#039;node.js&amp;#039;&amp;#039; and &amp;#039;&amp;#039;express.js&amp;#039;&amp;#039;, at the end again &amp;#039;&amp;#039;Angular&amp;#039;&amp;#039; part will follow&lt;br /&gt;
#* [[MongoDB_for_Developers|MongoDB]]&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Day5&amp;#039;&amp;#039;&amp;#039; - more advanced features of Angular and it&amp;#039;s additional &amp;#039;&amp;#039;libraries/extensions&amp;#039;&amp;#039; like animations/angularmaterials/etc&lt;br /&gt;
#* Building &amp;#039;&amp;#039;restfull CRUD&amp;#039;&amp;#039; application with MEAN stack&lt;br /&gt;
#** [[MEAN_Stack_Exercises|mean exercise]]&lt;br /&gt;
#* &amp;#039;&amp;#039;Testing&amp;#039;&amp;#039; our apps&lt;br /&gt;
#* And if the time will allow - &amp;#039;&amp;#039;chat&amp;#039;&amp;#039; application with &amp;#039;&amp;#039;socket.io&amp;#039;&amp;#039;&lt;/div&gt;</summary>
		<author><name>Lsokolowski</name></author>
	</entry>
</feed>