<?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: Marcílio Júnior</title>
    <description>The latest articles on DEV Community by Marcílio Júnior (@jrsmarcilio).</description>
    <link>https://dev.to/jrsmarcilio</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%2F667135%2F051c8b6f-a1be-4837-ac9a-00bd8b586b13.png</url>
      <title>DEV Community: Marcílio Júnior</title>
      <link>https://dev.to/jrsmarcilio</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jrsmarcilio"/>
    <language>en</language>
    <item>
      <title>How to build an event management application in Amplication</title>
      <dc:creator>Marcílio Júnior</dc:creator>
      <pubDate>Thu, 02 Nov 2023 00:46:05 +0000</pubDate>
      <link>https://dev.to/jrsmarcilio/how-to-build-an-event-management-application-in-amplication-19of</link>
      <guid>https://dev.to/jrsmarcilio/how-to-build-an-event-management-application-in-amplication-19of</guid>
      <description>&lt;p&gt;In this article, we will guide you through the process of building a fully functional event management platform using Amplication. Amplication is a powerful open-source development platform designed to streamline the creation of scalable and secure Node.js applications.&lt;/p&gt;

&lt;p&gt;But first, why choose Amplication as the foundation of your application? One obvious reason is its exceptional speed and efficiency, which can significantly enhance your application's performance and, consequently, the user experience. So, let's dive right into harnessing the capabilities of Amplication to create your event management platform.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;p&gt;To successfully follow this tutorial, please ensure you have the following installed on your computer:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Required Software:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Node.js&lt;/li&gt;
&lt;li&gt;npm&lt;/li&gt;
&lt;li&gt;Code Editor (such as Visual Studio Code)&lt;/li&gt;
&lt;li&gt;Web browser or Postman&lt;/li&gt;
&lt;li&gt;Docker Compose&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Having these tools in place will facilitate your participation in this tutorial.&lt;/p&gt;

&lt;p&gt;Finally, you'll need an &lt;a href="https://app.amplication.com/login" rel="noopener noreferrer"&gt;Amplication&lt;/a&gt; account for your Amplication development environment. If you don't already have one, simply visit their &lt;a href="https://app.amplication.com/login" rel="noopener noreferrer"&gt;website&lt;/a&gt; to create a free account.&lt;/p&gt;

&lt;h2&gt;
  
  
  Create your service in Amplication
&lt;/h2&gt;

&lt;p&gt;If you prefer, follow the official Amplication guide on the &lt;a href="https://docs.amplication.com/first-service/" rel="noopener noreferrer"&gt;page&lt;/a&gt;.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Create Your Amplication Account&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;To begin, register for an &lt;a href="https://app.amplication.com/login" rel="noopener noreferrer"&gt;Amplication&lt;/a&gt; account. Afterward, authorize your account with GitHub.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Name Your Application&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;When choosing a name for your service, focus on its primary function and the problem it solves. A well-named service is easier to recognize and manage.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;backend
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Link Your GitHub Repository&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Amplication will automatically synchronize your generated service with a chosen GitHub repository. Learn more at: &lt;a href="https://docs.amplication.com/sync-with-github" rel="noopener noreferrer"&gt;sync-with-github&lt;/a&gt;.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Customize Your Service&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Amplication can generate GraphQL APIs, REST APIs, and an Admin UI for your services. Choose the components you need.&lt;br&gt;
In our example, we'll enable only the &lt;strong&gt;REST API &amp;amp; Swagger&lt;/strong&gt; and continue.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Select Your Repo Style&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Select the storage method for your service in your repository: Monorepo or Polyrepo.&lt;/p&gt;

&lt;p&gt;In our example, we'll enable Monorepo. It's recommended if you plan to have multiple services in a single GitHub repository.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;./apps
  - apps/my-new-service 
  - apps/my-new-service-admin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Choose Your Database&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Amplication natively supports PostgreSQL, MongoDB, and MySQL. Select the one that best fits your requirements. In our example, we've chosen MySQL.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Define Your Data Model&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Define your database entities and fields. You can either create them manually or utilize a template offered by Amplication. In our example, we've chosen to start from scratch.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Include Authentication&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Optionally, you can incorporate the required authentication code in your service. If your service doesn't require authentication, you can choose to skip it. In our example, we prefer to include authentication, so we select the 'Include Auth Module' option.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You're Finished!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Congratulations! Your first Amplication service is now set up. You'll be directed to a screen where Amplication will begin generating all the required code for your service in real time.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fkgroeuzvvcemr2kk7pif.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fkgroeuzvvcemr2kk7pif.png" alt="Amplication page- Service created successfully"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Creating/Modifying our entities
&lt;/h2&gt;

&lt;p&gt;Once your first service is successfully created, the next steps involve adding entities, roles, and permissions to your service. &lt;strong&gt;Let's now create our event entity and adjust the relationship between the user and event entities.&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Add Event Entity&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Click on "Add Entity," enter the name "Event," and then click "Create Entity."&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2F7zdf0jila1y1n6z9emh7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F7zdf0jila1y1n6z9emh7.png" alt="Amplication page - Add new entity"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Add Entity Fields&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;After creating the event entity, add the fields that will represent the event. In our example, we've included the following fields:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;category (String)&lt;/li&gt;
&lt;li&gt;description (String)&lt;/li&gt;
&lt;li&gt;endDate (DateTime)&lt;/li&gt;
&lt;li&gt;startDate (DateTime)&lt;/li&gt;
&lt;li&gt;imageUrl (String, optional)&lt;/li&gt;
&lt;li&gt;locationPoint (String, optional)&lt;/li&gt;
&lt;li&gt;title (String)&lt;/li&gt;
&lt;li&gt;venue (String)&lt;/li&gt;
&lt;li&gt;User (String)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In the User field, navigate to Data Type, select Relation to Entity, then in Related Entity, choose the User entity, and specify &lt;em&gt;'One Event can be related to one User'&lt;/em&gt;. If desired, you can add a label for the Foreign Key in &lt;em&gt;'Foreign Key Field Name'&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2F7ebzzhpt3g0zui3juqsy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F7ebzzhpt3g0zui3juqsy.png" alt="Amplication page - Event entity (User field)"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After this, navigate to the User entity. You'll notice that the relationship between the User entity and the Event entity is automatically configured. Just ensure that the relationship is set to &lt;em&gt;'One User can be related to many Events'&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2F8pg0jtqvbgeowckcp5bn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F8pg0jtqvbgeowckcp5bn.png" alt="Amplication page - User entity (Event field)"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Navigate to the "Permissions" section and modify the permissions to allow viewing, creating, and searching for users.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Ffbz0cljuyqyhaof6om5x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Ffbz0cljuyqyhaof6om5x.png" alt="Amplication page - User entity (Edit Permissions)"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you've completed the entity configurations, commit the changes, and proceed to &lt;strong&gt;VS Code&lt;/strong&gt; by clicking on &lt;em&gt;'Commit changes &amp;amp; build'&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting started In VS Code
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Open the terminal and clone the repository selected in Amplication&lt;/strong&gt;.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git clone https://github.com/jrsmarcilio/event-management-system.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Enter the folder and change branch:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;event-management-system&lt;span class="p"&gt;;&lt;/span&gt; git checkout amplication
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Go to project folder and install npm packages:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;apps/backend&lt;span class="p"&gt;;&lt;/span&gt; npm i
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Create the &lt;em&gt;.env&lt;/em&gt; file and add the environment variables:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;PORT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;3000

&lt;span class="nv"&gt;BCRYPT_SALT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;10

&lt;span class="nv"&gt;JWT_SECRET_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;secret
&lt;span class="nv"&gt;JWT_EXPIRATION&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1h

&lt;span class="nv"&gt;DB_PORT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;3306
&lt;span class="nv"&gt;DB_HOST&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;localhost
&lt;span class="nv"&gt;DB_USER&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;root
&lt;span class="nv"&gt;DB_PASSWORD&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;amplication
&lt;span class="nv"&gt;DB_NAME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;amplication
&lt;span class="nv"&gt;DB_URL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;mysql://&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;DB_USER&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;:&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;DB_PASSWORD&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;@&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;DB_HOST&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;:3306/&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;DB_NAME&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Create the &lt;em&gt;docker-compose.dev.yml&lt;/em&gt; file and add content:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;3"&lt;/span&gt;
&lt;span class="na"&gt;services&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;db&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;mysql&lt;/span&gt;
    &lt;span class="na"&gt;command&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;--default-authentication-plugin=mysql_native_password&lt;/span&gt;
    &lt;span class="na"&gt;restart&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;always&lt;/span&gt;
    &lt;span class="na"&gt;ports&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;${DB_PORT}:3306&lt;/span&gt;
    &lt;span class="na"&gt;environment&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;MYSQL_ROOT_PASSWORD&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${DB_PASSWORD}&lt;/span&gt;
      &lt;span class="na"&gt;MYSQL_DATABASE&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${DB_NAME}&lt;/span&gt;
    &lt;span class="na"&gt;healthcheck&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;test&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;CMD&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;mysqladmin&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;ping&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;-h&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;localhost&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;-u&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;${DB_USER}&lt;/span&gt;
      &lt;span class="na"&gt;timeout&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;45s&lt;/span&gt;
      &lt;span class="na"&gt;interval&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;10s&lt;/span&gt;
      &lt;span class="na"&gt;retries&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;10&lt;/span&gt;

&lt;span class="na"&gt;volumes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;mysql&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;~&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Create MySQL container and volume:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker compose &lt;span class="nt"&gt;-f&lt;/span&gt; docker-compose.dev.yml up &lt;span class="nt"&gt;-d&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;To map your data model to the database schema, you need to use the prisma migrate CLI commands:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx prisma migrate dev &lt;span class="nt"&gt;--name&lt;/span&gt; init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Generate Prisma Client with the following command:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx prisma generate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Initialize the project:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm start &lt;span class="c"&gt;#or yarn start&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Congratulations for getting this far. You have just built your event management application fully on the Amplication 👏🏼.&lt;/p&gt;

</description>
      <category>amplification</category>
      <category>nestjs</category>
      <category>prisma</category>
      <category>mysql</category>
    </item>
  </channel>
</rss>
