<?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: Alice</title>
    <description>The latest articles on DEV Community by Alice (@alicefolvaiter).</description>
    <link>https://dev.to/alicefolvaiter</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%2F785035%2F74a2eac6-69e0-429d-ac43-1c51a8971205.png</url>
      <title>DEV Community: Alice</title>
      <link>https://dev.to/alicefolvaiter</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/alicefolvaiter"/>
    <language>en</language>
    <item>
      <title>Software Development Diagrams - Class diagram</title>
      <dc:creator>Alice</dc:creator>
      <pubDate>Sun, 01 Oct 2023 19:53:55 +0000</pubDate>
      <link>https://dev.to/alicefolvaiter/software-development-diagrams-class-diagram-3mfl</link>
      <guid>https://dev.to/alicefolvaiter/software-development-diagrams-class-diagram-3mfl</guid>
      <description>&lt;p&gt;In this article, we will cover what a class diagram is, which are the key terms for using it, and in the end we will use the &lt;a href="https://dev.to/alicefolvaiter/software-development-diagrams-base-exercise-mpk"&gt;base exercise&lt;/a&gt; in order to create a class diagram. &lt;/p&gt;

&lt;p&gt;A class diagram is a graphical representation that helps us understand the structure of a software application. Think of it as a visual guide that outlines what each part of the code does and how different parts relate to each other. It's an invaluable tool for planning and designing software systems, making it easier for developers to collaborate and build complex applications.&lt;/p&gt;

&lt;p&gt;There are a lot of resources that cover all the details of a class diagram, so I will iterate throw the main components with a short explanation. I will recommend &lt;a href="https://www.visual-paradigm.com/guide/uml-unified-modeling-language/uml-class-diagram-tutorial/" rel="noopener noreferrer"&gt;this website&lt;/a&gt; to learn more about class diagrams.&lt;/p&gt;

&lt;p&gt;Here are the key components of a class diagram explained by a software developer:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Class&lt;/strong&gt;: Think of it as a template for an object in your program.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Attributes (Variables)&lt;/strong&gt;: These are the characteristics or data that each object of a class will have.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Methods (Functions)&lt;/strong&gt;: Methods are the actions or behaviors that objects of a class can perform. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Associations&lt;/strong&gt;: This shows how classes are connected or related to each other. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Aggregation:&lt;/strong&gt; Aggregation is like saying one thing is made up of smaller parts. It's a way to show that a bigger thing, called the "whole," contains smaller things, called "parts," but the parts can exist on their own as well.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inheritance (Generalization)&lt;/strong&gt;: Inheritance is like saying one class is a more specialized version of another.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dependency&lt;/strong&gt;: This is when one class relies on another class in some way, like when a class uses the methods or attributes of another class. It's like showing that one class needs another to work correctly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interfaces&lt;/strong&gt;: An interface defines a set of methods that a class must implement. It's like setting a contract that says, "If you want to be this type of class, you have to do these things." It helps ensure consistency in your code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Composition:&lt;/strong&gt; A special type of aggregation where parts are destroyed when the whole is destroyed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Package&lt;/strong&gt;: Think of a package as a way to organize related classes. It's like putting classes that work together in a folder. Packages make it easier to manage large projects.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now let’s create the class diagram for &lt;strong&gt;MyDoctor&lt;/strong&gt; application. Having in mind the base exercises that we added in &lt;a href="https://dev.to/alicefolvaiter/software-development-diagrams-base-exercise-mpk"&gt;this article&lt;/a&gt;, we will create the class diagram for it. This diagram was created using &lt;a href="https://lucid.app/lucidchart" rel="noopener noreferrer"&gt;LucidChart&lt;/a&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%2Fkzv921brhq0op1fhe49s.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%2Fkzv921brhq0op1fhe49s.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Reading this diagram we can see the classes with the main attributes and methods: User, Doctor, Patient, Office, Schedule, Appointment, BloodTest, Consultation, Surgery.&lt;/p&gt;

&lt;p&gt;For the relationships we have the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Doctor and Patient inherits User since they are specialized users in the application&lt;/li&gt;
&lt;li&gt;Doctor aggregates Schedule because the Doctor has a list of schedules&lt;/li&gt;
&lt;li&gt;Office aggregates Schedule because the Office has a list of schedules&lt;/li&gt;
&lt;li&gt;Patient aggregates Appointment because the Patient will have a list of schedules&lt;/li&gt;
&lt;li&gt;BloodTest, Consultation and Surgery inherits Appointment&lt;/li&gt;
&lt;li&gt;Appointment has a composition relationship with Schedule because an appointment cannot exist without a schedule&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tools for class diagrams: &lt;a href="https://lucid.app/lucidchart" rel="noopener noreferrer"&gt;LucidChart&lt;/a&gt;, &lt;a href="https://app.diagrams.net/" rel="noopener noreferrer"&gt;App Diagrams&lt;/a&gt;, &lt;a href="https://icepanel.io/" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://creately.com/diagram-type/class-diagram/" rel="noopener noreferrer"&gt;Creately&lt;/a&gt;, &lt;a href="https://lucid.app/" rel="noopener noreferrer"&gt;Lucid&lt;/a&gt;, &lt;a href="https://www.smartdraw.com/" rel="noopener noreferrer"&gt;SmartDraw&lt;/a&gt;, &lt;a href="https://online.visual-paradigm.com/app/diagrams/" rel="noopener noreferrer"&gt;Visual-Paradigm&lt;/a&gt;, &lt;a href="https://creately.com/" rel="noopener noreferrer"&gt;Creately&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Class diagrams are a valuable tool for software developers because they provide a clear visual representation of the software's structure, making it easier to design, communicate, and understand complex systems. These components allow developers to define the building blocks of their software and the relationships between them.&lt;/p&gt;

</description>
      <category>diagrams</category>
      <category>softwaredevelopment</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
    <item>
      <title>Software Development Diagrams - Base Exercise</title>
      <dc:creator>Alice</dc:creator>
      <pubDate>Sun, 01 Oct 2023 07:05:00 +0000</pubDate>
      <link>https://dev.to/alicefolvaiter/software-development-diagrams-base-exercise-mpk</link>
      <guid>https://dev.to/alicefolvaiter/software-development-diagrams-base-exercise-mpk</guid>
      <description>&lt;p&gt;This exercise will be utilized in the upcoming articles to comprehend and apply the concepts using a real-life example.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;MyDoctor&lt;/strong&gt; application aims to be a management tool for the appointments of a doctor.&lt;/p&gt;

&lt;p&gt;A hospital has multiple offices. &lt;/p&gt;

&lt;p&gt;The users of the application can be doctors and patients.&lt;/p&gt;

&lt;p&gt;The doctors can apply to practice in offices and create a schedule for an office. The schedules in different offices can’t overlay.&lt;/p&gt;

&lt;p&gt;📝 &lt;em&gt;Example:&lt;br&gt;
Doctor Ana is available in Office 4 on the 4th of September during 1 PM - 5PM.&lt;br&gt;
Doctor Ana can’t practice in Office 5 on the 4th of September during 3PM - 8 PM, but she can practice in Office 5 on the 4th of September during 5:30PM - 8 PM.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The patients can see the existing doctors in the system, the schedule of the offices and can book appointments for specific doctors and for specific schedules. The appointments can be of 3 types: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Blood Test - 15 mins&lt;/li&gt;
&lt;li&gt;Consultation - 30 mins&lt;/li&gt;
&lt;li&gt;Surgery - 60 mins&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The booking of an appointment will not be possible if another appointment is already booked at the same time frame. An email is sent to the patient with the confirmation of the appointment.&lt;/p&gt;

&lt;p&gt;📝 &lt;em&gt;Example:&lt;br&gt;
&lt;strong&gt;Action 1&lt;/strong&gt;: User Mike will create a blood test booking for Doctor Ana for the 4th of September starting with 15:30 PM → Possible&lt;br&gt;
&lt;strong&gt;Action 2&lt;/strong&gt;: User Mike will create an intervention booking for Doctor Ana for the 4th of September starting with 15:00 PM → Not Possible&lt;br&gt;
&lt;strong&gt;Action 3&lt;/strong&gt;: User Mike will create an intervention booking for Doctor Ana for the 4th of September starting with 16:00 PM → Possible&lt;/em&gt;&lt;/p&gt;

</description>
      <category>diagrams</category>
      <category>productivity</category>
      <category>beginners</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>Software Development Diagrams - Introduction</title>
      <dc:creator>Alice</dc:creator>
      <pubDate>Sun, 01 Oct 2023 07:00:00 +0000</pubDate>
      <link>https://dev.to/alicefolvaiter/software-development-diagrams-introduction-5dnf</link>
      <guid>https://dev.to/alicefolvaiter/software-development-diagrams-introduction-5dnf</guid>
      <description>&lt;p&gt;In this article, we will start exploring the significance of diagrams, discuss the most important and commonly used types of diagrams, and list various online and offline tools for their creation.&lt;/p&gt;

&lt;p&gt;In software development, we need tools that help us to understand systems, to create representations of ideas, and to plan the steps and the end result of a requirement. Diagrams are very useful in software development, whether you are in a management, functional, or technical position. There are a lot of types of diagrams, but in this article, we will cover the most useful and used diagrams.&lt;/p&gt;

&lt;p&gt;Creating diagrams is quite easy, but there are some areas that need a little bit of attention, like the name of the component, the interaction and relationships between components. This is especially because you need someone that looks for the very first time on the diagram that you created, to understand what you needed to explain with it. So diagrams are like a unified language, and we need to learn to speak it.&lt;/p&gt;

&lt;p&gt;The most used diagrams from my point of view are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Class diagram&lt;/li&gt;
&lt;li&gt;Sequence diagram&lt;/li&gt;
&lt;li&gt;Flow diagram&lt;/li&gt;
&lt;li&gt;Use-case diagram&lt;/li&gt;
&lt;li&gt;Database Relationship Diagram&lt;/li&gt;
&lt;li&gt;C4 diagrams: Container diagram, Context diagram, Component diagram, Class diagram&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let’s get one by one to understand them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Class diagram&lt;/strong&gt; - is a diagram that contains the attributes and the operations of a class. It defines the relationships between classes and the constraints of their interaction. This kind of diagram is usually used to model an object-oriented system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sequence diagram&lt;/strong&gt; - shows process interactions in sequence between components in the form of messages exchanged between the processes and objects needed to carry out the functionality.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Flow diagram&lt;/strong&gt; - is like a visual map or picture that shows how things move or happen in a process. It uses shapes and arrows to illustrate the order and connections between steps or actions. It's a handy tool for understanding and explaining how something works, especially in things like computer programs or complex systems.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use-case diagram&lt;/strong&gt; - a use-case diagram is like a picture or chart that shows how people or things interact with a system or software. It's a way to understand what a system does from a user's perspective. Use-case diagrams help designers and developers figure out what a system needs to do to meet the needs of its users.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Database Relationship diagram&lt;/strong&gt; - is a visual map that shows how different pieces of information in a database are connected to each other. It uses lines and symbols to illustrate how data in one part of the database relates to data in another part. It helps people understand how different tables or collections of data are linked together, making it easier to manage and retrieve information from the database.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;C4 diagrams -&lt;/strong&gt; short for "Context, Container, Component, and Code" diagrams, are a set of visual representations used in software architecture to describe and document different aspects of a software system's structure and components. C4 diagrams are valuable for both high-level architectural discussions and low-level technical documentation. They help teams communicate effectively about a software system's design, enabling better understanding and decision-making throughout the development process.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tools
&lt;/h3&gt;

&lt;p&gt;There are multiple applications to create diagrams. I will mention the ones that I used and I think they are very useful: &lt;a href="https://app.diagrams.net/"&gt;App Diagrams&lt;/a&gt;, &lt;a href="https://icepanel.io/"&gt;IcePanel,&lt;/a&gt; &lt;a href="https://creately.com/diagram-type/class-diagram/"&gt;Creately&lt;/a&gt;, &lt;a href="https://dbdiagram.io/home"&gt;dbdiagram.io&lt;/a&gt;, &lt;a href="https://lucid.app/"&gt;Lucid&lt;/a&gt;, &lt;a href="https://miro.com/diagramming/online/"&gt;Diagramming&lt;/a&gt;, &lt;a href="https://www.canva.com/graphs/diagrams/"&gt;Canva&lt;/a&gt;, &lt;a href="https://www.smartdraw.com/"&gt;SmartDraw&lt;/a&gt;, &lt;a href="https://online.visual-paradigm.com/app/diagrams/"&gt;Visual-Paradigm&lt;/a&gt;, &lt;a href="https://creately.com/"&gt;Creately&lt;/a&gt;, &lt;a href="https://www.figma.com/figjam/diagramming-tool/"&gt;Figma&lt;/a&gt;, &lt;a href="https://miro.com/diagramming/online/"&gt;Miro&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Many articles and documents talk about this topic and explain various diagram types and how to use them. In this series of articles, my main focus will be to walk you through all these diagrams and provide essential insights. Additionally, we'll practice using a base exercise, which you can find in the next article.&lt;/p&gt;

&lt;p&gt;Please leave a comment with your most used diagram or with the tool that you use when creating diagrams.&lt;/p&gt;

&lt;p&gt;Thank you!&lt;/p&gt;

</description>
      <category>diagrams</category>
      <category>productivity</category>
      <category>beginners</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>eOffice - Collaboration through microservices using Redis</title>
      <dc:creator>Alice</dc:creator>
      <pubDate>Mon, 29 Aug 2022 20:00:31 +0000</pubDate>
      <link>https://dev.to/alicefolvaiter/eoffice-collaboration-through-microservices-using-redis-336c</link>
      <guid>https://dev.to/alicefolvaiter/eoffice-collaboration-through-microservices-using-redis-336c</guid>
      <description>&lt;h3&gt;
  
  
  Table of contents
&lt;/h3&gt;

&lt;p&gt;Overview&lt;br&gt;
Submission Category&lt;br&gt;
Video&lt;br&gt;
Link to the application&lt;br&gt;
Link to code&lt;br&gt;
Architecture&lt;br&gt;
How the data is stored&lt;br&gt;
Functionalities&lt;/p&gt;
&lt;h2&gt;
  
  
  Overview of My Submission
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;eOffice&lt;/strong&gt; is human resources platform that provides processes to onboard a new employee and to manage the benefits of the employees distributing the responsibilities between the different rolls.&lt;/p&gt;
&lt;h3&gt;
  
  
  Submission Category
&lt;/h3&gt;

&lt;p&gt;The submission category is &lt;strong&gt;Microservices Mavens&lt;/strong&gt; using for communication between services the pubSub feature from Redis.&lt;/p&gt;
&lt;h3&gt;
  
  
  Video
&lt;/h3&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/ornpa9Fs8YU"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture &amp;amp; Technologies
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Link to the application
&lt;/h2&gt;

&lt;p&gt;The application is hosted in Azure. &lt;br&gt;
&lt;a href="https://eofficeapp.azurewebsites.net/"&gt;Link to the application&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Link to Code
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/AlexandraFolvaiter"&gt;
        AlexandraFolvaiter
      &lt;/a&gt; / &lt;a href="https://github.com/AlexandraFolvaiter/e-office"&gt;
        e-office
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1 id="user-content-e-office--redis-hackathon-on-dev"&gt;&lt;a class="heading-link" href="https://github.com/AlexandraFolvaiter/e-office#e-office--redis-hackathon-on-dev"&gt;e-office | Redis Hackathon on Dev&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="user-content-link-to-the-application"&gt;&lt;a class="heading-link" href="https://github.com/AlexandraFolvaiter/e-office#link-to-the-application"&gt;Link to the application&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://eofficeapp.azurewebsites.net/" rel="nofollow"&gt;Link to the application&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="user-content-overview-video"&gt;&lt;a class="heading-link" href="https://github.com/AlexandraFolvaiter/e-office#overview-video"&gt;Overview video&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=ornpa9Fs8YU" rel="nofollow"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BIZMeb6k--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/17809789/187280074-fcc3ca59-bddc-435d-8137-a6b47761e516.png" alt="Youtube"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="user-content-project-description"&gt;&lt;a class="heading-link" href="https://github.com/AlexandraFolvaiter/e-office#project-description"&gt;Project description&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;eOffice is human resources platform that provides processes to onboard a new employee and to manage the benefits of the employees distributing the responsibilities between the different rolls.&lt;/p&gt;
&lt;p&gt;Functionalities&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;See all onboardings&lt;/li&gt;
&lt;li&gt;Create an onboarding&lt;/li&gt;
&lt;li&gt;See details of an onboarding&lt;/li&gt;
&lt;li&gt;See all system accounts requests&lt;/li&gt;
&lt;li&gt;Resolve a system account request&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="user-content-architecture-and-technologies"&gt;&lt;a class="heading-link" href="https://github.com/AlexandraFolvaiter/e-office#architecture-and-technologies"&gt;Architecture and technologies&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/17809789/187278724-3882c61c-9997-4c1c-bb58-1d3e054a28cc.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pUJ24MQa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/17809789/187278724-3882c61c-9997-4c1c-bb58-1d3e054a28cc.png" alt="a03d589d-d34d-403d-86fd-13e09f55e688"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Presentation project: Server Blazor Application using .Net 6.0&lt;/li&gt;
&lt;li&gt;Microservices: Web API using .Net 6.0&lt;/li&gt;
&lt;li&gt;Databases: SQL Server&lt;/li&gt;
&lt;li&gt;Microservices communication: Redis pub/sub&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Flow diagrams:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Create the onboarding
&lt;a rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/17809789/187279055-87c56b43-0cde-4bdc-be9a-8d1d3d74ff3d.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5RZ5bfn5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/17809789/187279055-87c56b43-0cde-4bdc-be9a-8d1d3d74ff3d.png" alt="CreateOnboarding Flow"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Resolve a system account request
&lt;a rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/17809789/187279074-4f186016-9504-4c3d-9b8b-8172bbda0e76.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aDrrmSfp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/17809789/187279074-4f186016-9504-4c3d-9b8b-8172bbda0e76.png" alt="resolve-sysytem-accounts-request-flow"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="user-content-how-to-run-it-locally"&gt;&lt;a class="heading-link" href="https://github.com/AlexandraFolvaiter/e-office#how-to-run-it-locally"&gt;How to run it locally?&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="user-content-prerequisites"&gt;&lt;a class="heading-link" href="https://github.com/AlexandraFolvaiter/e-office#prerequisites"&gt;Prerequisites&lt;/a&gt;&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;.Net 6.0&lt;/li&gt;
&lt;li&gt;3 SQL server databases&lt;/li&gt;
&lt;li&gt;A redis database&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="user-content-local-installation"&gt;&lt;a class="heading-link" href="https://github.com/AlexandraFolvaiter/e-office#local-installation"&gt;Local installation&lt;/a&gt;&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Add the connection strings in the appsettings.josn for each module for the databases&lt;/li&gt;
&lt;li&gt;Set as startup projects: eOffice, eOffice.Onboardings.API, eOffice.Leave.API, eOffice.SystemAccounts.API&lt;/li&gt;
&lt;li&gt;Run the projects&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="user-content-how-it-works"&gt;&lt;a class="heading-link" href="https://github.com/AlexandraFolvaiter/e-office#how-it-works"&gt;How it works&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="user-content-how-the-data-is-stored"&gt;&lt;a class="heading-link" href="https://github.com/AlexandraFolvaiter/e-office#how-the-data-is-stored"&gt;How the data is&lt;/a&gt;&lt;/h3&gt;…&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/AlexandraFolvaiter/e-office"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  Architecture
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--svzNZwOh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2ulp8ceye3qwd0hkxibc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--svzNZwOh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2ulp8ceye3qwd0hkxibc.png" alt="Image description" width="800" height="1248"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Presentation project: Server Blazor Application using .Net 6.0&lt;/li&gt;
&lt;li&gt;Microservices: Web API using .Net 6.0&lt;/li&gt;
&lt;li&gt;Databases: SQL Server &lt;/li&gt;
&lt;li&gt;Microservices communication: Redis pub/sub&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Language Used
&lt;/h3&gt;

&lt;p&gt;C# - .Net 6.0&lt;/p&gt;

&lt;h3&gt;
  
  
  Flow diagrams
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Create the onboarding&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5RZ5bfn5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/17809789/187279055-87c56b43-0cde-4bdc-be9a-8d1d3d74ff3d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5RZ5bfn5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/17809789/187279055-87c56b43-0cde-4bdc-be9a-8d1d3d74ff3d.png" alt="CreateOnboarding Flow" width="800" height="557"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Resolve a system account request&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aDrrmSfp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/17809789/187279074-4f186016-9504-4c3d-9b8b-8172bbda0e76.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aDrrmSfp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/17809789/187279074-4f186016-9504-4c3d-9b8b-8172bbda0e76.png" alt="resolve-sysytem-accounts-request-flow" width="800" height="952"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  How the data is stored
&lt;/h2&gt;

&lt;p&gt;The microservices are communicating with each other using the pub/sub from Redis, for each type of communication a different channel will be used.&lt;br&gt;
3 channels&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SystemAccount_Channel 

&lt;ul&gt;
&lt;li&gt;Publisher: Onboardings Module&lt;/li&gt;
&lt;li&gt;Subscriber:  SystemAccounts Module&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Leave_Channel

&lt;ul&gt;
&lt;li&gt;Publisher: Onboardings Module&lt;/li&gt;
&lt;li&gt;Subscriber: LeaveBalance Module&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Onboarding_Channel

&lt;ul&gt;
&lt;li&gt;Publisher: SystemAccounts Module, LeaveBalance Module&lt;/li&gt;
&lt;li&gt;Subscriber: Onboardings Module&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Publis code&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;var modelAsString = JsonConvert.SerializeObject(model);
_pubSub.Publish("channel_name", modelAsString);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Subscribe code&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;connection.GetSubscriber()
    .Subscribe("channel_name", (channel, message) =&amp;gt;
    {
        // DO something
    });
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Functionalities
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Dashboard&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--javredpL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/arj3dx4xw6ixqk3ewpee.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--javredpL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/arj3dx4xw6ixqk3ewpee.png" alt="Image description" width="800" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;See all onboardings&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ofdfvdaa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pti6o4mt2382wdl8pwqt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ofdfvdaa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pti6o4mt2382wdl8pwqt.png" alt="Image description" width="800" height="431"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create an onboarding&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NFTqUUa---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/13stmfs1g1tvdlf3fu0e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NFTqUUa---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/13stmfs1g1tvdlf3fu0e.png" alt="Image description" width="800" height="428"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;See details of an onboarding&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JNBuIciw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3djxv8nacqwnzxylf0og.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JNBuIciw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3djxv8nacqwnzxylf0og.png" alt="Image description" width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;See all system accounts requests&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oIBNzepz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mp5v8uv9okm8od4vcop6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oIBNzepz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mp5v8uv9okm8od4vcop6.png" alt="Image description" width="800" height="428"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Resolve a system account request&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5lALzWf2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/77q54sh8b67n6umjr2yo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5lALzWf2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/77q54sh8b67n6umjr2yo.png" alt="Image description" width="800" height="428"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Check out &lt;a href="https://redis.io/docs/stack/get-started/clients/#high-level-client-libraries"&gt;Redis OM&lt;/a&gt;, client libraries for working with Redis as a multi-model database.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Use &lt;a href="https://redis.info/redisinsight"&gt;RedisInsight&lt;/a&gt; to visualize your data in Redis.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Sign up for a &lt;a href="https://redis.info/try-free-dev-to"&gt;free Redis database&lt;/a&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>redishackathon</category>
      <category>redis</category>
      <category>microservices</category>
      <category>pubsub</category>
    </item>
    <item>
      <title>SmartGoals - Building a reliable application with Azure Services</title>
      <dc:creator>Alice</dc:creator>
      <pubDate>Mon, 28 Feb 2022 21:53:29 +0000</pubDate>
      <link>https://dev.to/alicefolvaiter/smartgoals-building-a-reliable-application-with-azure-services-cm6</link>
      <guid>https://dev.to/alicefolvaiter/smartgoals-building-a-reliable-application-with-azure-services-cm6</guid>
      <description>&lt;h2&gt;
  
  
  Table of Contents
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Motivation&lt;/li&gt;
&lt;li&gt;Overview of My Submission&lt;/li&gt;
&lt;li&gt;Functionalities&lt;/li&gt;
&lt;li&gt;Infrastructure Architecture &amp;amp; Technologies&lt;/li&gt;
&lt;li&gt;Link to Code on GitHub&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Motivation
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;SmartGoals&lt;/strong&gt; project was created to participate in the &lt;a href="https://dev.to/devteam/hack-the-microsoft-azure-trial-on-dev-2ne5"&gt;Microsoft Azure Trial Hackathon&lt;/a&gt; and to show the process of integrating an application in the Azure ecosystem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Overview of My Submission
&lt;/h2&gt;

&lt;p&gt;The main idea on which this project is created can be found in &lt;a href="https://github.com/AlexandraFolvaiter/smart-goals/blob/main/CONCEPTS.md" rel="noopener noreferrer"&gt;this file&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SmartGoals&lt;/strong&gt; aims to do the management of the goals and objectives that a person has, giving the opportunity to be accessible anywhere by any device. The user can update them as often as needed, keeping the progress and having an overview of the next steps that he has to make in order to complete the goal.&lt;/p&gt;

&lt;h2&gt;
  
  
  Submission Category
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;SmartGoals&lt;/strong&gt; is participating to Microsoft Azure Trial Hackathon in &lt;strong&gt;Computing Captains&lt;/strong&gt; category.&lt;/p&gt;

&lt;h2&gt;
  
  
  Functionalities
&lt;/h2&gt;

&lt;p&gt;A user can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;View all goals&lt;/li&gt;
&lt;li&gt;Add a new goal&lt;/li&gt;
&lt;li&gt;Edit an existing goal&lt;/li&gt;
&lt;li&gt;Remove an existing goal&lt;/li&gt;
&lt;li&gt;View the details of a goal&lt;/li&gt;
&lt;li&gt;View all the objectives&lt;/li&gt;
&lt;li&gt;Add a new objective&lt;/li&gt;
&lt;li&gt;Edit an existing objective&lt;/li&gt;
&lt;li&gt;Remove an existing objective&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The functional demo can be found here:&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/klh__CPJjwY"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Infrastructure Architecture and Technologies
&lt;/h2&gt;

&lt;p&gt;The application is based on 3 components:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A Client&lt;/strong&gt; - Is an Angular application deployed on a &lt;strong&gt;Azure App Service&lt;/strong&gt;. It allows users to see and manipulate the goals and objectives using a friendly UI.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;An API&lt;/strong&gt; - Is an .Net 6.0 Azure Function deployed on a &lt;strong&gt;Azure Function App&lt;/strong&gt;. It exposes an API with CRUD operations to manipulate the goals and the objectives.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A Database&lt;/strong&gt; - Is a &lt;strong&gt;Azure SQL Database&lt;/strong&gt; which stores the data.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The demo for the infrastructure can be found here:&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/pi5paErwZIA"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Link to Code on GitHub
&lt;/h2&gt;

&lt;p&gt;The code of the project was added on GitHub. Please check it out to see more details.&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&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%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/AlexandraFolvaiter" rel="noopener noreferrer"&gt;
        AlexandraFolvaiter
      &lt;/a&gt; / &lt;a href="https://github.com/AlexandraFolvaiter/smart-goals" rel="noopener noreferrer"&gt;
        smart-goals
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/17809789/155537976-960b0b3a-ebb5-41ab-ac70-d691b768c945.png"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F17809789%2F155537976-960b0b3a-ebb5-41ab-ac70-d691b768c945.png" alt="1"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Table of Contents&lt;/h1&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://github.com/AlexandraFolvaiter/smart-goals#motivation" rel="noopener noreferrer"&gt;Motivation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/AlexandraFolvaiter/smart-goals#project-description" rel="noopener noreferrer"&gt;Project description&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/AlexandraFolvaiter/smart-goals#infrastructure-architecture-&amp;amp;-technologies" rel="noopener noreferrer"&gt;Infrastructure Architecture &amp;amp; Technologies&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/AlexandraFolvaiter/smart-goals#functionalities" rel="noopener noreferrer"&gt;Functionalities&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/AlexandraFolvaiter/smart-goals#license" rel="noopener noreferrer"&gt;License&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Motivation&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;SmartGoals project was created to participate in the &lt;a href="https://dev.to/devteam/hack-the-microsoft-azure-trial-on-dev-2ne5" rel="nofollow"&gt;Microsoft Azure Trial Hackathon&lt;/a&gt; and to show the process of integrating an application in the Azure ecosystem.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Project description&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;The main idea on which this project is created can be found in &lt;a href="https://github.com/AlexandraFolvaiter/smart-goals/blob/main/CONCEPTS.md" rel="noopener noreferrer"&gt;this file&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The project aims to do the management of the goals and objectives that a person has, giving the opportunity to be accessible anywhere by any device. The user can update them as often as needed, keeping the progress and having an overview of the next steps that he has to make in order to complete the goal.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Infrastructure Architecture &amp;amp; Technologies&lt;/h1&gt;

&lt;/div&gt;
&lt;p&gt;The application is based on 3 components:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A Client&lt;/strong&gt; - Is an Angular application deployed on a &lt;strong&gt;Azure App Service&lt;/strong&gt;. It allows users to see and manipulate the goals and objectives using…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/AlexandraFolvaiter/smart-goals" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;For the next 30 days, the application can be found &lt;a href="https://smart-goals-app.azurewebsites.net" rel="noopener noreferrer"&gt;here&lt;/a&gt; and the API can be accessed &lt;a href="https://smartgoalsdemo.azurewebsites.net/api/swagger/ui" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>azuretrialhack</category>
      <category>dotnet</category>
      <category>angular</category>
      <category>azure</category>
    </item>
  </channel>
</rss>
