-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
550 lines (520 loc) · 42.5 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
<!DOCTYPE html>
<html prefix="og: https://ogp.me/ns#">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<meta name="description" content="Este es mi proyecto de fin de curso: se trata de una aplicación en node.js con base de datos Mongo en un cloud y deplegada en un entorno de producción con Heroku" />
<meta name="author" content="Borja Blanco Rey" />
<meta property="og:image" content="https://borjadb.github.io/assets/img/portfolio/imgDemo.png" />
<!-- Previsualizar -->
</head>
<title>Demo aplicación de notas</title>
<!-- Favicon-->
<link rel="icon" type="image/x-icon" href="assets/img/favicon.ico" />
<!-- Font Awesome icons (free version)-->
<script src="https://use.fontawesome.com/releases/v5.13.0/js/all.js" crossorigin="anonymous"></script>
<!-- Google fonts-->
<link href="https://fonts.googleapis.com/css?family=Montserrat:400,700" rel="stylesheet" type="text/css" />
<link href="https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic" rel="stylesheet" type="text/css" />
<!-- Core theme CSS (includes Bootstrap)-->
<link href="css/styles.css" rel="stylesheet" />
</head>
<body id="page-top">
<!-- Navigation-->
<nav class="navbar navbar-expand-lg bg-secondary text-uppercase fixed-top" id="mainNav">
<div class="container">
<a class="navbar-brand js-scroll-trigger" href="#page-top">Demo aplicación de Notas</a><button class="navbar-toggler navbar-toggler-right text-uppercase font-weight-bold bg-primary text-white rounded" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">Menu <i class="fas fa-bars"></i></button>
<div class="collapse navbar-collapse" id="navbarResponsive">
<ul class="navbar-nav ml-auto">
<li class="nav-item mx-0 mx-lg-1"><a class="nav-link py-3 px-0 px-lg-3 rounded js-scroll-trigger" href="#portfolio">Portfolio</a></li>
<li class="nav-item mx-0 mx-lg-1"><a class="nav-link py-3 px-0 px-lg-3 rounded js-scroll-trigger" href="#about">About</a></li>
<li class="nav-item mx-0 mx-lg-1"><a class="nav-link py-3 px-0 px-lg-3 rounded js-scroll-trigger" href="#contact">Contact</a></li>
</ul>
</div>
</div>
</nav>
<!-- Masthead-->
<header class="masthead bg-primary text-white text-center">
<div class="container d-flex align-items-center flex-column">
<!-- Masthead Avatar Image<img class="masthead-avatar mb-5" src="assets/img/nodejslogo.png" alt="" />Masthead Heading-->
<h1 class="masthead-heading text-uppercase mb-0">EasyNote</h1>
<!-- Icon Divider-->
<div class="divider-custom divider-light">
<div class="divider-custom-line"></div>
<div class="divider-custom-icon"><i class="fas fa-star"></i></div>
<div class="divider-custom-line"></div>
</div>
<!-- Masthead Subheading-->
<p class="masthead-subheading font-weight-light mb-0">Desarrollo e implentación de una aplicación de notas realizada con node.js, sincronizada con Mongo Atlas y desplegada en un entorno de producción con Heroku </p>
</div>
</header>
<!-- Portfolio Section-->
<section class="page-section portfolio" id="portfolio">
<div class="container">
<!-- Portfolio Section Heading-->
<h2 class="page-section-heading text-center text-uppercase text-secondary mb-0">Implementación</h2>
<!-- Icon Divider-->
<div class="divider-custom">
<div class="divider-custom-line"></div>
<div class="divider-custom-icon"><i class="fas fa-star"></i></div>
<div class="divider-custom-line"></div>
</div>
<!-- Portfolio Grid Items-->
<div class="row">
<!-- Portfolio Item 1-->
<div class="col-md-3 col-lg-3 mb-3">
<div class="portfolio-item mx-auto" data-toggle="modal" data-target="#portfolioModal1">
<div class="portfolio-item-caption d-flex align-items-center justify-content-center h-100 w-100">
<div class="portfolio-item-caption-content text-center text-white"><i class="fas fa-plus fa-3x"></i></div>
</div>
<img class="img-fluid" src="assets/img/portfolio/mongo.png" alt="" />
</div>
</div>
<!-- Portfolio Item 2-->
<div class="col-md-3 col-lg-3 mb-3">
<div class="portfolio-item mx-auto" data-toggle="modal" data-target="#portfolioModal2">
<div class="portfolio-item-caption d-flex align-items-center justify-content-center h-100 w-100">
<div class="portfolio-item-caption-content text-center text-white"><i class="fas fa-plus fa-3x"></i></div>
</div>
<img class="img-fluid" src="assets/img/portfolio/node.png" alt="" />
</div>
</div>
<!-- Portfolio Item 3-->
<div class="col-md-3 col-lg-3 mb-3">
<div class="portfolio-item mx-auto" data-toggle="modal" data-target="#portfolioModal3">
<div class="portfolio-item-caption d-flex align-items-center justify-content-center h-100 w-100">
<div class="portfolio-item-caption-content text-center text-white"><i class="fas fa-plus fa-3x"></i></div>
</div>
<img class="img-fluid" src="assets/img/portfolio/easy.png" alt="" />
</div>
</div>
<!-- Portfolio Item 4-->
<div class="col-md-3 col-lg-3 mb-3 mb-lg-0">
<div class="portfolio-item mx-auto" data-toggle="modal" data-target="#portfolioModal4">
<div class="portfolio-item-caption d-flex align-items-center justify-content-center h-100 w-100">
<div class="portfolio-item-caption-content text-center text-white"><i class="fas fa-plus fa-3x"></i></div>
</div>
<img class="img-fluid" src="assets/img/portfolio/githublogo.png" alt="" />
</div>
</div>
<!-- Portfolio Item 5-->
<div class="col-md-3 col-lg-3 mb-3 mb-md-0">
<div class="portfolio-item mx-auto" data-toggle="modal" data-target="#portfolioModal5">
<div class="portfolio-item-caption d-flex align-items-center justify-content-center h-100 w-100">
<div class="portfolio-item-caption-content text-center text-white"><i class="fas fa-plus fa-3x"></i></div>
</div>
<img class="img-fluid" src="assets/img/portfolio/herokulogo.png" alt="" />
</div>
</div>
<!-- Portfolio Item 6-->
<div class="col-md-3 col-lg-3">
<div class="portfolio-item mx-auto" data-toggle="modal" data-target="#portfolioModal6">
<div class="portfolio-item-caption d-flex align-items-center justify-content-center h-100 w-100">
<div class="portfolio-item-caption-content text-center text-white"><i class="fas fa-plus fa-3x"></i></div>
</div>
<img class="img-fluid" src="assets/img/portfolio/infologo.jpg" alt="" />
</div>
</div>
</div>
</div>
</section>
<!-- About Section-->
<section class="page-section bg-primary text-white mb-0" id="about">
<div class="container">
<!-- About Section Heading-->
<h2 class="page-section-heading text-center text-uppercase text-white">About</h2>
<!-- Icon Divider-->
<div class="divider-custom divider-light">
<div class="divider-custom-line"></div>
<div class="divider-custom-icon"><i class="fas fa-star"></i></div>
<div class="divider-custom-line"></div>
</div>
<!-- About Section Content-->
<div class="row">
<div class="col-lg-4 ml-auto"><p class="lead">El objetivo de esta web es documentar el desarrallo de una aplicación de notas creada con node.js para el proyecto de fin de Ciclo de DAW del IES Fernando Wirtz Suárez</p></div>
<div class="col-lg-4 mr-auto"><p class="lead">En el siguiente enlace puedes descargar el código y a través de está web consultar toda la información necesaria para su implementación</p></div>
</div>
<!-- About Section Button-->
<div class="text-center mt-4">
<a class="btn btn-xl btn-outline-light" href="https://github.com/borjaDB/Aplicacion-de-notas"><i class="fas fa-download mr-2"></i>GitHub</a>
</div>
</div>
</section>
<!-- Contact Section-->
<section class="page-section" id="contact">
<div class="container">
<!-- Contact Section Heading-->
<h2 class="page-section-heading text-center text-uppercase text-secondary mb-0">Contact Me</h2>
<!-- Icon Divider-->
<div class="divider-custom">
<div class="divider-custom-line"></div>
<div class="divider-custom-icon"><i class="fas fa-star"></i></div>
<div class="divider-custom-line"></div>
</div>
<!-- Contact Section Form-->
<div class="row">
<div class="col-lg-8 mx-auto">
<!-- To configure the contact form email address, go to mail/contact_me.php and update the email address in the PHP file on line 19.-->
<form id="contactForm" name="sentMessage" novalidate="novalidate">
<div class="control-group">
<div class="form-group floating-label-form-group controls mb-0 pb-2">
<label>Name</label><input class="form-control" id="name" type="text" placeholder="Name" required="required" data-validation-required-message="Please enter your name." />
<p class="help-block text-danger"></p>
</div>
</div>
<div class="control-group">
<div class="form-group floating-label-form-group controls mb-0 pb-2">
<label>Email Address</label><input class="form-control" id="email" type="email" placeholder="Email Address" required="required" data-validation-required-message="Please enter your email address." />
<p class="help-block text-danger"></p>
</div>
</div>
<div class="control-group">
<div class="form-group floating-label-form-group controls mb-0 pb-2">
<label>Phone Number</label><input class="form-control" id="phone" type="tel" placeholder="Phone Number" required="required" data-validation-required-message="Please enter your phone number." />
<p class="help-block text-danger"></p>
</div>
</div>
<div class="control-group">
<div class="form-group floating-label-form-group controls mb-0 pb-2">
<label>Message</label><textarea class="form-control" id="message" rows="5" placeholder="Message" required="required" data-validation-required-message="Please enter a message."></textarea>
<p class="help-block text-danger"></p>
</div>
</div>
<br />
<div id="success"></div>
<div class="form-group"><button class="btn btn-primary btn-xl" id="sendMessageButton" type="submit">Send</button></div>
</form>
</div>
</div>
</div>
</section>
<!-- Footer-->
<footer class="footer text-center">
<div class="container">
<div class="row">
<!-- Footer Location-->
<div class="col-lg-4 mb-5 mb-lg-0">
<h4 class="text-uppercase mb-4">Ubicación</h4>
<p class="lead mb-0">Borja Blanco Rey<br />[email protected]</p>
</div>
<!-- Footer Social Icons-->
<div class="col-lg-4 mb-5 mb-lg-0">
<h4 class="text-uppercase mb-4">RRSS</h4>
<a class="btn btn-outline-light btn-social mx-1" href="#!"><i class="fab fa-fw fa-facebook-f"></i></a><a class="btn btn-outline-light btn-social mx-1" href="#!"><i class="fab fa-fw fa-twitter"></i></a><a class="btn btn-outline-light btn-social mx-1" href="#!"><i class="fab fa-fw fa-linkedin-in"></i></a><a class="btn btn-outline-light btn-social mx-1" href="#!"><i class="fab fa-fw fa-dribbble"></i></a>
</div>
<!-- Footer About Text-->
<div class="col-lg-4">
<h4 class="text-uppercase mb-4">Sobre esta web</h4>
<p class="lead mb-0">Esta página ha sido creada usando una platilla gratuita de Bootstrap <a href="http://startbootstrap.com">Start Bootstrap</a>.</p>
</div>
</div>
</div>
</footer>
<!-- Copyright Section-->
<div class="copyright py-4 text-center text-white">
<div class="container"><small>Copyright © Your Website 2020</small></div>
</div>
<!-- Scroll to Top Button (Only visible on small and extra-small screen sizes)-->
<div class="scroll-to-top d-lg-none position-fixed">
<a class="js-scroll-trigger d-block text-center text-white rounded" href="#page-top"><i class="fa fa-chevron-up"></i></a>
</div>
<!-- Portfolio Modals--><!-- Portfolio Modal 1-->
<div class="portfolio-modal modal fade" id="portfolioModal1" tabindex="-1" role="dialog" aria-labelledby="portfolioModal1Label" aria-hidden="true">
<div class="modal-dialog modal-xl" role="document">
<div class="modal-content">
<button class="close" type="button" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true"><i class="fas fa-times"></i></span>
</button>
<div class="modal-body text-center">
<div class="container">
<div class="row justify-content-center">
<div class="col-lg-8">
<!-- Portfolio Modal - Title-->
<h2 class="portfolio-modal-title text-secondary text-uppercase mb-0" id="portfolioModal1Label">Instalación Base de datos</h2>
<!-- Icon Divider-->
<div class="divider-custom">
<div class="divider-custom-line"></div>
<div class="divider-custom-icon"><i class="fas fa-star"></i></div>
<div class="divider-custom-line"></div>
</div>
<!-- Portfolio Modal - Image--><img class="img-fluid rounded mb-5" src="assets/img/portfolio/mongo.png" alt="" /><!-- Portfolio Modal - Text-->
<p class="mb-5">Para instalar la version gratuita de mongodb, en esta caso la Community Edition he seguido los pasos del siguiente enlace: <a href="https://docs.mongodb.com/manual/adnistration/install-on-linux/https://docs.mongodb.com/compass/master/install/" target="_blank">Install Mongo</a></p>
</br>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/showdb.png" alt="" />
<p class="mb-5">Una vez completada la instalación, se comprueba que mongo está instalado correctamente. Se inicia con el comando "mongo". Para ver las BBDD: "show dbs"</p>
<hr></br>
<h2>Instalación Mongo Compass</h2>
<p class="mb-5">La herramienta de trabajo Compass ofrece un entorno gráfico para nuestra base de datos mongo. Su instalación en linux es muy sencilla, simplemente seleccionamos la instalación linux del siguiente enlace: <a href="https://docs.mongodb.com/manual/administration/install-on-linux/" target="_blank">Compass</a></p>
</br>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/compassConnect.png" alt="" />
<p class="mb-5">El panel de control principal muestra la lista de conexiones disponibles. Como la conexión a nuestra base de datos es local pulsamos el botón "connect" dejando el nombre de la conexión en blanco.</p>
</br>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/compassListDb.png" alt="" />
<p class="mb-5">A continuación podemos ver la lista con las bases de datos disponibles. También nos ofrece la posibilidad de crear una nueva base de datos.</p>
<hr></br>
<h2>Atlas - Cloud Mongodb</h2>
<p class="mb-5">Una de las peculiaridades de mongo es su conexión con Atlas, que provee a nuestra base de datos de una infraestructura cloud: <a href="https://www.mongodb.com/cloud/atlas/register">Atlas.</a></p>
</br>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/atlas.png" alt="" />
<p class="mb-5"></p>Tras el registro previo y seleccionado un servidor lo primero será observar el panel de control y ver todas la opciones que ofrece, nos centraremos únicamente en las más importantes.</p>
</br>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/cluster.png" alt="" />
<p class="mb-5">En la imagen se puede ver la creación de un cluster que ofrece alta disponivilidad a la base de datos con tres nodos disponibles. Esta opción es configurable y sobre esta cluster vamos a enlazar nuestra base de datos local.</p>
</br>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/userdb.png" alt="" />
<p class="mb-5">El siguiente paso el la creación de un usuario de aplicación para la base de datos el cual usaremos más adelante para conectar nuestra aplicación. Se le otorgan permisos de administrador de BBDD.</p>
</br>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/networkdb.png" alt="" />
<p class="mb-5">En la pestaña network se indica el acceso a todas la direcciones añadiendo la ip 0.0.0.0/0 con status activo.</p>
</br>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/connectapp.png" alt="" />
<p class="mb-5">Ahora volvemos a la pestaña cluster y realizamos una conexión con nuestra base de datos local, seleccionando la opción de conectar a Compass. </p>
</br>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/driverdb.png" alt="" />
<p class="mb-5">Se copia el conector generado el cual usaremos para realizar la conexión con nuestro entorno local.</p>
</br>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/connectok.png" alt="" />
<p class="mb-5">De vuelta a Compass, se cre una nueva conexión pegando el código de conexión. Una vez realizado se puede observar los 3 nodos del cluster ahora disponibles en el menú de la izquierda.</p>
<p class="mb-5">De esta manera ya tenemos conectada nuestra base de datos en local a Mongo Atlas, por lo que cualquier cambio que hagamos en la base de datos de nuestro cluster lo veremos sincronizado en local y viceversa.</p>
<button class="btn btn-primary" data-dismiss="modal"><i class="fas fa-times fa-fw"></i>Close Window</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Portfolio Modal 2-->
<div class="portfolio-modal modal fade" id="portfolioModal2" tabindex="-1" role="dialog" aria-labelledby="portfolioModal2Label" aria-hidden="true">
<div class="modal-dialog modal-xl" role="document">
<div class="modal-content">
<button class="close" type="button" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true"><i class="fas fa-times"></i></span>
</button>
<div class="modal-body text-center">
<div class="container">
<div class="row justify-content-center">
<div class="col-lg-8">
<!-- Portfolio Modal - Title-->
<h2 class="portfolio-modal-title text-secondary text-uppercase mb-0" id="portfolioModal2Label">Entorno de desarrallo</h2>
<!-- Icon Divider-->
<div class="divider-custom">
<div class="divider-custom-line"></div>
<div class="divider-custom-icon"><i class="fas fa-star"></i></div>
<div class="divider-custom-line"></div>
</div>
<!-- Portfolio Modal - Image--><img class="img-fluid rounded mb-5" src="assets/img/portfolio/node.png" alt="" /><!-- Portfolio Modal - Text-->
<p class="mb-5">El entorno de desarrollo que he utilizado está compuesto por la siguientes herramientas:
<p>Ubuntu 18.04</p>
<p>Visual Studio Code</p>
<p>Mongodb</p>
<p>Mongo Compass</p>
<p>node js</p>
<p>Git</p>
</p>
<p class="mb-5">Además también se han utilizado otras herramientas como es el caso del cloud de Mongo (Atlas), el repositorio web de GitHub y el posterior despliegue en producción con Heroku.</p>
</br>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/versions.png" alt="" />
<p class="mb-5">Lo primero es instalar el gestor de paquetes de node, el npm, el cual nos permiste descargar las dependencias necesarias para nuestra aplicación. </p>
<p class="mb-5"></p>
<p class="mb-5"></p>
<p class="mb-5"></p>
<button class="btn btn-primary" data-dismiss="modal"><i class="fas fa-times fa-fw"></i>Close Window</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Portfolio Modal 3-->
<div class="portfolio-modal modal fade" id="portfolioModal3" tabindex="-1" role="dialog" aria-labelledby="portfolioModal3Label" aria-hidden="true">
<div class="modal-dialog modal-xl" role="document">
<div class="modal-content">
<button class="close" type="button" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true"><i class="fas fa-times"></i></span>
</button>
<div class="modal-body text-center">
<div class="container">
<div class="row justify-content-center">
<div class="col-lg-8">
<!-- Portfolio Modal - Title-->
<h2 class="portfolio-modal-title text-secondary text-uppercase mb-0" id="portfolioModal3Label">Desarrollo app</h2>
<!-- Icon Divider-->
<div class="divider-custom">
<div class="divider-custom-line"></div>
<div class="divider-custom-icon"><i class="fas fa-star"></i></div>
<div class="divider-custom-line"></div>
</div>
<!-- Portfolio Modal - Image--><img class="img-fluid rounded mb-5" src="assets/img/portfolio/easy.png" alt="" /><!-- Portfolio Modal - Text-->
<p class="mb-5"> A continuación se describen algunos de los pasos y clases de código más relevantes de la aplicación. Al final de este hilo se incluye un enlace para descargar el proyecto</p>
<p class="mb-5">Una vez instalados los paquetes necesarios para que nuestra aplicación pueda funcionar se procedera a crear un nuevo proyecto en Visual.</p>
</br>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/versions.png" alt="" />
<p class="mb-5">Se comprueban con el comando --version que los paquetes han sido instalados con éxito.</p>
</br>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/raizrepo.png" alt="" />
<p class="mb-5">En mi caso he creado una carpeta en la raíz de directorio git con el nombre del proyecto NOTE-APP.</p>
</br>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/dirapp.png" alt="" />
<p class="mb-5">Una vez dentro de visual importamos el proyecto que contendría la siguiente estructura completa una vez finalizado..</p>
</br>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/dependencias.png" alt="" />
<p class="mb-5">El package.json es un fichero autogenerado en el cual irán aparenciendo las dependencias que vayamos instalando a lo largo del desarrollo. Siempre que instalemos una dependencia hay que asegurarse de que estamos situados en la consola dentro de la carpeta del proyecto.</p>
</br>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/appindexjs.png" alt="" />
<p class="mb-5">En el momento que hacemos el build de la aplicación index.js es la clase principal que gestiona todos los recursos.</p>
</br>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/appdbjs.png" alt="" />
<p class="mb-5">Database.js es el fichero de configuración con la BBDD. En la función connect se pasa como parametro un String de conexión en caso de que la variable de entorno sea null. Esa variable es la que se usará más adelante para la conexión con Heroku.</p>
</br>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/appdirsViews.png" alt="" />
<p class="mb-5">Otra parte importante son las vistas gestionadas por el motor de plantillas de express.js. La vista principal es el main y el resto de componentes html se incluyen dentro de la vista principal.</p>
</br>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/apppassjs.png" alt="" />
<p class="mb-5">La implementación del login se hace en la clase passport.js. La última función muestra otro ejemplo, en esta caso un findAll contra la base de datos.</p>
</br>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/appusermodel.png" alt="" />
<p class="mb-5">Los modelos suelen representar entidades de base de datos. La clase user.js contiene una lista de atributos de usuario y crea un schema dentro de la base de datos.</p>
</br>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/approutes.png" alt="" />
<p class="mb-5">Todas las rutas de la apliación se gestionan desde los fichero de routes. Justo en las cabeceras de las funciones se escribe el código que hace referencia a estas direcciones</p>
<p class="mb-5">La aplicación completa puede descargarse desde github en el siguiente enlace: <a href="https://github.com/borjaDB/Aplicacion-de-notas"></a>GitHub</p>
</br>
<button class="btn btn-primary" data-dismiss="modal"><i class="fas fa-times fa-fw"></i>Close Window</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Portfolio Modal 4-->
<div class="portfolio-modal modal fade" id="portfolioModal4" tabindex="-1" role="dialog" aria-labelledby="portfolioModal4Label" aria-hidden="true">
<div class="modal-dialog modal-xl" role="document">
<div class="modal-content">
<button class="close" type="button" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true"><i class="fas fa-times"></i></span>
</button>
<div class="modal-body text-center">
<div class="container">
<div class="row justify-content-center">
<div class="col-lg-8">
<!-- Portfolio Modal - Title-->
<h2 class="portfolio-modal-title text-secondary text-uppercase mb-0" id="portfolioModal4Label">GitHub</h2>
<!-- Icon Divider-->
<div class="divider-custom">
<div class="divider-custom-line"></div>
<div class="divider-custom-icon"><i class="fas fa-star"></i></div>
<div class="divider-custom-line"></div>
</div>
<!-- Portfolio Modal - Image--><img class="img-fluid rounded mb-5" src="assets/img/portfolio/githublogo.png" alt="" /><!-- Portfolio Modal - Text-->
<p class="mb-5">Github es el repositorio que almacena el código de nuestra aplicación y gestiona los cambios realizados por uno o varios usuarios. En mi caso, trabajo directamente sobre la rama master.</p>
</br>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/gitportal.png" alt="" />
<p class="mb-5">Lo primero es crear un repositorio en la página de git. Una vez creado el proyecto podemos descargar la url que necesitamos para enlazar git a nuestro proyecto local.</p>
</br>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/gitadd.png" alt="" />
<p class="mb-5">Para hacer un commit abrimos el terminal desde la raiz de proyecto y añadimos el comando add . </p>
</br>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/gitcommit.png" alt="" />
<p class="mb-5">Lo siguiente es hacer un el commit el cual nos indica los cambios realizados.</p>
</br>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/gitpush.png" alt="" />
<p class="mb-5">Por último hay que hacer push. Esto hará que nuestro código fuente en local se actualicé con el repositirio externo.</p>
<p class="mb-5"></p>
<p class="mb-5"></p>
</br>
<button class="btn btn-primary" data-dismiss="modal"><i class="fas fa-times fa-fw"></i>Close Window</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Portfolio Modal 5-->
<div class="portfolio-modal modal fade" id="portfolioModal5" tabindex="-1" role="dialog" aria-labelledby="portfolioModal5Label" aria-hidden="true">
<div class="modal-dialog modal-xl" role="document">
<div class="modal-content">
<button class="close" type="button" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true"><i class="fas fa-times"></i></span>
</button>
<div class="modal-body text-center">
<div class="container">
<div class="row justify-content-center">
<div class="col-lg-8">
<!-- Portfolio Modal - Title-->
<h2 class="portfolio-modal-title text-secondary text-uppercase mb-0" id="portfolioModal5Label">Despligue en Heroku</h2>
<!-- Icon Divider-->
<div class="divider-custom">
<div class="divider-custom-line"></div>
<div class="divider-custom-icon"><i class="fas fa-star"></i></div>
<div class="divider-custom-line"></div>
</div>
<!-- Portfolio Modal - Image--><img class="img-fluid rounded mb-5" src="assets/img/portfolio/herokulogo.png" alt="" /><!-- Portfolio Modal - Text-->
<p class="mb-5">Heroku ofrece un entorno para poder desplegar nuestra aplicación. En mi caso, enlazando la aplicación desde el repositorio de github. Al tener la base de datos en cloud la aplicación será totalmente funcional.</p>
</br>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/herokuportal.png" alt="" />
<p class="mb-5">Desde el panel principal se puede observar el script configurado para arrancar la app: npm start que está definido en el fichero package.json de la aplicación</p>
</br>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/herokugit.png" alt="" />
<p class="mb-5">En la pestaña de recursos vemos que nuestra aplicación está conectada con github. Es decir, cualquier cambio se verá refleado en Heroku previo despliegue.</p>
</br>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/herokuvar.png" alt="" />
<p class="mb-5">Es necesario configurar la variable de entorno definida en en el fichero de base de datos de la app. Esa variable incluye los parámetros de conexión contra la base de datos Atlas, que a su vez está sincronizada con nuestra base de datos local.</p>
</br>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/appdbjs.png" alt="" />
<p class="mb-5">En este caso, vemos que si esta variable no es null, hará la conexión por Atlas</p>
<p class="mb-5">Con esto, ya tendríamos nuestra aplicación totalmente funcional desplegada en heroku y que se accede a través de la url: <a href="https://app-notes-borjadb.herokuapp.com/">https://app-notes-borjadb.herokuapp.com/</a></p>
<button class="btn btn-primary" data-dismiss="modal"><i class="fas fa-times fa-fw"></i>Close Window</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Portfolio Modal 6-->
<div class="portfolio-modal modal fade" id="portfolioModal6" tabindex="-1" role="dialog" aria-labelledby="portfolioModal6Label" aria-hidden="true">
<div class="modal-dialog modal-xl" role="document">
<div class="modal-content">
<button class="close" type="button" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true"><i class="fas fa-times"></i></span>
</button>
<div class="modal-body text-center">
<div class="container">
<div class="row justify-content-center">
<div class="col-lg-8">
<!-- Portfolio Modal - Title-->
<h2 class="portfolio-modal-title text-secondary text-uppercase mb-0" id="portfolioModal6Label">Información</h2>
<!-- Icon Divider-->
<div class="divider-custom">
<div class="divider-custom-line"></div>
<div class="divider-custom-icon"><i class="fas fa-star"></i></div>
<div class="divider-custom-line"></div>
</div>
<!-- Portfolio Modal - Image <img class="img-fluid rounded mb-5" src="assets/img/portfolio/submarine.png" alt="" /> Portfolio Modal - Text-->
<p class="mb-5">Url git: <a href="">https://github.com/borjaDB/Aplicacion-de-notas</a></p>
<p class="mb-5">Url Heroku: <a href="">https://app-notes-borjadb.herokuapp.com/</a></p>
<p class="mb-5">La foto final del desarrollo es una aplicación de notas donde los usuarios pueden crear editar y eliminar sus notas. Esta aplicación posee una base de datos cloud con Mongo Atlas y está desplegada en un entorno de producción con Heroku.</p>
<button class="btn btn-primary" data-dismiss="modal"><i class="fas fa-times fa-fw"></i>Close Window</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Bootstrap core JS-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.bundle.min.js"></script>
<!-- Third party plugin JS-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.4.1/jquery.easing.min.js"></script>
<!-- Contact form JS-->
<script src="assets/mail/jqBootstrapValidation.js"></script>
<script src="assets/mail/contact_me.js"></script>
<!-- Core theme JS-->
<script src="js/scripts.js"></script>
</body>
</html>