<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Thomas Cansino</title>
    <description>The latest articles on DEV Community by Thomas Cansino (@thomascansino).</description>
    <link>https://dev.to/thomascansino</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1500948%2F8fa4520e-7792-45b5-b78f-8341a8d75a46.png</url>
      <title>DEV Community: Thomas Cansino</title>
      <link>https://dev.to/thomascansino</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/thomascansino"/>
    <language>en</language>
    <item>
      <title>[DAY 118-122] I learned full-stack by building my 2nd app</title>
      <dc:creator>Thomas Cansino</dc:creator>
      <pubDate>Mon, 30 Sep 2024 11:14:14 +0000</pubDate>
      <link>https://dev.to/thomascansino/day-118-122-i-learned-full-stack-by-building-my-2nd-app-57g3</link>
      <guid>https://dev.to/thomascansino/day-118-122-i-learned-full-stack-by-building-my-2nd-app-57g3</guid>
      <description>&lt;p&gt;As a self-taught developer, one of the best ways to improve my skills is by building. Recently, I completed my 2nd full-stack app that manages tasks with user authentication.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmapmpu5w5cs5w86k7usz.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmapmpu5w5cs5w86k7usz.PNG" alt="Image description" width="800" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The app I built is designed for authenticated users to create, edit, and manage their daily tasks. It’s a full-stack project built with the MERN stack: MongoDB, Express, React, and Node.js. &lt;/p&gt;

&lt;p&gt;In this project, once a user registers, they can log in and their credentials are authenticated through a token system. This token is validated by a backend middleware, ensuring that only authenticated users can interact with the application. &lt;/p&gt;

&lt;p&gt;The validateToken middleware verifies the token, and if it’s correct, it allows the user to proceed; otherwise, it denies access. &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2f3mokk5sb6mbv8rfrij.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2f3mokk5sb6mbv8rfrij.PNG" alt="Image description" width="800" height="400"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpw7m69zvlul59618wh0s.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpw7m69zvlul59618wh0s.PNG" alt="Image description" width="800" height="550"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Although the CSS for the frontend is not fully finished yet, the backend and the database are 100% complete. The next step is to refine the design and improve the user interface.&lt;/p&gt;

&lt;p&gt;One of the most important features of the app is task management. Users can register, log in, and then create tasks that are displayed based on selected dates. The tasks can be modified and deleted as needed.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc2bbsmejjhdxbg8erwvt.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc2bbsmejjhdxbg8erwvt.PNG" alt="Image description" width="744" height="777"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3esdol9wzez8g4qk3z5x.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3esdol9wzez8g4qk3z5x.PNG" alt="Image description" width="685" height="667"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For instance, if I create a task at 5 p.m., I can later modify the time, date, task name, or even delete it altogether. The tasks are organized and displayed starting from the earliest time of day to the latest time of day. &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fws8cigmgro5nw6slutps.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fws8cigmgro5nw6slutps.PNG" alt="Image description" width="759" height="772"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyqxosbkugd3571ojzpm7.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyqxosbkugd3571ojzpm7.PNG" alt="Image description" width="652" height="747"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I also implemented previous and next buttons, allowing users to navigate between tasks. When there are more than seven tasks, they are grouped into pages, and the tasks are automatically sorted across multiple pages.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl8rd5isduv2064o6j3qv.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl8rd5isduv2064o6j3qv.PNG" alt="Image description" width="722" height="773"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Another key feature is the logout function. Once logged out, the token is removed, and the user is redirected to the login page. This ensures that unauthorized users cannot access the task management area without valid login credentials. &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1szznuq1sfga085k38d6.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1szznuq1sfga085k38d6.PNG" alt="Image description" width="800" height="402"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fev3shvitdipsbquhnfgs.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fev3shvitdipsbquhnfgs.PNG" alt="Image description" width="800" height="402"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the backend, I’ve structured the app so that only the user who created the tasks can access and manage them. This was achieved by associating each task with a user ID in the MongoDB, making sure that tasks remain private to the user who created them.&lt;/p&gt;

&lt;p&gt;The user model I created also ensures that email addresses are unique, preventing the creation of duplicate accounts.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftqsgp2liisj51yx29294.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftqsgp2liisj51yx29294.PNG" alt="Image description" width="800" height="780"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6k9w187360g1436kf9yg.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6k9w187360g1436kf9yg.PNG" alt="Image description" width="800" height="513"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The application consists of several components: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The dashboard consists of the interactive calendar and the task components: &lt;/li&gt;
&lt;li&gt;task form for creating tasks&lt;/li&gt;
&lt;li&gt;task modal for deleting and editing tasks&lt;/li&gt;
&lt;li&gt;The login, register, and forgot password components. &lt;/li&gt;
&lt;li&gt;The private route component to ensure that certain parts of the application, like the dashboard, are only accessible to authenticated users. This was done using middleware to validate tokens before allowing access to these private routes.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjg5hik1mft96wvf2hong.PNG" alt="Image description" width="237" height="436"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;On the backend, I used Mongoose to integrate MongoDB as the database. The routes are protected by the middleware, ensuring that only authenticated users can create, read, update, or delete tasks. &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9qowdob9nscoseny9jcc.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9qowdob9nscoseny9jcc.PNG" alt="Image description" width="800" height="433"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4s78oyx8l6thblebnbu9.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4s78oyx8l6thblebnbu9.PNG" alt="Image description" width="800" height="372"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6skluqj1a58wbqnqzetr.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6skluqj1a58wbqnqzetr.PNG" alt="Image description" width="800" height="388"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;While I’m pleased with the progress I’ve made, there’s still work to be done. The frontend CSS is still incomplete, and I plan to refine the design in the near future. &lt;/p&gt;

&lt;p&gt;However, I’m already thinking ahead to my next project. My next goal is to build a contact management app with user login functionality. This will be another full-stack project where I continue practicing my skills in creating user-specific content.&lt;/p&gt;

&lt;p&gt;The reason I’m building these apps is to practice the core logic, patterns, and concepts of the MERN stack. &lt;/p&gt;

&lt;p&gt;By repeating similar types of projects, I’m becoming comfortable with the entire development process from setting up the database to creating secure backends and responsive frontends. &lt;/p&gt;

&lt;p&gt;Every project helps me practice my skills and prepare for more complex apps in the future.&lt;/p&gt;

&lt;p&gt;Anyways, that’s all for now. More updates in my next blog! See you there!&lt;/p&gt;

</description>
      <category>react</category>
      <category>node</category>
      <category>mongodb</category>
      <category>express</category>
    </item>
    <item>
      <title>[DAY 113-117] I built 5 backend projects to acquire a backend certificate</title>
      <dc:creator>Thomas Cansino</dc:creator>
      <pubDate>Tue, 17 Sep 2024 08:07:05 +0000</pubDate>
      <link>https://dev.to/thomascansino/day-113-117-i-built-5-backend-projects-to-acquire-a-backend-certificate-5boj</link>
      <guid>https://dev.to/thomascansino/day-113-117-i-built-5-backend-projects-to-acquire-a-backend-certificate-5boj</guid>
      <description>&lt;p&gt;Hi everyone! Welcome back to another blog where I document the things I learn in web development. I do this because it helps retain the information and concepts through active recall.&lt;/p&gt;

&lt;p&gt;I completed the backend course in freecodecamp and acquired the certificate by building the 5 required projects.&lt;/p&gt;

&lt;p&gt;I built all the projects using Node and Express.&lt;/p&gt;

&lt;p&gt;The first project I built is a timestamp microservice where you enter the route /api/:date?, and it responds with a JSON object containing unix and utc properties corresponding to the provided date parameter.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqtt7ri3c00g81rla5mwb.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqtt7ri3c00g81rla5mwb.PNG" alt="Image description" width="737" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If the entered route contains an invalid date or an invalid Unix timestamp, it responds with a JSON object containing an error property.&lt;/p&gt;

&lt;p&gt;If no date is provided in the route (since the parameter is optional), it responds with a JSON object containing unix and utc properties corresponding to the current date.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj4pokdlabviwgs8xd746.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj4pokdlabviwgs8xd746.PNG" alt="Image description" width="570" height="691"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The next project is a request header parser microservice where you enter the route /api/whoami, and it responds with a JSON object containing the IP address, language, and software of the current user.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3i1c3eqaig2n2a8orue5.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3i1c3eqaig2n2a8orue5.PNG" alt="Image description" width="800" height="329"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7rc5kxthhdbkbnuezb0e.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7rc5kxthhdbkbnuezb0e.PNG" alt="Image description" width="770" height="347"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The 3rd project is a URL shortener microservice where you enter a valid URL (must include http or https), and it responds with a JSON object containing the original_url and a short_url. The short_url is generated based on the stored value in the database.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxqozfb9oc0gfh5r22hud.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxqozfb9oc0gfh5r22hud.PNG" alt="Image description" width="767" height="310"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fud7s2uozal991mhww2bt.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fud7s2uozal991mhww2bt.PNG" alt="Image description" width="800" height="614"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I created a database where all previously entered URLs are stored, each assigned a short_url starting from 1. New URLs will be assigned a short_url that increments from the last number in the database.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp53nl6y9iocek3h77rfi.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp53nl6y9iocek3h77rfi.PNG" alt="Image description" width="435" height="224"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm2md3nxpld3n8b4z57vr.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm2md3nxpld3n8b4z57vr.PNG" alt="Image description" width="800" height="576"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The fourth project is an exercise tracker where you must first create a user, who will be stored in the database. The ID of the created user will then be used to add exercises, which are also stored in the database. These exercises are exclusive to the user entered in the form.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frgohnykg6pjesutkaoig.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frgohnykg6pjesutkaoig.PNG" alt="Image description" width="800" height="552"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flsuqouboghdm19mkr9rp.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flsuqouboghdm19mkr9rp.PNG" alt="Image description" width="627" height="242"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Additionally, you can view exercise logs to retrieve a list of the user’s exercises and see how many exercises a particular user has. You can also input date range parameters to retrieve the user's exercises within a specific timeframe.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fultfvq19quqo0hmybkcn.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fultfvq19quqo0hmybkcn.PNG" alt="Image description" width="665" height="811"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5cvhkmfw18si2tptgy30.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5cvhkmfw18si2tptgy30.PNG" alt="Image description" width="800" height="573"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For the last project, I built a file metadata microservice where you upload a file, and upon uploading, it responds with a JSON object containing the file's name, type, and size.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcz4132cpzrxm6a91yifz.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcz4132cpzrxm6a91yifz.PNG" alt="Image description" width="800" height="285"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhgrlavmr9teaaho3x0ru.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhgrlavmr9teaaho3x0ru.PNG" alt="Image description" width="417" height="217"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I used the Multer package in Node to read the file's information.&lt;/p&gt;

&lt;p&gt;Overall, these five projects were simple but valuable for practicing my backend skills. They pushed me to take on more challenging projects and gave me the momentum to continue my path as a full-stack developer.&lt;/p&gt;

&lt;p&gt;My next projects will be full-stack apps using MERN (Mongo-Express-React-Node) and practice everything I’ve learned so far. My goal is to keep learning full-stack development by building more projects in the future.&lt;/p&gt;

&lt;p&gt;Anyways, that’s all for now. More updates in my next blog! See you there!&lt;/p&gt;

</description>
      <category>mongodb</category>
      <category>express</category>
      <category>react</category>
      <category>node</category>
    </item>
    <item>
      <title>[DAY 108-112] I built my first full-stack app with CRUD and auth logins</title>
      <dc:creator>Thomas Cansino</dc:creator>
      <pubDate>Mon, 09 Sep 2024 05:59:51 +0000</pubDate>
      <link>https://dev.to/thomascansino/day-108-112-i-built-my-first-full-stack-app-with-crud-and-auth-logins-2n5o</link>
      <guid>https://dev.to/thomascansino/day-108-112-i-built-my-first-full-stack-app-with-crud-and-auth-logins-2n5o</guid>
      <description>&lt;p&gt;Hi everyone! Welcome back to another blog where I document the things I learn in web development. I do this because it helps retain the information and concepts through active recall.&lt;/p&gt;

&lt;p&gt;On days 108-112, I built a simple blog website that create, read, update, and delete posts with authenticated user login (username, email, and password).&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi0uc4agzausx2d1zquug.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi0uc4agzausx2d1zquug.gif" alt="Image description" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I used MERN (MongoDB, Express, Reactjs, Nodejs) stack to build the full-stack app from scratch and the purpose of doing it is to practice everything that I've learned so far.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhoxyoremkpnnrzq4hzo2.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhoxyoremkpnnrzq4hzo2.PNG" alt="Image description" width="800" height="488"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft3jb1gbio4vgqtglrty8.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft3jb1gbio4vgqtglrty8.PNG" alt="Image description" width="800" height="491"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In fact, I plan to build more simple full-stack apps like this to further practice my skills in everything. Learn by doing.&lt;/p&gt;

&lt;p&gt;I gotta say, I took a 3-week break from learning the course in freecodecamp because after consistently doing this for almost 5 months, I felt like I needed it.&lt;/p&gt;

&lt;p&gt;During my break, I built a blog website as my first full-stack project.&lt;/p&gt;

&lt;p&gt;In those 3 weeks, I learned about the backend, and how to integrate it with the database, and practiced my frontend skills.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1sshxgk6tcucou0iavdq.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1sshxgk6tcucou0iavdq.PNG" alt="Image description" width="800" height="491"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6gibnkaehnrs5ry0souv.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6gibnkaehnrs5ry0souv.PNG" alt="Image description" width="800" height="493"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I didn’t focus too much on the design of the website but rather on the backend and the database side since that's where I think I needed practice.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftkl8321aovooz5d29fls.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftkl8321aovooz5d29fls.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I learned so much building my first full-stack project and I plan to do more in the upcoming weeks.&lt;/p&gt;

&lt;p&gt;For my next projects, I plan to build a task manager (like a to-do list app) with a user login, and a contacts manager with a user login.&lt;/p&gt;

&lt;p&gt;My goal is to practice my full-stack skills and learn more by doing these simple projects.&lt;/p&gt;

&lt;p&gt;Also, I’ve decided to return to freeCodeCamp and continue the Backend + Database course to earn the Backend Certificate.&lt;/p&gt;

&lt;p&gt;After this, I’ll be building more full-stack projects to further practice my skills.&lt;/p&gt;

&lt;p&gt;As I resumed the course, I covered the MongoDB and Mongoose topic, where I learned how to connect a database to my backend using Mongoose.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgusvj3mss2wx46u3q0g1.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgusvj3mss2wx46u3q0g1.PNG" alt="Image description" width="800" height="749"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvzt5f1dn1ddvq0n0ahdg.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvzt5f1dn1ddvq0n0ahdg.PNG" alt="Image description" width="792" height="426"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Some basic syntax was taught, but I noticed that some of it seemed outdated, as I’ve already used Mongoose in my first full-stack app, and some of the code I used were slightly different.&lt;/p&gt;

&lt;p&gt;Anyway, next week, I’ll be building the 5 backend projects required to complete the course.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnxcrzmcv4cm461xyo2f6.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnxcrzmcv4cm461xyo2f6.PNG" alt="Image description" width="773" height="634"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That’s all for now. More updates in my next blog! See you there!&lt;/p&gt;

</description>
      <category>fullstack</category>
      <category>mongodb</category>
      <category>react</category>
      <category>node</category>
    </item>
    <item>
      <title>[DAY 105-107] I built a contacts manager using Node.js &amp; Express</title>
      <dc:creator>Thomas Cansino</dc:creator>
      <pubDate>Wed, 14 Aug 2024 16:00:00 +0000</pubDate>
      <link>https://dev.to/thomascansino/day-104-106-i-built-a-contacts-manager-using-nodejs-express-30m3</link>
      <guid>https://dev.to/thomascansino/day-104-106-i-built-a-contacts-manager-using-nodejs-express-30m3</guid>
      <description>&lt;p&gt;Hi everyone! Welcome back to another blog where I document the things I learned in web development. I do this because it helps retain the information and concepts as it is some sort of an active recall.&lt;/p&gt;

&lt;p&gt;On days 105-107, I focused on expanding my knowledge of Node.js and Express by working on a simple project: a contacts manager. This project allows me to create, read, update, and delete contact information, which helped me practice my backend development skills.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvb91ed7amz4nv83wc203.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvb91ed7amz4nv83wc203.PNG" alt="Image description" width="800" height="493"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I started by setting up a backend project from scratch and creating an Express server. This provided the foundation for my application. I also learned how to configure and use Thunder Client to test my API endpoints, ensuring everything was working correctly.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff9xnb0rzvnd0wsjxb6hz.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff9xnb0rzvnd0wsjxb6hz.PNG" alt="Image description" width="800" height="491"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I then set up routes using Express Router to handle various HTTP requests for CRUD operations. This allowed me to manage contact data effectively. &lt;/p&gt;

&lt;p&gt;Additionally, I explored middleware in Express to handle requests and responses more efficiently.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhtgbml6il06ig8pb7etu.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhtgbml6il06ig8pb7etu.PNG" alt="Image description" width="800" height="490"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Finally, I integrated MongoDB using Mongoose. This made interacting with the database much simpler by providing an easy way to define data models and perform operations.&lt;/p&gt;

&lt;p&gt;Focusing on backend development is a big step as it will set me apart when applying for junior roles in the future. This project was a good experience in enhancing my backend skills and preparing for more challenges ahead.&lt;/p&gt;

&lt;p&gt;Anyways, that’s all for now. More updates in my next blog! See you there!&lt;/p&gt;

</description>
      <category>learning</category>
      <category>node</category>
      <category>express</category>
      <category>backend</category>
    </item>
    <item>
      <title>[DAY 102-104] I took a backend course in freecodecamp</title>
      <dc:creator>Thomas Cansino</dc:creator>
      <pubDate>Mon, 12 Aug 2024 16:00:00 +0000</pubDate>
      <link>https://dev.to/thomascansino/day-102-104-i-took-a-backend-course-in-freecodecamp-2don</link>
      <guid>https://dev.to/thomascansino/day-102-104-i-took-a-backend-course-in-freecodecamp-2don</guid>
      <description>&lt;p&gt;Hi everyone! Welcome back to another blog where I document the things I learned in web development. I do this because it helps retain the information and concepts as it is some sort of an active recall.&lt;/p&gt;

&lt;p&gt;On days 102-104,  I started the backend course in freecodecamp and learned the basics of using npm and Node.js with Express. &lt;/p&gt;

&lt;p&gt;First, I learned about npm (Node Package Manager) and how to work with the package.json file. This file manages the project's metadata and dependencies. &lt;/p&gt;

&lt;p&gt;I started by initializing a new package.json file using npm init, which set up the basics for my project. This allowed me to add and manage dependencies efficiently with commands like npm install . &lt;/p&gt;

&lt;p&gt;These dependencies are then listed in the package.json file, making it easy to share and collaborate on projects. &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj3n9o1cklqm7qu5xtzq8.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj3n9o1cklqm7qu5xtzq8.PNG" alt="Image description" width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I also explored how to update and remove packages, ensuring my project stays up-to-date and clutter-free.&lt;/p&gt;

&lt;p&gt;Next, I explored the basics of Node.js and Express. I learned how to create a server using Express, serve different files, and handle different requests from the browser. &lt;/p&gt;

&lt;p&gt;This involved setting up routes to handle different endpoints and sending appropriate responses based on the requests. &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fegc0gmf14vlumnbr7zbx.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fegc0gmf14vlumnbr7zbx.PNG" alt="Image description" width="800" height="417"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2cf0x9fvgpdagyfyxa1j.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2cf0x9fvgpdagyfyxa1j.PNG" alt="Image description" width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I also implemented middleware to manage and preprocess incoming requests.&lt;/p&gt;

&lt;p&gt;Understanding these concepts helped me in my journey to becoming a full-stack web developer. It gave me a deeper insight into backend development and how servers interact with clients, laying the foundation for more complex applications in the future.&lt;/p&gt;

&lt;p&gt;Anyways, that’s all for now, more updates in my next blog! See you there!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>node</category>
      <category>npm</category>
      <category>express</category>
    </item>
    <item>
      <title>[DAY 99-101] I acquired a database certificate from freecodecamp</title>
      <dc:creator>Thomas Cansino</dc:creator>
      <pubDate>Mon, 12 Aug 2024 09:41:30 +0000</pubDate>
      <link>https://dev.to/thomascansino/day-99-101-i-acquired-a-database-certificate-from-freecodecamp-2j8m</link>
      <guid>https://dev.to/thomascansino/day-99-101-i-acquired-a-database-certificate-from-freecodecamp-2j8m</guid>
      <description>&lt;p&gt;Hi everyone! Welcome back to another blog where I document the things I learned in web development. I do this because it helps retain the information and concepts as it is some sort of an active recall.&lt;/p&gt;

&lt;p&gt;On days 99-101, I built a number guessing game where I built a bash script that asks you to guess the random number and a database that stores all games’ history and user information.  This is also part 5 which is the last project needed to complete to get the database certificate from freecodecamp.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1cozx1hvjktn2cys34av.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1cozx1hvjktn2cys34av.PNG" alt="Image description" width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What I did first is to make a database with 2 tables: game_history and usernames&lt;/p&gt;

&lt;p&gt;After that, I assigned primary keys for each table:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;game_id for game_history table&lt;/li&gt;
&lt;li&gt;username_id for usernames table&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I also linked the tables with foreign keys:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;username_id to link usernames and game_history table&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Lastly, this is the script that I created:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm6a0c8wmm0jcv3k9zi7h.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm6a0c8wmm0jcv3k9zi7h.PNG" alt="Image description" width="800" height="418"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqioxwc2n50cf8qzqo9al.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqioxwc2n50cf8qzqo9al.PNG" alt="Image description" width="709" height="294"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuk4vdf9uncrxems56jfr.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuk4vdf9uncrxems56jfr.PNG" alt="Image description" width="800" height="411"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Finally, I acquired the relational database certificate from freecodecamp! &lt;/p&gt;

&lt;p&gt;I learned alot from this course and I recommend it if you want to learn about databases in your full-stack journey.  It’s project-based so there's a few readings and mostly writing code (which I like). It mainly teaches about PostgreSQL, Bash, and Git.&lt;/p&gt;

&lt;p&gt;Anyways, that’s all for now. More updates in my next blog! See you there!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>database</category>
      <category>postgres</category>
      <category>learning</category>
    </item>
    <item>
      <title>[DAY 96-98] I built a script that gets info from a periodic table database</title>
      <dc:creator>Thomas Cansino</dc:creator>
      <pubDate>Sun, 11 Aug 2024 13:58:56 +0000</pubDate>
      <link>https://dev.to/thomascansino/day-96-98-i-built-a-script-that-gets-info-from-a-periodic-table-database-4oh0</link>
      <guid>https://dev.to/thomascansino/day-96-98-i-built-a-script-that-gets-info-from-a-periodic-table-database-4oh0</guid>
      <description>&lt;p&gt;Hi everyone! Welcome back to another blog where I document the things I learn in web development. I do this because it helps retain the information and concepts through active recall.&lt;/p&gt;

&lt;p&gt;On days 96-98, I learned Git and built a periodic table database. &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2dmkcf90f6jxr7iv8q41.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2dmkcf90f6jxr7iv8q41.PNG" alt="Image description" width="800" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I followed through the freecodecamp database course to learn Git. It taught me about making branches to add a feature or fix a bug and merging those branches to the main one to have a good system for version control. This was a good course because Git is used when building projects with a team.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2kus8mrqtk4bmwgm9ckn.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2kus8mrqtk4bmwgm9ckn.PNG" alt="Image description" width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The next thing I did was a project where I built a periodic table database. This is part 4 out of 5 projects needed to complete to get the database certificate from freecodecamp.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwawqa79nu45tf23h9ois.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwawqa79nu45tf23h9ois.PNG" alt="Image description" width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What I did first is to make a database with 3 tables: elements, properties, and types.&lt;/p&gt;

&lt;p&gt;After that, I assigned primary keys for each table:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;atomic_number for elements and properties table&lt;/li&gt;
&lt;li&gt;type_id for types table&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I also linked the tables with foreign keys:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;atomic_number to link elements and properties table&lt;/li&gt;
&lt;li&gt;type_id to link properties and types table&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Lastly, I created a bash script that gets information about the chemical elements from the periodic table database. &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frntiby14yh504jrkj69l.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frntiby14yh504jrkj69l.PNG" alt="Image description" width="800" height="418"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa6an0dbudo7k592nkjia.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa6an0dbudo7k592nkjia.PNG" alt="Image description" width="800" height="412"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Type in ./element.sh  on the terminal.&lt;/p&gt;

&lt;p&gt;Next, let’s say I wanna get information about Fluorine. So type in ./element.sh fluorine.&lt;/p&gt;

&lt;p&gt;Finally, the terminal will output: &lt;/p&gt;

&lt;p&gt;&lt;code&gt;The element with atomic number 9 is Fluorine (F). It's a nonmetal, with a mass of 18.998 amu. Fluorine has a melting point of -220 celsius and a boiling point of -188.1 celsius.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Anyways, that’s all for now. More updates in my next blog! See you there!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>postgres</category>
      <category>database</category>
      <category>bash</category>
    </item>
    <item>
      <title>[DAY 93-95] I built an interactive database in PostgreSQL using a shell script</title>
      <dc:creator>Thomas Cansino</dc:creator>
      <pubDate>Wed, 31 Jul 2024 16:00:00 +0000</pubDate>
      <link>https://dev.to/thomascansino/day-93-95-i-built-an-interactive-database-in-postgresql-using-a-shell-script-2f0p</link>
      <guid>https://dev.to/thomascansino/day-93-95-i-built-an-interactive-database-in-postgresql-using-a-shell-script-2f0p</guid>
      <description>&lt;p&gt;Hi everyone! Welcome back to another blog where I document the things I learned in web development. I do this because it helps retain the information and concepts as it is some sort of an active recall.&lt;/p&gt;

&lt;p&gt;On days 93-95, I picked up where I left off last blog, which is building an interactive database to rent and return bikes. I also built an interactive database to make appointments with a hair salon. &lt;/p&gt;

&lt;p&gt;The first project is where I built an interactive database to rent and return bikes.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F90nase53s56qqdi273n4.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F90nase53s56qqdi273n4.PNG" alt="Image description" width="800" height="430"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What I did first is to create a database with 3 tables: bikes, customers, and rentals.&lt;/p&gt;

&lt;p&gt;After that, I assigned primary keys for each table:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;bike_id for bikes table&lt;/li&gt;
&lt;li&gt;customer_id for customers table&lt;/li&gt;
&lt;li&gt;rentals_id for rentals table&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I also linked the tables with foreign keys:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;bike_id for rentals table to link with bikes table&lt;/li&gt;
&lt;li&gt;customer_id for rentals table to link with customers table&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Finally, I wrote a shell script that checks the available bikes, puts them up for rent, and returns the bikes that were rented.&lt;/p&gt;

&lt;p&gt;The next project is another interactive database to make appointments with a hair salon. This is also part 3 out of 5 certification projects in the relational databases course in freecodecamp.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwr2xozey0720d6v8452p.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwr2xozey0720d6v8452p.PNG" alt="Image description" width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The first thing I did is to create a database with 3 tables: appointments, customers, and services.&lt;/p&gt;

&lt;p&gt;After that, I assigned primary keys for each table:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;appointment_id for appointments table&lt;/li&gt;
&lt;li&gt;customer_id for customers table&lt;/li&gt;
&lt;li&gt;service_id for services table&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I also linked the tables with foreign keys:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;customer_id for appointments table to link with customers table&lt;/li&gt;
&lt;li&gt;service_id for appointments table to link with services table&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Finally, I wrote a script that gives you a list of salon services, gets your name and your phone number, and schedules you for an appointment of your chosen service.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnq6iaqppdjvexud6704v.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnq6iaqppdjvexud6704v.PNG" alt="Image description" width="800" height="418"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faeb05kugkuavox44zv9e.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faeb05kugkuavox44zv9e.PNG" alt="Image description" width="800" height="411"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Anyways, that’s all for now, more updates in my next blog! See you there!&lt;/p&gt;

</description>
      <category>learning</category>
      <category>database</category>
      <category>postgres</category>
      <category>bash</category>
    </item>
    <item>
      <title>[DAY 90-92] I made a shell script to build me a world cup database</title>
      <dc:creator>Thomas Cansino</dc:creator>
      <pubDate>Sun, 28 Jul 2024 15:11:33 +0000</pubDate>
      <link>https://dev.to/thomascansino/day-90-92-i-made-a-shell-script-to-build-me-a-world-cup-database-inf</link>
      <guid>https://dev.to/thomascansino/day-90-92-i-made-a-shell-script-to-build-me-a-world-cup-database-inf</guid>
      <description>&lt;p&gt;Hi everyone! Welcome back to another blog where I document the things I learn in web development. I do this because it helps retain the information and concepts through active recall.&lt;/p&gt;

&lt;p&gt;On days 90-92, I finished building a script to automate creating a database, a translator using a shell script, and started building an interactive bash program.&lt;/p&gt;

&lt;p&gt;The first project is where I created a bash script to make a database about world cup matches in PostgreSQL. This is part 2 out of 5 certification projects in the relational databases course in freecodecamp. I also made a script on the side to query useful statistics from the database.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2For1eteqqtalbalbtsaq1.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2For1eteqqtalbalbtsaq1.PNG" alt="Image description" width="800" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this course, I was given a spreadsheet of a list of world cup games in 2014 and 2018.&lt;/p&gt;

&lt;p&gt;What I did first is to make a database with 2 tables: games and teams.&lt;/p&gt;

&lt;p&gt;After that, I assigned primary keys for each table:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;game_id for games table&lt;/li&gt;
&lt;li&gt;team_id for teams table&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I also linked the tables with foreign keys:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;opponent_id &amp;amp; winner_id for games table to link with teams table&lt;/li&gt;
&lt;li&gt;team_id for teams table to link with games table&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Next, I created a shell script to insert all the data from the spreadsheet to the database.&lt;/p&gt;

&lt;p&gt;Finally, I made a script to query all the useful statistics from the database like who won the 2018 finals, list of teams that won in 2014, etc.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flm443sia8007gn2yuiz4.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flm443sia8007gn2yuiz4.PNG" alt="Image description" width="800" height="419"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwostzbcmbygwc1v7qbp7.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwostzbcmbygwc1v7qbp7.PNG" alt="Image description" width="800" height="409"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The next project is a translator using a shell script that translates cat texts to dog texts to learn advanced bash commands like sed, grep, redirection, and piping operators.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwjs1vdhpuzerxksh4r4n.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwjs1vdhpuzerxksh4r4n.PNG" alt="Image description" width="800" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this course, I was given a lorem ipsum about cats.&lt;/p&gt;

&lt;p&gt;What I did first is to make a one-liner script using the sed command (stream editor).&lt;/p&gt;

&lt;p&gt;When the script is initialized, the texts will be translated to lorem ipsum about dogs.&lt;/p&gt;

&lt;p&gt;The next project is an interactive bash program where I must build a database about renting and returning bikes to learn more Bash and PSQL.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkxq4dso59s46qvcg8tql.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkxq4dso59s46qvcg8tql.PNG" alt="Image description" width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The first thing I did is to create the tables with columns, primary keys, and foreign keys to link all of them.&lt;/p&gt;

&lt;p&gt;The next part is to write a shell script that makes the database interactive which I’ll be continuing on the next blog.&lt;/p&gt;

&lt;p&gt;Anyways, that’s all for now. More updates in my next blog! See you there!&lt;/p&gt;

</description>
      <category>bash</category>
      <category>database</category>
      <category>postgres</category>
      <category>learning</category>
    </item>
    <item>
      <title>[DAY 87-89] I created a bash script to build a student database</title>
      <dc:creator>Thomas Cansino</dc:creator>
      <pubDate>Wed, 24 Jul 2024 16:00:00 +0000</pubDate>
      <link>https://dev.to/thomascansino/day-87-89-i-created-a-bash-script-to-build-a-student-database-444p</link>
      <guid>https://dev.to/thomascansino/day-87-89-i-created-a-bash-script-to-build-a-student-database-444p</guid>
      <description>&lt;p&gt;Hi everyone! Welcome back to another blog where I document the things I learned in web development. I do this because it helps retain the information and concepts as it is some sort of an active recall.&lt;/p&gt;

&lt;p&gt;On days 87-89, I continued where I left off last blog, which is building a student database to learn SQL by creating a bash script that uses SQL to enter information about CS students into Postgres.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdf4a6dm0a5nj4av8dnpm.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdf4a6dm0a5nj4av8dnpm.PNG" alt="Image description" width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I created 4 tables in the database which are: students, majors, courses, and majors_courses.&lt;/p&gt;

&lt;p&gt;After that, I assigned primary keys for each table:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;student_id for students table&lt;/li&gt;
&lt;li&gt;major_id for majors table&lt;/li&gt;
&lt;li&gt;course_id for courses table&lt;/li&gt;
&lt;li&gt;major_id and course_id (composite primary keys) for majors_courses table&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I also linked each table with foreign keys:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;major_id for students table to link with majors table&lt;/li&gt;
&lt;li&gt;major_id for majors_courses table to link with majors table&lt;/li&gt;
&lt;li&gt;course_id for majors_courses table to link with courses table  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then, I proceeded to create a script in bash to automate the process of inserting values in every table.&lt;/p&gt;

&lt;p&gt;With that, I finished building the student database where I learned much about postgres queries on joining, filtering, and sorting tables. As well as making a bash script to automate the process of creating a database.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs5gtc9s2l5uwk4erl16b.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs5gtc9s2l5uwk4erl16b.PNG" alt="Image description" width="800" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Moving forward, I started the next solo project in the course which is a database consisting of world cup games with postgres.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwx0wzip126x86snxxsxa.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwx0wzip126x86snxxsxa.PNG" alt="Image description" width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The requirement is that I must create a bash script that enters values into the database consisting of world cup games into PSQL.&lt;/p&gt;

&lt;p&gt;However, this part is not done yet and I’ll be continuing this build next week. &lt;/p&gt;

&lt;p&gt;Overall, I thought I wasn’t going to grasp the concepts I just learned and just rely on the good ol’ &lt;em&gt;“build side projects to fill in the knowledge gaps”&lt;/em&gt;. &lt;/p&gt;

&lt;p&gt;Fortunately, because of the repetitions throughout the whole course, I was able to quickly pick up the principles behind it. Due to this, I haven’t been having much trouble with the solo projects so far. &lt;/p&gt;

&lt;p&gt;I give props to freecodecamp for providing a comprehensive course about databases and scripts.&lt;/p&gt;

&lt;p&gt;Anyways, that’s all for now, more updates in my next blog! See you there!&lt;/p&gt;

</description>
      <category>learning</category>
      <category>database</category>
      <category>bash</category>
      <category>postgres</category>
    </item>
    <item>
      <title>[DAY 84-86] I Learned PostgreSQL &amp; Bash Scripting</title>
      <dc:creator>Thomas Cansino</dc:creator>
      <pubDate>Mon, 22 Jul 2024 12:22:39 +0000</pubDate>
      <link>https://dev.to/thomascansino/day-84-86-i-learned-postgresql-bash-scripting-21cj</link>
      <guid>https://dev.to/thomascansino/day-84-86-i-learned-postgresql-bash-scripting-21cj</guid>
      <description>&lt;p&gt;Hi everyone! Welcome back to another blog where I document the things I learn in web development. I do this because it helps retain the information and concepts through active recall.&lt;/p&gt;

&lt;p&gt;On days 84-86, I finished building the database consisting of celestial bodies with PostgreSQL.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fabuwuy4keiankwcjkss7.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fabuwuy4keiankwcjkss7.PNG" alt="Image description" width="800" height="162"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Last blog, I talked about how I started building the database and how it was not done yet, part of it is because I was still having trouble referencing foreign keys to other tables due to lack of understanding.&lt;/p&gt;

&lt;p&gt;In this blog, I was able to understand the concept of primary and foreign keys in databases and how tables link to each other using it.&lt;/p&gt;

&lt;p&gt;What I did was to make 4 tables: galaxy, stars, planets, and moon.&lt;/p&gt;

&lt;p&gt;After that, I added the necessary columns to satisfy the user stories in order to complete the project.&lt;/p&gt;

&lt;p&gt;I also set the primary keys for each table:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;galaxy_id for galaxies table&lt;/li&gt;
&lt;li&gt;star_id for stars table&lt;/li&gt;
&lt;li&gt;planet_id for planets table&lt;/li&gt;
&lt;li&gt;moon_id for moon table&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As well as linking all of the tables with their foreign keys:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;galaxy_id for stars table&lt;/li&gt;
&lt;li&gt;star_id for planets table&lt;/li&gt;
&lt;li&gt;planet_id for moon table&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The way foreign key works is that it links tables and groups each row. For example, we look at the stars table, every row consists of every star. For every star, it has a corresponding galaxy_id, the value of it is the ID of the galaxy where that star belongs.&lt;/p&gt;

&lt;p&gt;The same goes for the planets where each planet belongs to a certain star and for the moons where each moon belongs to a certain planet.&lt;/p&gt;

&lt;p&gt;With that, I have completed 1 out of 5 projects in the relational database course in freecodecamp.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frm0ybttmq10xq1lobowo.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frm0ybttmq10xq1lobowo.PNG" alt="Image description" width="800" height="412"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Afterwards, I continued on with the course and finished building 5 programs to learn bash scripting.&lt;/p&gt;

&lt;p&gt;I made a registration form to log your name, location, and your favorite coding website.&lt;/p&gt;

&lt;p&gt;Then, a countdown to direct you to a bingo game where it generates random numbers from 0 to 75 and functions like a bingo.&lt;/p&gt;

&lt;p&gt;Next is a magic 8-ball where you ask questions and it will randomly get an answer from an array.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1jhwlllch2pdg8ysy7wd.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1jhwlllch2pdg8ysy7wd.PNG" alt="Image description" width="800" height="419"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The last program is used to run the other 4 programs I mentioned above so that it will start from the registration form and end on the magic 8-ball.&lt;/p&gt;

&lt;p&gt;With that, I completed one of the topics in the course and moved on to the next one where I build a student database to learn SQL by creating a bash script that uses SQL to enter information about CS students into Postgres.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu1psxggf2rlvs7edmdoi.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu1psxggf2rlvs7edmdoi.PNG" alt="Image description" width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This part is not done yet and I aim to finish it by the next blog…&lt;/p&gt;

&lt;p&gt;Anyways, that’s all for now. More updates in my next blog! See you there!&lt;/p&gt;

</description>
      <category>learning</category>
      <category>postgres</category>
      <category>bash</category>
      <category>database</category>
    </item>
    <item>
      <title>[DAY 81-83] I skipped a course and went straight into learning databases</title>
      <dc:creator>Thomas Cansino</dc:creator>
      <pubDate>Sun, 21 Jul 2024 08:37:34 +0000</pubDate>
      <link>https://dev.to/thomascansino/day-81-83-i-skipped-a-course-and-went-straight-into-learning-databases-cj1</link>
      <guid>https://dev.to/thomascansino/day-81-83-i-skipped-a-course-and-went-straight-into-learning-databases-cj1</guid>
      <description>&lt;p&gt;Hi everyone! Welcome back to another blog where I document the things I learned in web development. I do this because it helps retain the information and concepts as it is some sort of an active recall.&lt;/p&gt;

&lt;p&gt;On days 81-83, after briefly learning about making charts and graphs using the D3 library and learning about GET and POST data using APIs, I started to build the 1st project in data visualization course which is making a bar chart with the given data.&lt;/p&gt;

&lt;p&gt;Now, by this time, I've been reading reviews on the internet about this course and see if it's worth the time learning. Most of the answers were that it's okay to skip it and learn it some other time because it's not often used in web development.&lt;/p&gt;

&lt;p&gt;So, I decided to skip it since I'm currently lacking any motivation to do them for the time being. Maybe next time…😉&lt;/p&gt;

&lt;p&gt;Anyways, I've gone straight into doing the next course which is the relational database. It teaches about bash commands, creating and using databases with PostgreSQL, and a version control system, Git.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnpjvfc45o1tf4f7wm4pk.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnpjvfc45o1tf4f7wm4pk.PNG" alt="Image description" width="800" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I started the course by building a website boilerplate using the VSCode terminal. This is the course I had been looking for when I was learning about React. I remember when I was making my first app in React, it required me to go straight into doing terminal commands to create a website boilerplate in Vite without me having the slightest idea. Good thing there are YouTube tutorials for those.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fugips1fak00rca4si03t.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fugips1fak00rca4si03t.PNG" alt="Image description" width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next, I've also built a mario database to learn PostgreSQL. This topic helps you build a database containing video game characters. There's a lot of repetition and I took the opportunity to take notes of the syntax so that I can refer to them in future projects.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuo56pyk27ot9xw1n6i0b.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuo56pyk27ot9xw1n6i0b.PNG" alt="Image description" width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After that, I started to build a database consisting of celestial bodies in the universe. It’s not done yet and I’m currently having trouble in referencing foreign keys for every table in the database. But hopefully, I look forward to finishing it by next blog.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqj71p6x9hp466b4mwv4n.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqj71p6x9hp466b4mwv4n.PNG" alt="Image description" width="800" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Anyways, that's all for now, more updates in my next blog! See you there!&lt;/p&gt;

</description>
      <category>database</category>
      <category>postgres</category>
      <category>bash</category>
      <category>learning</category>
    </item>
  </channel>
</rss>
