Skip to content

Commit 41cda5d

Browse files
author
Your Name
committed
Merge branch '2-express-engine-finished'
# Please enter a commit message to explain why this merge is necessary, # especially if it merges an updated upstream into a topic branch. # # Lines starting with '#' will be ignored, and an empty message aborts # the commit.
2 parents 7601404 + 58b720c commit 41cda5d

30 files changed

+5449
-2351
lines changed

.firebaserc

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"projects": {
3+
"default": "angular-universal-course-ebcc3"
4+
}
5+
}

.gitignore

+10-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,13 @@
22

33
# compiled output
44
/dist
5+
/functions/dist
6+
/functions/dist-server
7+
/functions/node_modules
8+
9+
/firebase-debug.log
10+
/functions/lib
11+
512
/tmp
613
/out-tsc
714

@@ -42,4 +49,6 @@ testem.log
4249
Thumbs.db
4350

4451
dist-server
45-
./prerender.html
52+
prerender.html
53+
54+
dist-server

db-data.json

+43-110
Original file line numberDiff line numberDiff line change
@@ -1,74 +1,35 @@
11
{
2-
"courses": [
3-
{
4-
"id": "1",
5-
"description": "Angular for Beginners",
6-
"iconUrl": "https://angular-academy.s3.amazonaws.com/thumbnails/angular2-for-beginners-small-v2.png",
2+
"courses": {
3+
"01": {
4+
"id": "01",
5+
"description": "Angular Universal Course",
6+
"iconUrl": "https://s3-us-west-1.amazonaws.com/angular-university/course-images/angular-universal-small.png",
77
"courseListIcon": "https://angular-academy.s3.amazonaws.com/main-logo/main-page-logo-small-hat.png",
8-
"longDescription": "Establish a solid layer of fundamentals, learn what's under the hood of Angular",
8+
"longDescription": "Use Angular on the server too! Learn Angular Server-Side Rendering.",
99
"category": "BEGINNER",
1010
"lessonsCount": 10
1111
},
12-
{
13-
"id": "2",
12+
"02": {
13+
"id": "02",
1414
"description": "Angular Security Course - Web Security Fundamentals",
1515
"longDescription": "Learn Web Security Fundamentals and apply them to defend an Angular / Node Application from multiple types of attacks.",
1616
"iconUrl": "https://s3-us-west-1.amazonaws.com/angular-university/course-images/security-cover-small-v2.png",
1717
"courseListIcon": "https://s3-us-west-1.amazonaws.com/angular-university/course-images/lock-v2.png",
1818
"category": "ADVANCED",
1919
"lessonsCount": 11
2020
},
21-
{
22-
"id": "3",
21+
"03": {
22+
"id": "03",
2323
"description": "Angular PWA - Progressive Web Apps Course",
24-
"longDescription": "<p class='course-description'>Learn Angular Progressive Web Applications, build the future of the Web Today.",
24+
"longDescription": "Learn Angular Progressive Web Applications, build the future of the Web Today.",
2525
"iconUrl": "https://s3-us-west-1.amazonaws.com/angular-university/course-images/angular-pwa-course.png",
2626
"courseListIcon": "https://s3-us-west-1.amazonaws.com/angular-university/course-images/alien.png",
2727
"category": "ADVANCED",
2828
"lessonsCount": 8
29-
},
30-
{
31-
"id": "4",
32-
"description": "Angular NgRx Store Reactive Extensions Architecture Course",
33-
"longDescription": "Learn how to the Angular NgRx Reactive Extensions and its Tooling to build a complete application.",
34-
"iconUrl": "https://angular-academy.s3.amazonaws.com/thumbnails/ngrx-angular.png",
35-
"courseListIcon": "https://angular-academy.s3.amazonaws.com/thumbnails/ngrx-small.png",
36-
"category": "ADVANCED"
37-
},
38-
{
39-
"id": "5",
40-
"description": "Angular Advanced Library Laboratory: Build Your Own Library",
41-
"longDescription": "Learn Advanced Angular functionality typically used in Library Development. Advanced Components, Directives, Testing, Npm",
42-
"iconUrl": "https://angular-academy.s3.amazonaws.com/thumbnails/advanced_angular-small-v3.png",
43-
"courseListIcon": "https://angular-academy.s3.amazonaws.com/thumbnails/angular-advanced-lesson-icon.png",
44-
"category": "ADVANCED"
45-
},
46-
{
47-
"id": "6",
48-
"description": "The Complete Typescript Course",
49-
"longDescription": "Complete Guide to Typescript From Scratch: Learn the language in-depth and use it to build a Node REST API.",
50-
"iconUrl": "https://angular-academy.s3.amazonaws.com/thumbnails/typescript-2-small.png",
51-
"courseListIcon": "https://angular-academy.s3.amazonaws.com/thumbnails/typescript-2-lesson.png",
52-
"category": "BEGINNER"
53-
},
54-
{
55-
"id": "7",
56-
"description": "Rxjs and Reactive Patterns Angular Architecture Course",
57-
"longDescription": "Learn the core RxJs Observable Pattern as well and many other Design Patterns for building Reactive Angular Applications.",
58-
"iconUrl": "https://s3-us-west-1.amazonaws.com/angular-academy/blog/images/rxjs-reactive-patterns-small.png",
59-
"courseListIcon": "https://angular-academy.s3.amazonaws.com/course-logos/observables_rxjs.png",
60-
"category": "BEGINNER"
61-
},
62-
{
63-
"id": "8",
64-
"description": "Angular Material Course",
65-
"iconUrl": "https://s3-us-west-1.amazonaws.com/angular-university/course-images/material_design.png",
66-
"longDescription": "Build Applications with the official Angular Widget Library",
67-
"category": "ADVANCED"
6829
}
69-
],
30+
},
7031
"lessons": {
71-
"1": [
32+
"01": [
7233
{
7334
"id": "01",
7435
"description": "Angular Tutorial For Beginners - Build Your First App - Hello World Step By Step",
@@ -80,201 +41,173 @@
8041
"id": "02",
8142
"description": "Building Your First Component - Component Composition",
8243
"duration": "2:07",
83-
"seqNo": 2,
84-
"courseId": "1"
44+
"seqNo": 2
8545
},
8646
{
8747
"id": "03",
8848
"description": "Component @Input - How To Pass Input Data To an Component",
8949
"duration": "2:33",
90-
"seqNo": 3,
91-
"courseId": "1"
50+
"seqNo": 3
9251
},
9352
{
9453
"id": "04",
9554
"description": " Component Events - Using @Output to create custom events",
9655
"duration": "4:44",
97-
"seqNo": 4,
98-
"courseId": "1"
56+
"seqNo": 4
9957
},
10058
{
10159
"id": "05",
10260
"description": " Component Templates - Inline Vs External",
10361
"duration": "2:55",
104-
"seqNo": 5,
105-
"courseId": "1"
62+
"seqNo": 5
10663
},
10764
{
10865
"id": "06",
10966
"description": "Styling Components - Learn About Component Style Isolation",
11067
"duration": "3:27",
111-
"seqNo": 6,
112-
"courseId": "1"
68+
"seqNo": 6
11369
},
11470
{
11571
"id": "07",
11672
"description": " Component Interaction - Extended Components Example",
11773
"duration": "9:22",
118-
"seqNo": 7,
119-
"courseId": "1"
74+
"seqNo": 7
12075
},
12176
{
12277
"id": "08",
12378
"description": " Components Tutorial For Beginners - Components Exercise !",
12479
"duration": "1:26",
125-
"seqNo": 8,
126-
"courseId": "1"
80+
"seqNo": 8
12781
},
12882
{
12983
"id": "09",
13084
"description": " Components Tutorial For Beginners - Components Exercise Solution Inside",
13185
"duration": "2:08",
132-
"seqNo": 9,
133-
"courseId": "1"
86+
"seqNo": 9
13487
},
13588
{
13689
"id": "10",
13790
"description": " Directives - Inputs, Output Event Emitters and How To Export Template References",
13891
"duration": "4:01",
139-
"seqNo": 10,
140-
"courseId": "1"
92+
"seqNo": 10
14193
}
14294
],
143-
"2": [
95+
"02": [
14496
{
14597
"id": "11",
14698
"description": "Course Helicopter View",
14799
"duration": "08:19",
148-
"seqNo": 1,
149-
"courseId": "2"
100+
"seqNo": 1
150101
},
151102
{
152103
"id": "12",
153104
"description": "Installing Git, Node, NPM and Choosing an IDE",
154105
"duration": "04:17",
155-
"seqNo": 2,
156-
"courseId": "2"
106+
"seqNo": 2
157107
},
158108
{
159109
"id": "13",
160110
"description": "Installing The Lessons Code - Learn Why Its Essential To Use NPM 5",
161111
"duration": "06:05",
162-
"seqNo": 3,
163-
"courseId": "2"
112+
"seqNo": 3
164113
},
165114
{
166115
"id": "14",
167116
"description": "How To Run Node In TypeScript With Hot Reloading",
168117
"duration": "03:57",
169-
"seqNo": 4,
170-
"courseId": "2"
118+
"seqNo": 4
171119
},
172120
{
173121
"id": "15",
174122
"description": "Guided Tour Of The Sample Application",
175123
"duration": "06:00",
176-
"seqNo": 5,
177-
"courseId": "2"
124+
"seqNo": 5
178125
},
179126
{
180127
"id": "16",
181128
"description": "Client Side Authentication Service - API Design",
182129
"duration": "04:53",
183-
"seqNo": 6,
184-
"courseId": "2"
130+
"seqNo": 6
185131
},
186132
{
187133
"id": "17",
188134
"description": "Client Authentication Service - Design and Implementation",
189135
"duration": "09:14",
190-
"seqNo": 7,
191-
"courseId": "2"
136+
"seqNo": 7
192137
},
193138
{
194139
"id": "18",
195140
"description": "The New Angular HTTP Client - Doing a POST Call To The Server",
196141
"duration": "06:08",
197-
"seqNo": 8,
198-
"courseId": "2"
142+
"seqNo": 8
199143
},
200144
{
201145
"id": "19",
202146
"description": "User Sign Up Server-Side Implementation in Express",
203147
"duration": "08:50",
204-
"seqNo": 9,
205-
"courseId": "2"
148+
"seqNo": 9
206149
},
207150
{
208151
"id": "20",
209152
"description": "Introduction To Cryptographic Hashes - A Running Demo",
210153
"duration": "05:46",
211-
"seqNo": 10,
212-
"courseId": "2"
154+
"seqNo": 10
213155
},
214156
{
215157
"id": "21",
216158
"description": "Some Interesting Properties Of Hashing Functions - Validating Passwords",
217159
"duration": "06:31",
218-
"seqNo": 11,
219-
"courseId": "2"
160+
"seqNo": 11
220161
}
221162
],
222-
"3": [
163+
"03": [
223164
{
224165
"id": "22",
225166
"description": "Course Kick-Off - Install Node, NPM, IDE And Service Workers Section Code",
226167
"duration": "07:19",
227-
"seqNo": 1,
228-
"courseId": "3"
168+
"seqNo": 1
229169
},
230170
{
231171
"id": "23",
232172
"description": "Service Workers In a Nutshell - Service Worker Registration",
233173
"duration": "6:59",
234-
"seqNo": 2,
235-
"courseId": "3"
174+
"seqNo": 2
236175
},
237176
{
238177
"id": "24",
239178
"description": "Service Workers Hello World - Lifecycle Part 1 and PWA Chrome Dev Tools",
240179
"duration": "7:28",
241-
"seqNo": 3,
242-
"courseId": "3"
180+
"seqNo": 3
243181
},
244182
{
245183
"id": "25",
246184
"description": "Service Workers and Application Versioning - Install & Activate Lifecycle Phases",
247185
"duration": "10:17",
248-
"seqNo": 4,
249-
"courseId": "3"
186+
"seqNo": 4
250187
},
251188
{
252189
"id": "26",
253190
"description": "Downloading The Offline Page - The Service Worker Installation Phase",
254191
"duration": "09:50",
255-
"seqNo": 5,
256-
"courseId": "3"
192+
"seqNo": 5
257193
},
258194
{
259195
"id": "27",
260196
"description": "Introduction to the Cache Storage PWA API",
261197
"duration": "04:44",
262-
"seqNo": 6,
263-
"courseId": "3"
198+
"seqNo": 6
264199
},
265200
{
266201
"id": "28",
267202
"description": "View Service Workers HTTP Interception Features In Action",
268203
"duration": "06:07",
269-
"seqNo": 7,
270-
"courseId": "3"
204+
"seqNo": 7
271205
},
272206
{
273207
"id": "29",
274208
"description": "Service Workers Error Handling - Serving The Offline Page",
275209
"duration": "5:38",
276-
"seqNo": 8,
277-
"courseId": "3"
210+
"seqNo": 8
278211
}
279212
]
280213
}

firebase.json

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
"hosting": {
3+
"public": "dist",
4+
"ignore": [
5+
"firebase.json",
6+
"**/.*",
7+
"**/node_modules/**"
8+
],
9+
"rewrites": [
10+
{
11+
"source": "**",
12+
"function": "ssrApp"
13+
}
14+
]
15+
},
16+
"functions": {
17+
"predeploy": "npm --prefix \"$RESOURCE_DIR\" run build"
18+
}
19+
}

0 commit comments

Comments
 (0)