<?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>Forem: Bhagya Kithmini</title>
    <description>The latest articles on Forem by Bhagya Kithmini (@kithminiii).</description>
    <link>https://forem.com/kithminiii</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%2F708494%2F1e3a10ce-dbf8-4c34-843f-cc160537c675.jpg</url>
      <title>Forem: Bhagya Kithmini</title>
      <link>https://forem.com/kithminiii</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/kithminiii"/>
    <language>en</language>
    <item>
      <title>[Boost]</title>
      <dc:creator>Bhagya Kithmini</dc:creator>
      <pubDate>Wed, 22 Oct 2025 06:05:00 +0000</pubDate>
      <link>https://forem.com/kithminiii/-2a34</link>
      <guid>https://forem.com/kithminiii/-2a34</guid>
      <description></description>
    </item>
    <item>
      <title>Library Book Management Web Application</title>
      <dc:creator>Bhagya Kithmini</dc:creator>
      <pubDate>Thu, 08 Dec 2022 17:25:38 +0000</pubDate>
      <link>https://forem.com/kithminiii/library-book-management-web-application-5eag</link>
      <guid>https://forem.com/kithminiii/library-book-management-web-application-5eag</guid>
      <description>&lt;h3&gt;
  
  
  Overview of My Submission
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;About the web app (functionalities and flow)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This is a small web application for a library. The main goal of this web application is to allow users to add/view books and organize them into a table. The data can then be updated and deleted as needed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Used technologies/languages and reasons&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To create this web application, I used spring boot with the mongo DB. As a client, to test the web application we used POSTMAN.&lt;/p&gt;

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

&lt;p&gt;In the very first I went to start.spring.io, which is a spring initializer. In there I had to enter the relevant details of the project, which programming language I used to implement this, Spring Boot version likewise .Then I havd to generate this file. This is downloading as a zip file. After that I had to open it using Eclipse. &lt;/p&gt;

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

&lt;p&gt;*&lt;em&gt;Testing and Results with explaining CRUD operations *&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;•CRUD operations have been viewed in computer programming as the four core functions of persistent storage: creation, read, update, and delete (CRUD).&lt;/p&gt;

&lt;p&gt;•For testing, I utilized Postman, which is more versatile and allows us to test all endpoints.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Create Operation:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The create operation is a POST request that takes a BookLibrary model object as an input and saves it to Mongo DB using the repository's save() method. It returns the saved instance, which will have the unique id.&lt;/p&gt;

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

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

&lt;p&gt;&lt;strong&gt;Read Operation:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The read operation is a GET request to return all of a collection's documents.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Update Operation:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The update operation makes use of a PUT request, accepts book Id as a path variable, and utilizes the same save method (). Because the id is contained in the model object, it will be updated in the database in this scenario.&lt;/p&gt;

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

&lt;p&gt;*&lt;em&gt;Delete Operation: *&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The delete action makes use of the delete request. The controller implementation is shown below.&lt;/p&gt;

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

&lt;p&gt;Further I used validations to this web application.&lt;/p&gt;

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

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

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

&lt;p&gt;&lt;strong&gt;Guidelines to test the app&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Open the main application file and run it as a Java program to launch the Spring Boot application. The message appears in the console after the application runs correctly, as illustrated below. Now open the browser and type &lt;a href="http://localhost:8080"&gt;http://localhost:8080&lt;/a&gt; into the address bar.&lt;/p&gt;

&lt;p&gt;Open postman and click the ‘create’ button.&lt;/p&gt;

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

&lt;p&gt;1.First, click the ‘new’ button.&lt;br&gt;
2.After that click on the ‘Get request’.&lt;/p&gt;

&lt;p&gt;Fill in the form to create the Get Request&lt;/p&gt;

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

&lt;p&gt;Fill in the request name and store it to a collection; if one doesn't exist, make one. &lt;/p&gt;

&lt;p&gt;We'd get an empty postman request now:&lt;/p&gt;

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

&lt;p&gt;Send a simple restful get request to the spring boot service using Postman. &lt;/p&gt;

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

&lt;p&gt;We'd get the following result if we ran across the breakpoint. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Add http post api to codes.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Add this code to the controller:&lt;/strong&gt;&lt;/p&gt;

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

&lt;p&gt;It contains two features:&lt;/p&gt;

&lt;p&gt;1.It has a new endpoint named ‘/book’ which accepts an json object and call the service to save it&lt;br&gt;
2.It has a new endpoint named ‘/book/{id}’ which accepts an id and return the specified book object as json.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Add this code to the service:&lt;/strong&gt;&lt;/p&gt;

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

&lt;p&gt;To save and query the Book object, it simply uses Spring data JPA.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Test the post api with postman&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Create a new http request in postman&lt;/p&gt;

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

&lt;p&gt;Ensure that the POST http method is selected.&lt;/p&gt;

&lt;p&gt;Input the post url and headers.&lt;/p&gt;

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

&lt;p&gt;The following http headers are required by the Spring Boot restful post api:&lt;/p&gt;

&lt;p&gt;1.Content Type -application/json&lt;br&gt;
2.Accept- application/json&lt;/p&gt;

&lt;p&gt;It signifies that the server expects the client to send the item in json format.&lt;/p&gt;

&lt;p&gt;Input the body of the http post Instead of using the http url to pass the request body, the http post protocol uses the http body to do so.&lt;/p&gt;

&lt;p&gt;If we don't want to manually construct the json string, go to (localhost:8080/BookLibrary/Book/1) to acquire a json template for the Book class.&lt;/p&gt;
&lt;h3&gt;
  
  
  Submission Category:
&lt;/h3&gt;

&lt;p&gt;Own Adventure&lt;/p&gt;
&lt;h3&gt;
  
  
  Link to Code
&lt;/h3&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/kithminiii"&gt;
        kithminiii
      &lt;/a&gt; / &lt;a href="https://github.com/kithminiii/MongoAtlas-Hackathon"&gt;
        MongoAtlas-Hackathon
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      MongoDB Atlas Hackathon of Dev.to 2022
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;


</description>
      <category>atlashackathon22</category>
    </item>
    <item>
      <title>Getting Started With Non-relational Databases Using Mongodb 🍃</title>
      <dc:creator>Bhagya Kithmini</dc:creator>
      <pubDate>Wed, 10 Aug 2022 20:28:06 +0000</pubDate>
      <link>https://forem.com/kithminiii/getting-started-with-non-relational-databases-using-mongodb-4eei</link>
      <guid>https://forem.com/kithminiii/getting-started-with-non-relational-databases-using-mongodb-4eei</guid>
      <description>&lt;p&gt;&lt;strong&gt;What is a relational database?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you’ve worked with databases for a while, chances are, you started your career using a relational database. Examples of a relational databases are Microsoft Access, MySql, Oracle, etc.&lt;/p&gt;

&lt;p&gt;A relational database is a conventional database that uses tables to store data. In a relational database, each field data type is defined. That is if you define a particular field to accept only numbers for example age of a person, that field will not accept any character from a-z.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is a non-relational database?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before discussing fully what a non-relational database is, it is needful to define some key terminologies which can help us better understand a non-relational database and how it operates. These are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Key-value pairs.&lt;/li&gt;
&lt;li&gt;Document.&lt;/li&gt;
&lt;li&gt;Collections.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Key-value pairs&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Key-value pairs are identifiers and corresponding values. A simple way to know how this work is assuming one walks into a bar and asks for a waiter. The “waiter” in this scenario is the identifier while the name of the waiter for example “Bhagya”, is the value. So in JSON format, this can be represented as shown below.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
    "waiter": "Bhagya"
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;What is a document?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Documents are a set of JSON data. It is basically a set of key-value pairs that give you detailed information about an entity. Below, is an example of a document for our waiter example. It contains personal information about the waiter.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
    "id": 1,
    "name": "Bhagya",
    "username": "bhagya",
    "email": "bhagya@mongo.com",
    "phone": "+947623496905",
    "website": "bhagya.org"
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;What is a collection?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Collections are a set of documents. That is information about more than one entity. In a relational database, collections are what are known as tables.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[
  {
    "id": 1,
    "name": "Bhagya",
    "username": "bhagya",
    "email": "bhagya@mongo.com",
    "phone": "+947623496905",
    "website": "bhagya.org",
  },
  {
    "id": 2,
    "name": "Nimesh",
    "username": "Nimezzz",
    "email": "Snimesh@codebrix.com",
    "phone": "+94710876322",
    "website": "nimesh.net",
  },
  {
    "id": 3,
    "name": "Nethmini",
    "username": "nethmini",
    "email": "nethmini@bk.net",
    "phone": "+9476245555533",
    "website": "nethmini.info",
  }
]

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So with the aforementioned defined terms, we can define a non-relational database as a database that stores data in JSON-like format which is achieved through key-value pairs. Examples of non-relational databases are MongoDB, Redis, Couchbase, etc.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Getting started with MongoDB?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;MongoDB is a non-relational database. That is, it doesn’t store data in columns and rows but in BSON format. It is an open-source database founded in 2007. Open-source applications are software whose codebase is open to contributions from other developers.&lt;/p&gt;

&lt;p&gt;Working with MongoDB can be in two variants. We can either access it online using MongoDB atlas or download it locally on our computer. For local downloads, we have two editions which are enterprise and community editions. The enterprise edition is the paid version while the community version can be used for free, obviously with limited capabilities when compared to the former.&lt;/p&gt;

&lt;p&gt;We can access it online via&lt;/p&gt;

&lt;p&gt;• MongoDB shell&lt;/p&gt;

&lt;p&gt;• MongoDB compass&lt;/p&gt;

&lt;p&gt;Registering for MongoDB Atlas&lt;/p&gt;

&lt;p&gt;Before using any of the tools to start performing database operations, you need to register an account with MongoDB Atlas. It is a cloud database, that is all instead of hosting your own server, you just need to register and it’ll take care of what you need to do at the backend. To create an atlas account, follow the steps below&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to mongodb.com&lt;/li&gt;
&lt;li&gt;For practice, click on the Try Free option. This allows you to work with Atlas for development purposes.&lt;/li&gt;
&lt;li&gt;A bio-data form will come up, fill in the required details. You can also use your Gmail account to sign up.&lt;/li&gt;
&lt;li&gt;Next, you log in using the login details you just created&lt;/li&gt;
&lt;li&gt;You can now proceed with deploying a free cluster by clicking on Build a cluster.&lt;/li&gt;
&lt;li&gt;Three different option is available to you, the dedicated and serverless option are both paid version, for development purpose, click on the shared version.&lt;/li&gt;
&lt;li&gt;You can now proceed to select a cloud provider and region.&lt;/li&gt;
&lt;li&gt;Click on create cluster button.&lt;/li&gt;
&lt;li&gt;After registration, you need to create a username and password alongside enabling database access.&lt;/li&gt;
&lt;li&gt;Click database access. It will prompt you to add a database user.&lt;/li&gt;
&lt;li&gt;Enter your preferred username and password.&lt;/li&gt;
&lt;li&gt;Click on network access on the left pane.&lt;/li&gt;
&lt;li&gt;Click on Add IP Address.&lt;/li&gt;
&lt;li&gt;You can choose to allow specific IP addresses, or for development purposes, you can just allow access from anywhere.&lt;/li&gt;
&lt;li&gt;Click on confirm. Now you can proceed to use MongoDB Shell or Compass.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Using MongoDB shell&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;MongoDB shell is a command-line environment that can be used to access your database.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Using MongoDB compass&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;MongoDB Compass is a tool like MongoDB shell that can be used to interact with our database. However, unlike the MongoDB shell which is primarily a command prompt interface, compass has a graphical user interface that makes it easy to work with.&lt;/p&gt;

&lt;p&gt;To download and work with compass, follow the instruction below.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Download and install.&lt;/li&gt;
&lt;li&gt;Go back to your Atlas homepage, and click on connect.&lt;/li&gt;
&lt;li&gt;Click on connect using MongoDB Compass.&lt;/li&gt;
&lt;li&gt;Copy the connection string from Atlas and paste it into the file path shown below.&lt;/li&gt;
&lt;li&gt;Click connect.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your connection is successful, you should see all databases created will be listed. You can view them by clicking on each one. And you can also create a new database by clicking on the create database button.&lt;/p&gt;

&lt;p&gt;MongoDB compass lets you create your database, collection, and document in a very seamless way. If you would like to explore more, you can refer to the official documentation. For this tutorial, we’ll be focusing on the MongoDB shell which is a little bit complex. So let’s look at how we can perform CRUD operations using the MongoDB shell.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Performing CRUD operations on our database&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;CRUD is an acronym for creating, reading, updating, and deleting in programming. For one to perform the read, update or delete operation, a record has to be created initially on the database. Creating a record is adding data about an entity. Read operation means to get or view records in the database. The update operation is to make changes to the record that is in view. Delete operation means to remove a specific record.&lt;/p&gt;

</description>
      <category>mongodb</category>
    </item>
    <item>
      <title>Setting up a Spring Boot application with MongoDB🍃</title>
      <dc:creator>Bhagya Kithmini</dc:creator>
      <pubDate>Wed, 10 Aug 2022 20:27:00 +0000</pubDate>
      <link>https://forem.com/kithminiii/setting-up-a-spring-boot-application-with-mongodb-20cf</link>
      <guid>https://forem.com/kithminiii/setting-up-a-spring-boot-application-with-mongodb-20cf</guid>
      <description>&lt;p&gt;Spring Boot provides excellent support for applications accessing MongoDB as a database.&lt;/p&gt;

&lt;p&gt;The following preparations are necessary to create our own application using Spring Data MongoDB.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Configuration&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As a document-oriented database, MongoDB will not be connected to our application using Hibernate as an ORM layer. Instead, we add &lt;code&gt;spring-boot-starter-data-mongodb&lt;/code&gt; as a dependency to our app, providing a similar approach to accessing MongoDB using POJOs and repositories.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;dependency&amp;gt;
    &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;spring-boot-starter-data-mongodb&amp;lt;/artifactId&amp;gt;
&amp;lt;/dependency&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Required Maven dependency&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;With this dependency in place, we can extend our &lt;code&gt;application.yml&lt;/code&gt;or application.properties with a URI. If the database does not exist yet, MongoDB will create it automatically. With setting &lt;code&gt;auto-index-creatio&lt;/code&gt;n to &lt;code&gt;true&lt;/code&gt;, unique indexes are added during the startup of our app if they are annotated in our documents with &lt;code&gt;@Indexed(unique = true)&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;spring.data.mongodb.uri=mongodb\://localhost\:27017/mongo
spring.data.mongodb.auto-index-creation=true
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Only the URI is required for a successful database connection&lt;/p&gt;

&lt;p&gt;In our configuration class,&lt;code&gt;@EnableMongoRepositories&lt;/code&gt; should be set. This will search for classes in the specified package that extend &lt;code&gt;MongoRepository&lt;/code&gt; - an example of this will be given in a moment. By providing that &lt;code&gt;ValidatingMongoEventListener&lt;/code&gt; all documents are validated before persisting, we can extend their fields with &lt;code&gt;javax.validation&lt;/code&gt; constraints like &lt;code&gt;@NotNull&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@Configuration
@EnableMongoRepositories("io.bootify.mongo.repos")
public class MongoConfig {

    @Bagya
    public ValidatingMongoEventListener validatingMongoEventListener(
            final LocalValidatorFactoryBean factory) {
        return new ValidatingMongoEventListener(factory);
    }

}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The first version of our config&lt;/p&gt;

&lt;p&gt;Furthermore, we want to enable transaction support for our application. This allows us, for example, to mark the methods of our services as &lt;code&gt;@Transactional&lt;/code&gt;. Please note that this requires our MongoDB instance to be initialized as a replica set to support this feature.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@Bagya
public MongoTransactionManager transactionManager(final MongoDatabaseFactory databaseFactory) {
    return new MongoTransactionManager(databaseFactory);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Adding transaction support to our config&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example Document and Repository&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;With these preparations, we can already define a simple document and its associated repository. For our example, we use a primary key of type String, which is automatically generated by MongoDB as ObjectID if we do not provide it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@Document
public class Customer {

    @Id
    private String id;

    @Size(max = 255)
    private String firstName;

    @Size(max = 255)
    private String lastName;

    @Indexed(unique = true)
    @NotNull
    @Size(max = 255)
    private String email;

}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Our first POJO mapped to a collection named “customer”&lt;/p&gt;

&lt;p&gt;We add our repository by extending &lt;code&gt;MongoRepository&lt;/code&gt;. It works in the same way as known from Spring Data and can be extended with custom queries.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public interface CustomerRepository extends MongoRepository&amp;lt;Customer, String&amp;gt; {

    Customer findByEmail(String email);

}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Basic Repository for MongoDB&lt;/p&gt;

&lt;p&gt;With this, all preparations are done to connect our Spring Boot application with MongoDB. In Bootify’s Free plan, we can generate the application with our custom database schema without registration. The runnable source code of our application is then directly available for download.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Accessibility 101</title>
      <dc:creator>Bhagya Kithmini</dc:creator>
      <pubDate>Sun, 22 May 2022 11:02:58 +0000</pubDate>
      <link>https://forem.com/kithminiii/accessibility-101-5gi1</link>
      <guid>https://forem.com/kithminiii/accessibility-101-5gi1</guid>
      <description>&lt;p&gt;&lt;strong&gt;Some accessibility practices that you should always keep in mind when building websites.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Accessibility&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Accessibility, also known as A11y, allows websites to be used by everyone. Yes, everyone, not just the disabled. For example, an individual using their mobile device in the sun would also need an accessible website, the same as someone whose abilities are changing due to ageing. Accessibility allows us to build an inclusive web that works for everyone. Without further ado, let's discuss some accessibility practices that we should always keep in mind when building websites that work for everyone.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Colour Contrast&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Sufficient colour contrast between text and background is important. A good text to background colour contrast ratio allows easy reading of the content of a web page. People with poor eyesight, colour blindness and other eye defects would find it difficult to distinguish between the text and the background of a web page with poor colour contrast. To ensure good contrast, you should follow the WCAG AA guidelines which specify a minimum contrast ratio of 3:1 for large text and 4.5:1 for smaller text.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Links&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Links shouldn't be left empty as this makes it difficult for screen readers to understand. When a screen reader goes to that link, it doesn't say anything. For instance, if you have a link or button with a font icon, but without a text, you can fix the link or button by adding a hidden span indicating what it is, changing the icon to an SVG with a title or changing the icon to an image with alt text.&lt;/p&gt;

&lt;p&gt;❌&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    &amp;lt;a href="#"&amp;gt;
        &amp;lt;i class="fa fa-search"&amp;gt;&amp;lt;/i&amp;gt;
    &amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✅&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!-- visually hidden --&amp;gt;
    &amp;lt;a href="#"&amp;gt;
        &amp;lt;span class="hidden_span"&amp;gt;search for recipes&amp;lt;/span&amp;gt;
        &amp;lt;i class="fa fa-search"&amp;gt;&amp;lt;/i&amp;gt;
    &amp;lt;/a&amp;gt;

&amp;lt;!-- SVG with title --&amp;gt;
    &amp;lt;a href="#"&amp;gt;
        &amp;lt;svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 490 490" style="enable-background:new 0 0 490 490;" xml:space="preserve"&amp;gt;
            &amp;lt;title&amp;gt;Search for recipes&amp;lt;/title&amp;gt;
            &amp;lt;path d="M437.588,202.053C437.588,90.634,344.307,0,229.643,0S21.683,90.634,21.683,202.053s93.296,202.068,207.96,202.068 c43.421,0,83.744-13.04,117.128-35.243L456.982,490l11.335-10.318L359.242,359.809C406.918,322.749,437.588,265.857,437.588,202.053 z M229.643,388.809c-106.23,0-192.647-83.785-192.647-186.756S123.412,15.313,229.643,15.313c106.216,0,192.633,83.77,192.633,186.741S335.858,388.809,229.643,388.809z"/&amp;gt;&amp;lt;g&amp;gt;&amp;lt;/g&amp;gt;&amp;lt;g&amp;gt;&amp;lt;/g&amp;gt;&amp;lt;g&amp;gt;&amp;lt;/g&amp;gt;&amp;lt;g&amp;gt;&amp;lt;/g&amp;gt;&amp;lt;g&amp;gt;&amp;lt;/g&amp;gt;&amp;lt;g&amp;gt;&amp;lt;/g&amp;gt;&amp;lt;g&amp;gt;&amp;lt;/g&amp;gt;&amp;lt;g&amp;gt;&amp;lt;/g&amp;gt;&amp;lt;g&amp;gt;&amp;lt;/g&amp;gt;&amp;lt;g&amp;gt;&amp;lt;/g&amp;gt;&amp;lt;g&amp;gt;&amp;lt;/g&amp;gt;&amp;lt;g&amp;gt;&amp;lt;/g&amp;gt;&amp;lt;g&amp;gt;&amp;lt;/g&amp;gt;&amp;lt;g&amp;gt;&amp;lt;/g&amp;gt;&amp;lt;g&amp;gt;&amp;lt;/g&amp;gt;
        &amp;lt;/svg&amp;gt;
    &amp;lt;/a&amp;gt;

&amp;lt;!-- Image with alt --&amp;gt;
    &amp;lt;button&amp;gt;
       &amp;lt;img src="search.svg" alt="Search for recipes"&amp;gt;
    &amp;lt;/button&amp;gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Labels&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A label is an important part of a form, it makes screen reading easy. A lot of people think a placeholder can replace a label, no, a placeholder is only meant to give exemplary data for the input. Here are some ways of labelling your input:&lt;/p&gt;

&lt;p&gt;❌&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!--- no label ---&amp;gt;
&amp;lt;input id="name" name="name" type="text" /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✅&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;label for="name"&amp;gt;Name&amp;lt;/label&amp;gt;
&amp;lt;input id="name" name="name" type="text" /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✅&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;label&amp;gt;
  Name:
  &amp;lt;input name="name" type="text" /&amp;gt;
&amp;lt;/label&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✅&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!-- visually hidden label --&amp;gt;
&amp;lt;label for="name" class="hidden_label"&amp;gt;Name&amp;lt;/label&amp;gt;
&amp;lt;input id="name" name="name" type="text" /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Focus state&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The Focus state shows the currently focused element and it is a requirement for a site to be considered accessible under the Web Content Accessibility Guidelines (WCAG). However, most developers have at one point or the other used &lt;code&gt;:focus{outline:none&lt;/code&gt;} to remove focus from an element, this is a bad accessibility practice. To meet accessibility requirements, we can replace the default outline with our own focus indicator e.g adding a border styling on focus.&lt;/p&gt;

&lt;p&gt;❌&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;:focus{
outline:none;
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✅&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;:focus{
outline: none;
border: 2px solid black;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Alt Text&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;According to the WCAG guideline, all non-text content that is presented to the user should have a text alternative that serves the equivalent purpose. An alt text is an invisible text describing an image, it makes images on a website accessible to individuals with visual impairment using a screen reader and users who can't load the image due to slow internet or user setting. Images without alt text only get read as 'image' by the screen reader, this is why an alt text should be accurate and concise in describing an image.&lt;/p&gt;

&lt;p&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%2Frjrmscsn9p524d5ravzm.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%2Frjrmscsn9p524d5ravzm.PNG" alt=" " width="296" height="296"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;❌&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;img src="cat.png" alt="A cat" /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✅&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;img src="cat.png" alt="A brown cat laying on a rug" /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Headings&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Headings are a way of structuring web content, they aren't just to display text based on size, they're important for accessibility too. They allow screen readers and other assistive technology users to skip from heading to heading. A webpage should only contain one h1 tag, don't use headings where they're not needed e.g to emphasize or highlight text, instead, use CSS classes and don't skip headings e.g from &lt;code&gt;&amp;lt;h2&amp;gt;&lt;/code&gt; to &lt;code&gt;&amp;lt;h4&lt;/code&gt;&amp;gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ambiguous links&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Link text such as 'read more', 'click here', 'more', etc can be ambiguous when read out of context by screen readers. You can fix this by using a more informative text.&lt;/p&gt;

&lt;p&gt;❌&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;a src="files.html"&amp;gt;Click here&amp;lt;/a&amp;gt; to view all files.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✅&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;a src="files.html"&amp;gt;View all files&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>a11y</category>
      <category>discuss</category>
      <category>beginners</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Accessibility (A11y) why is it so important?🧵</title>
      <dc:creator>Bhagya Kithmini</dc:creator>
      <pubDate>Thu, 19 May 2022 14:03:02 +0000</pubDate>
      <link>https://forem.com/kithminiii/accessibility-a11y-why-is-it-so-important-4eci</link>
      <guid>https://forem.com/kithminiii/accessibility-a11y-why-is-it-so-important-4eci</guid>
      <description>&lt;p&gt;&lt;strong&gt;What is "a11y" 🤔?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A11y - ACCESSIBILITY&lt;/p&gt;

&lt;p&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%2Ff5rq75bd7q0uhz1thfqx.jpg" 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%2Ff5rq75bd7q0uhz1thfqx.jpg" alt=" " width="640" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why do we write "a11y"?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Because between the letters "a" and "y" there are 11 other letters :)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is network accessibility?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Surely you've experienced the annoyance of a slow page loading, unreadable font, bad and strange navigation, blurry and overlapping colors, a page that looks bad and doesn't work on a mobile device.&lt;/p&gt;

&lt;p&gt;These problems may be a minor inconvenience for us, but for people with disabilities, they may UNTILALLY limit the use of the Internet.&lt;/p&gt;

&lt;p&gt;Accessibility means that websites and web applications should use tools and technologies that facilitate the understanding, navigation and interaction of a disabled person through the website or application.&lt;/p&gt;

&lt;p&gt;Such a procedure may seem difficult and unnecessary at first, but nearly 15% of people around the world have some kind of disability (about 1 billion people).&lt;/p&gt;

&lt;p&gt;Taking care of the accessibility of your website or application takes on a different meaning!&lt;/p&gt;

&lt;p&gt;The problem is so big that even 98% of the best sites in the world do not offer full accessibility!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Types of disabilities to keep in mind when designing a fully accessible website/app:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Visual disability&lt;/li&gt;
&lt;li&gt;Hearing impairment&lt;/li&gt;
&lt;li&gt;Disorders of the central and peripheral nervous system&lt;/li&gt;
&lt;li&gt;Cognitive impairment&lt;/li&gt;
&lt;li&gt;Motor disability&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The main assumption of A11 is that people with disabilities should have the same access to information as people without.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ACCESSIBILITY STANDARDS&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Level A If the page is not adapted to this level, it will be unavailable.&lt;/p&gt;

&lt;p&gt;Level AA Increased level of accessibility for users, removes the greatest barriers and difficulties in accessibility for the user.&lt;/p&gt;

&lt;p&gt;Leve AAA Highest level of availability desired, but not quite necessary.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;EXAMPLES OF ACCESSIBILITY&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Alternative texts for images.&lt;/li&gt;
&lt;li&gt;Keyboard functionality (Using the mouse may be difficult in some cases).&lt;/li&gt;
&lt;li&gt;Audio transcription.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Happy Coding!☕​🌱
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>a11y</category>
      <category>discuss</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>CSS For a Little Kid 🌸🌈</title>
      <dc:creator>Bhagya Kithmini</dc:creator>
      <pubDate>Sun, 15 May 2022 15:55:33 +0000</pubDate>
      <link>https://forem.com/kithminiii/css-for-a-little-kid-5ag8</link>
      <guid>https://forem.com/kithminiii/css-for-a-little-kid-5ag8</guid>
      <description>&lt;p&gt;Here I am going to teach you everything you need to know about CSS. So you can turn your blank HTML into something beautiful. I will not be covering every property or option that CSS has to offer, because there are hundreds. But I will be covering all the concepts you need to know in order to get started with CSS.&lt;/p&gt;

&lt;p&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%2Fkh1221jwu45kypmq109r.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%2Fkh1221jwu45kypmq109r.gif" alt=" " width="300" height="289"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Let’s first get started with what CSS is:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A common misconception is that CSS is a programming language. But that is incorrect. CSS is actually a styling language that is used for modifying the appearance of the content of web pages. Just as HTML is used for the content of web pages.CSS is used for the presentation of that content. Due to the fact that CSS is used for presentation and design. There are many ways to do the same thing. HTML on the other hand has set elements for most things. This means there is usually only one correct way to do things in HTML. The ability to do things in many different ways is the reason, most people either love or hate CSS.&lt;/p&gt;

&lt;p&gt;I personally love it, since it lets you express your creativity and gives you the freedom to do things how you want. Now that we understand what CSS is let’s dive into the details of how to use CSS. &lt;/p&gt;

&lt;p&gt;First, we need to discuss the syntax of CSS.&lt;/p&gt;

&lt;p&gt;Luckily the syntax is straightforward and easy to understand.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Selector{
    Property 1 :value;
    Property 2:value;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The first part of the syntax is a selector.&lt;/p&gt;

&lt;p&gt;There are many different types and combinations of selectors, which we’ll talk about later. But for now, all you need to know is that a CSS style starts with a selector to apply the style too. Next comes an opening and closing curly brackets. That is used to denote the start and end of the styles that apply to the selector.&lt;/p&gt;

&lt;p&gt;Everything in between these curly brackets will be styles that are applied to the HTML elements that match the selector.&lt;/p&gt;

&lt;p&gt;Lastly inside the curly brackets, is one or more property-value pairs. Each of these pairs defines a property such as color, font size, width, etc, and a value for that property.&lt;/p&gt;

&lt;p&gt;A basic example of the CSS syntax will be setting the text color of all h1 elements to blue.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;h1{
    Color: blue;
 }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now that we have the syntax out of the way.&lt;/p&gt;

&lt;p&gt;Let’s focus on the various selectors.Css contains many different types of selectors but the main selectors are ‘element’, ‘class’, and ‘id’ selectors.&lt;/p&gt;

&lt;p&gt;We have already seen the element selector in the previous example of turning all h1’s blue. Any HTML element can be used as a selector and this style is defined for that selector will apply to all HTML elements of that type. By far the most common and useful selector is the class selector.&lt;/p&gt;

&lt;p&gt;The class selector lets you select HTML elements based on their class attribute.&lt;/p&gt;

&lt;p&gt;A class is just an attribute that all HTML elements can have and is used with CSS to distinguish elements for specific styling.&lt;/p&gt;

&lt;p&gt;The class attribute can also have multiple different classes in the same attribute as long as they are separated by a space.&lt;/p&gt;

&lt;p&gt;Classes are the most common selector used because they are amazing for creating reusable components.&lt;/p&gt;

&lt;p&gt;For example, if you have a site with three different types of buttons that all share the same basic styling but have a different color.&lt;/p&gt;

&lt;p&gt;You can use one base class of buttons to define all the styles shared between all buttons. You can have then three other classes that define the specific color for the button.&lt;/p&gt;

&lt;p&gt;Then all you need to do is add both the base button class and your color-specific class to your HTML button element. Here I have all the styles defined in the base button class and the color-specific class.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;button class =”btn btn-1”&amp;gt;button 1&amp;lt;/button&amp;gt;
&amp;lt;button class =”btn btn-2”&amp;gt;button 2&amp;lt;/button&amp;gt;
&amp;lt;button class =”btn btn-3”&amp;gt;button 3&amp;lt;/button&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.btn{
    Padding : 10px;
    color:white;
}

 btn-1{background-color:green;}

 btn-1{background-color:blue;}

 btn-1{background-color:purple;}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The last comment selector is the id selector&lt;/p&gt;

&lt;p&gt;The id selector is very similar to the class selector in that it is an HTML attribute. But an element can only have one id while it can have multiple classes. And id also should be unique across the entire web page. But HTML does not actually enforce this.&lt;/p&gt;

&lt;p&gt;To use an id as a selector you simply need to use a pound sign followed by the id name, much like how classes use a period followed by the class name.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;h1 id=”main-header&amp;gt;Title&amp;lt;/h1&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#id{
 property:value;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On top of having many different selectors, CSS has multiple different ways to combine selectors together to make your selectors more specific.&lt;/p&gt;

&lt;p&gt;The first way to combine selectors is specify multiple selectors that an element must have in order to be styled. To do this, you need to write the various different selectors together with no spacing between them.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.selector-1.selector-2{
    property:value;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For example, if you wanted to select all h1 elements with the class large heading, then you would write the following selector.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;h1 class=”large-heading”&amp;gt;Title&amp;lt;/h1&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;h1.large-heading {
    font-size:200%;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you wanted to select an element with the id big-blue and both the class large blue.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;h2 id =”big-blue” class=”large blue”&amp;gt;Title&amp;lt;/h2&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#big-blue.large.blue{
    Color:blue;
    font-size:200%;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;All the HTML elements can be combined in this way as many times as you want to create specific or general rules.&lt;/p&gt;

&lt;p&gt;Another way to combine selectors is to use multiple selectors to specify an ancestor of an element. To do this you will put a space between the ancestor and child selector.&lt;/p&gt;

&lt;p&gt;For example to select all p tags inside a div, you simply need to use the following selector.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;div&amp;gt;
    &amp;lt;p&amp;gt;Selected&amp;lt;/p&amp;gt;
    &amp;lt;p&amp;gt;Selected&amp;lt;/p&amp;gt;
    &amp;lt;span&amp;gt;
        &amp;lt;p&amp;gt;Selected&amp;lt;/p&amp;gt;
    &amp;lt;/span&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;div p {
    Color : red;
 }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will select all p tags, that have a div as their ancestor. Even if the div tag is not the direct parent of the p tag. This combination of selectors can be combined with the previous combination of selectors to &lt;br&gt;
Make even more specific selectors.&lt;/p&gt;

&lt;p&gt;For example, to select all h1 tags, with the class of brown to have a header with the class main header as their ancestor, you would do this.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;header class=”main-header&amp;gt;
    &amp;lt;h1 class=”brown”&amp;gt;Selected&amp;lt;/h1&amp;gt;
&amp;lt;/header&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;header.main-header h1.brown{
    Color: brown;
 }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The last common combination of selectors is when you want to share a set of style properties and values between multiple selectors.&lt;/p&gt;

&lt;p&gt;If you have a class big and another class large, that both have the same style properties and values, then you can combine these selectors into one selector by using a comma between the selectors. This allows you to avoid duplication.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.big{
    font-size:200%              
}

.large{
    font-size:200%
}

.big, .large{
    font-size:200%
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It is important to note that all the CSS combination selectors can be used together to create even more complex combinations if needed.&lt;/p&gt;

&lt;p&gt;There is also one other form of selector the everything selector, that is used to select every element on the entire web page. This selector is defined as the asterisk symbol and is only used to set some defaults for your entire webpage such as font family.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;*{
font-family: Arial;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The last thing we need to discuss before writing some css is how to load the styles we write into our html page.&lt;/p&gt;

&lt;p&gt;There are 3 main ways to do this. The first and by far the worst is to use inline styles. An inline style is CSS that is written directly inside an Html element and thus does not need a selector.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;h1 style =”color:red;”&amp;gt;Red Title&amp;lt;/h1&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is done through the use of the style attribute. This is a terrible idea though since HTML is meant for the content only and mixing CSS styles into the HTML elements adds presentation to the HTML file, which is meant for CSS files. It prevents us from reusing those styles anywhere else since they are written into the actual HTML element.&lt;br&gt;
Lastly, depending on the styles, you use inline, your page may load slower.&lt;/p&gt;

&lt;p&gt;The second option of using the style HTML element is slightly better but still a bad idea.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;head&amp;gt;
    &amp;lt;style&amp;gt;
        .blue{
            Color:blue;
        }
    &amp;lt;/style&amp;gt;
&amp;lt;/head&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The style element is an HTML element defined in the head and formatted exactly like a CSS file. The problem with using the style element though is that the presentation of the web page is defined in the HTML file and not a CSS file. The styles you define in the style element are also only available on the page you define them and are not reusable across multiple pages.&lt;/p&gt;

&lt;p&gt;The final and the best way to define CSS styles is to use a separate CSS file and link to it from the HTML.&lt;br&gt;
All the styles for the entire webpage can be defined in one or more CSS files and they can be added to any web page by using a simple link element inside the head.&lt;/p&gt;

&lt;p&gt;The link element is a simple element that can be used to link files to the HTML and its main use is to link CSS files. The link element is also an empty element that uses the rel attribute which stands for the relationship to define the relationship between the linked file and the HTML document. In the case of CSS, the rel attribute will be a stylesheet since CSS is a stylesheet for the HTML.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;head&amp;gt;
&amp;lt;link rel=”stylesheet”  hrf=”style.css&amp;gt;
&amp;lt;/head&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The only other attribute that we need to define is the href attribute. The href attribute works exactly the same as the href attribute of an anchor tag and should point to either your CSS file or the URL of another person’s CSS file. &lt;/p&gt;

&lt;p&gt;Using external CSS files like this is the best way to CSS since it separates the presentation and contents of websites and allows the reusability of styles across the website. &lt;/p&gt;

&lt;p&gt;Now that we have an understanding of how to write CSS styles and select specific Html elements.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Happy Coding !☕​🌱
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>beginners</category>
      <category>discuss</category>
      <category>css</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Tik Tik ToDo🌺 🍃</title>
      <dc:creator>Bhagya Kithmini</dc:creator>
      <pubDate>Tue, 10 May 2022 18:38:13 +0000</pubDate>
      <link>https://forem.com/kithminiii/tik-tik-todo-48dc</link>
      <guid>https://forem.com/kithminiii/tik-tik-todo-48dc</guid>
      <description>&lt;h3&gt;
  
  
  Overview of My Submission:
&lt;/h3&gt;

&lt;p&gt;Hello.👋&lt;/p&gt;

&lt;p&gt;Actually I am new to appwrite. So had to educate my self on how appwrite works and make sure that I have understood all the concepts.😎🚩&lt;/p&gt;

&lt;p&gt;Was busy with my studies, so couldn't create a big application using appwrite. But I created a simple ToDo application with AppWrite and React Native.🙂&lt;/p&gt;

&lt;h1&gt;
  
  
  To Run the Project
&lt;/h1&gt;

&lt;p&gt;You guys also can run this web app on your machine too.❤️&lt;/p&gt;

&lt;p&gt;Now run the following commands and you should be good to go 💪🏼&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ npm install
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;For iOS devices you'll need to link the relevant CocoaPods. &lt;br&gt;
From the /ios directory run:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pod install
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;To run on Android:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ npx react-native run-android

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;To run on iOS:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ npx react-native run-ios
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Submission Category:
&lt;/h3&gt;

&lt;p&gt;Wacky Wildcards&lt;/p&gt;
&lt;h3&gt;
  
  
  Link to Code
&lt;/h3&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/kithminiii"&gt;
        kithminiii
      &lt;/a&gt; / &lt;a href="https://github.com/kithminiii/TikTik-ToDo"&gt;
        TikTik-ToDo
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      ToDo App for Dev + Appwrite Hackathon 2022
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
TikTik-ToDo&lt;/h1&gt;
&lt;a href="https://appwrite.io/" rel="nofollow"&gt;
  &lt;img src="https://camo.githubusercontent.com/6ab4231b1f0b0ed30087c4e8f6cf175fe48dc37637f2d0eda4c3c7e685e2771c/68747470733a2f2f61707077726974652e696f2f696d616765732d65652f70726573732f62616467652d70696e6b2d627574746f6e2e737667" alt="Built with Appwrite"&gt;
&lt;/a&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/83062e58b50328e31bc7d8050806e3c0d69d7967236ff4effafc530dcb60a542/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f33716966747237676b6975776e6a6f63323879682e706e67"&gt;&lt;img src="https://camo.githubusercontent.com/83062e58b50328e31bc7d8050806e3c0d69d7967236ff4effafc530dcb60a542/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f33716966747237676b6975776e6a6f63323879682e706e67" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;
To Run the Project&lt;/h1&gt;
&lt;p&gt;Now run the following commands and you should be good to go 💪🏼&lt;/p&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;$ npm install
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;For iOS devices you'll need to link the relevant CocoaPods. From the /ios directory run:&lt;/p&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;pod install
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;To run on Android:&lt;/p&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;$ npx react-native run-android

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;To run on iOS:&lt;/p&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;$ npx react-native run-ios
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/kithminiii/TikTik-ToDo"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Happy Coding! ☕​🌱​
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>appwritehack</category>
    </item>
    <item>
      <title>Voice Web - For Deepgram Dev Hackathon 🌱✨</title>
      <dc:creator>Bhagya Kithmini</dc:creator>
      <pubDate>Sat, 09 Apr 2022 06:59:37 +0000</pubDate>
      <link>https://forem.com/kithminiii/voice-web-for-deepgram-dev-hackathon-6jh</link>
      <guid>https://forem.com/kithminiii/voice-web-for-deepgram-dev-hackathon-6jh</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--n-yxRYUY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nsvqdhj8qrxid0p1jt7u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--n-yxRYUY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nsvqdhj8qrxid0p1jt7u.png" alt="Image description" width="666" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hello👋&lt;/p&gt;

&lt;p&gt;Actually I am new to deepgram. So had to educate my self on how deepgram works and make sure that I have understood all the concepts.😎🚩&lt;/p&gt;

&lt;p&gt;Before get started with sending the request to deepgram we need to capture our voice and in order to do that we need to make use of the media capture and streams api.🎧&lt;/p&gt;

&lt;p&gt;This is a simple web application that we can create using voice. &lt;/p&gt;

&lt;p&gt;You guys also can run this web app on your machine too.❤️&lt;/p&gt;

&lt;p&gt;First you have to clone this project in your pc and then replace deepgram api key with your newly created one which is in the &lt;code&gt;script.js&lt;/code&gt; file.👽&lt;/p&gt;

&lt;p&gt;Then navigate to the project folder. Install all the dependancies by running &lt;code&gt;npm install&lt;/code&gt;🌱&lt;/p&gt;

&lt;p&gt;After the dependancies have installed, you can run the project with &lt;code&gt;npm run dev&lt;/code&gt; to obtain your local IP address.🌱🐥&lt;/p&gt;

&lt;p&gt;As the Media Capture and Streams API requres a secure HTTPS connection to interact with your microphone, you will need to install  SSL certificates for the project.&lt;/p&gt;

&lt;p&gt;Generate the certificates by running: &lt;code&gt;mkcert YOUR_IP_HERE localhost&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;We can provide more than one IP address.&lt;/p&gt;

&lt;p&gt;Once those have been generated, want to make sure they are placed in the root of the project.&lt;/p&gt;

&lt;p&gt;Navigate to the &lt;code&gt;/bundler/webpack.dev.js&lt;/code&gt; file, and replace &lt;code&gt;YOUR_SSL_CERT_KEY&lt;/code&gt; and &lt;code&gt;YOUR_SSL_CERT&lt;/code&gt; with a path to the certificate and key file generated in the previous step.&lt;/p&gt;

&lt;p&gt;Make sure all files have been saved and run &lt;code&gt;npm run dev&lt;/code&gt;again. &lt;/p&gt;

&lt;p&gt;Allow the browser to use your microphone.&lt;/p&gt;

&lt;p&gt;Say something! Your text should be visible on the screen! &lt;/p&gt;

&lt;p&gt;Now it's your time to experiment! 🚀&lt;/p&gt;

&lt;h3&gt;
  
  
  Submission Category:
&lt;/h3&gt;

&lt;p&gt;Wacky Wildcards&lt;/p&gt;

&lt;h3&gt;
  
  
  Link to Code on GitHub
&lt;/h3&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/kithminiii"&gt;
        kithminiii
      &lt;/a&gt; / &lt;a href="https://github.com/kithminiii/Deepgram-Hackathon"&gt;
        Deepgram-Hackathon
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Voice Web Application for Dev + Deepgram Hackathon 2022
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
Deepgram-Hackathon&lt;/h1&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/0f65ced2883d715aada88ab0bda9c66239e967a2920ed5e24207e4985edd17ee/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f6b627a30313835337066646a657a3433327475372e706e67"&gt;&lt;img src="https://camo.githubusercontent.com/0f65ced2883d715aada88ab0bda9c66239e967a2920ed5e24207e4985edd17ee/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f6b627a30313835337066646a657a3433327475372e706e67" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Actually I am new to deepgram. So had to educate my self on how deepgram works and make sure that I have understood all the concepts.😎🚩&lt;/p&gt;
&lt;p&gt;Before get started with sending the request to deepgram we need to capture our voice and in order to do that we need to make use of the media capture and streams api.🎧&lt;/p&gt;
&lt;p&gt;This is a simple web application that we can create using voice.&lt;/p&gt;
&lt;p&gt;You guys also can run this web app on your machine too.❤️&lt;/p&gt;
&lt;p&gt;First you have to clone this project in your pc and then replace deepgram api key with your newly created one which is in the &lt;code&gt;script.js&lt;/code&gt; file.👽&lt;/p&gt;
&lt;p&gt;Then navigate to the project folder. Install all the dependancies by running &lt;code&gt;npm install&lt;/code&gt;🌱&lt;/p&gt;
&lt;p&gt;After the dependancies have installed, you can run the project with &lt;code&gt;npm run dev&lt;/code&gt; to obtain your local IP…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/kithminiii/Deepgram-Hackathon"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Happy Coding ! 🌱
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>hackwithdg</category>
    </item>
    <item>
      <title>Leave Management System🐱‍💻</title>
      <dc:creator>Bhagya Kithmini</dc:creator>
      <pubDate>Tue, 08 Mar 2022 00:06:09 +0000</pubDate>
      <link>https://forem.com/kithminiii/leave-management-application-3enm</link>
      <guid>https://forem.com/kithminiii/leave-management-application-3enm</guid>
      <description>&lt;h3&gt;
  
  
  Overview of My Submission
&lt;/h3&gt;

&lt;p&gt;This is a leave management apllication created using powerapps with share point with CRUD operations.&lt;/p&gt;

&lt;p&gt;In this application employee can submit their leave according to the reason. After submitting the request employee can navigate into the home screen.There is a button in the home screen called "View my application", by clicking this button, employee can go to the list of leave requests page. In this screen employee can see weather their leave request approved or declined. Furthermore in this screen there is a button called, "Edit". By clicking this button employee can edit their leave request. These are the main functions of this application.&lt;/p&gt;

&lt;p&gt;First I created a sharepoint site.Then added lists in there.&lt;/p&gt;

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

&lt;p&gt;Then opened a blank app in the power app and started to create the application.&lt;/p&gt;

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

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

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

&lt;h3&gt;
  
  
  Submission Category:
&lt;/h3&gt;

&lt;p&gt;Low-Code Legends&lt;/p&gt;

&lt;h3&gt;
  
  
  Link to Code on GitHub
&lt;/h3&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/kithminiii"&gt;
        kithminiii
      &lt;/a&gt; / &lt;a href="https://github.com/kithminiii/LeaveManagement"&gt;
        LeaveManagement
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Levae Management System for Dev + Azure Microsoft Azure Trial Hackathon 2022
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
Leave Management Application&lt;/h1&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/a4d7876e093386d4dec2e182a304314928a58d77d209520f4457bda6d637724d/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f627967713362637263306c726d74647a6e3976622e504e47"&gt;&lt;img src="https://camo.githubusercontent.com/a4d7876e093386d4dec2e182a304314928a58d77d209520f4457bda6d637724d/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f627967713362637263306c726d74647a6e3976622e504e47" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
License&lt;/h3&gt;
&lt;p&gt;Apache License 2.0&lt;/p&gt;
&lt;h3&gt;
Overview of the System&lt;/h3&gt;
&lt;p&gt;This is a leave management apllication created using powerapps with share point.&lt;/p&gt;
&lt;p&gt;In this application employee can submit their leave according to the reason. After submitting the request employee can navigate into the home screen.There is a button in the home screen called "View my application", by clicking this button, employee can go to the list of leave requests page. In this screen employee can see weather their leave request approved or declined. Furthermore in this screen there is a button called, "Edit". By clicking this button employee can edit their leave request. These are the main functions of this application.&lt;/p&gt;
&lt;p&gt;First I created a sharepoint site.Then added lists in there.&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/390de1ed5fba216ceff6cd4dbb01fceb923792fd9902624f864989f1021e9352/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f396774776c77326f33746a797761756d787672352e504e47"&gt;&lt;img src="https://camo.githubusercontent.com/390de1ed5fba216ceff6cd4dbb01fceb923792fd9902624f864989f1021e9352/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f396774776c77326f33746a797761756d787672352e504e47" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Then opened a blank app in the power app and started to create the application.&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/cfefc9f56025ac7639f51f00aa42e2d289f1eec3851e4c11fba2040b1c0844b3/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f673264326c76716a797a757a646f6c756b6963782e504e47"&gt;&lt;img src="https://camo.githubusercontent.com/cfefc9f56025ac7639f51f00aa42e2d289f1eec3851e4c11fba2040b1c0844b3/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f673264326c76716a797a757a646f6c756b6963782e504e47" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/da77bebce40608dda38c5fb34c97e0cbb1936d40f8bb423f18bde0737936c996/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f786673397a3466746265733868646f6b71756e752e504e47"&gt;&lt;img src="https://camo.githubusercontent.com/da77bebce40608dda38c5fb34c97e0cbb1936d40f8bb423f18bde0737936c996/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f786673397a3466746265733868646f6b71756e752e504e47" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/c4d08f9072f5975eea1dd085e85bad57f9a25ee0672cd90ab983308292b30ef8/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f6a626a7679306167386965663065316e3631737a2e504e47"&gt;&lt;img src="https://camo.githubusercontent.com/c4d08f9072f5975eea1dd085e85bad57f9a25ee0672cd90ab983308292b30ef8/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f6a626a7679306167386965663065316e3631737a2e504e47" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
Submission Category&lt;/h3&gt;
&lt;p&gt;Low Code Legends&lt;/p&gt;
&lt;h3&gt;
Additional Resources / Info&lt;/h3&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/a4d7876e093386d4dec2e182a304314928a58d77d209520f4457bda6d637724d/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f627967713362637263306c726d74647a6e3976622e504e47"&gt;&lt;img src="https://camo.githubusercontent.com/a4d7876e093386d4dec2e182a304314928a58d77d209520f4457bda6d637724d/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f627967713362637263306c726d74647a6e3976622e504e47" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/9fcc083b9948281a9d9a2eb5533d41da79b23917399611c94ff83d3c99e8e7b9/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f637638357461383770653571397a6e6635386d632e504e47"&gt;&lt;img src="https://camo.githubusercontent.com/9fcc083b9948281a9d9a2eb5533d41da79b23917399611c94ff83d3c99e8e7b9/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f637638357461383770653571397a6e6635386d632e504e47" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/7552332e6b389912a798b4ab8fc2fc7887a3b441843c70318aa93fa05acc526f/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f786c3133776d39316a71743977356a6f6e3773632e504e47"&gt;&lt;img src="https://camo.githubusercontent.com/7552332e6b389912a798b4ab8fc2fc7887a3b441843c70318aa93fa05acc526f/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f786c3133776d39316a71743977356a6f6e3773632e504e47" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/99cafad9283e883d382a42937012620bb2b037a491fc18700f38567755a18c1f/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f34786570637464347661793830393839746334612e504e47"&gt;&lt;img src="https://camo.githubusercontent.com/99cafad9283e883d382a42937012620bb2b037a491fc18700f38567755a18c1f/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f34786570637464347661793830393839746334612e504e47" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;



&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/kithminiii/LeaveManagement"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;p&gt;Link to Application:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apps.powerapps.com/play/c37590ba-e006-454f-b8ec-0d5d49d60fed?tenantId=44e3cf94-19c9-4e32-96c3-14f5bf01391a"&gt;https://apps.powerapps.com/play/c37590ba-e006-454f-b8ec-0d5d49d60fed?tenantId=44e3cf94-19c9-4e32-96c3-14f5bf01391a&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Demo Video for the application:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://drive.google.com/file/d/1go2yAm93avNnvuQ7q_3iMa9T72XeSDwo/view?usp=sharing"&gt;https://drive.google.com/file/d/1go2yAm93avNnvuQ7q_3iMa9T72XeSDwo/view?usp=sharing&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Additional Resources / Info
&lt;/h3&gt;

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

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

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

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

</description>
      <category>azuretrialhack</category>
    </item>
    <item>
      <title>Employee Management System</title>
      <dc:creator>Bhagya Kithmini</dc:creator>
      <pubDate>Mon, 07 Mar 2022 23:13:21 +0000</pubDate>
      <link>https://forem.com/kithminiii/employee-management-system-45b4</link>
      <guid>https://forem.com/kithminiii/employee-management-system-45b4</guid>
      <description>&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Employee Leave Management system
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

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

&lt;p&gt;This is a leave management system for employees. Which is a process within an organization that determines how leave is requested by employees and approve by managers, as well as how it tracked for payroll balance, and other purposes.&lt;/p&gt;

&lt;p&gt;First employee can select their leave type as sick leave,vacation, floating holiday, jury duty likewise. &lt;br&gt;
Then can select the date range of the leave and fill the reasons detail wise and should click the submit button.&lt;/p&gt;

&lt;p&gt;In the home screen all the leaves applied by the employee is listed down. As well as Pending requests, Approved requests, declined are listed seperately.&lt;/p&gt;

&lt;p&gt;And there is a another screen that shows holidays.&lt;/p&gt;

&lt;p&gt;On the manager login side, manager can view all the leave requests of the employee. Then he can see the details and consider that approve or decline the request.As well , there is another screen in the manager side that, manager can send an email to the employee via the system.&lt;/p&gt;

&lt;p&gt;These are the main functions of the system.&lt;/p&gt;

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

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

&lt;p&gt;Below are few code lines in employee management part.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Set(_selectedLeaveItem, ThisItem);

If(_managerView, 
    //If manager view, get user's leave balance record and determine any overlaps this request has from other people I manage
    Set(_requesterBalanceRecord, LookUp(Balance, Year = Text(Year(Now())) &amp;amp;&amp;amp; EmployeeEmail = ThisItem.Requester));
    ClearCollect(RequestOverlaps, Filter(Leave, EndDate &amp;gt;= _selectedLeaveItem.StartDate &amp;amp;&amp;amp; StartDate &amp;lt;= _selectedLeaveItem.EndDate 
    &amp;amp;&amp;amp; Requester &amp;lt;&amp;gt;_selectedLeaveItem.Requester));

    If(CountRows(RequestOverlaps) &amp;gt; 0, Set(_requestOverlapMessage, Concat(Distinct(RequestOverlaps, Requester), Result, ", ")))
);

Concurrent(
    //gather requester or approver info depending on view
    If(_managerView, 
        Set(_requester, Office365Users.UserProfile(ThisItem.Requester)), 
        Set(_selectedApprover, Office365Users.UserProfile(ThisItem.Approver)); If(Office365Users.UserPhotoMetadata(_selectedApprover.Id).HasPhoto, Set(_selectedApproverPhoto, Office365Users.UserPhoto(_selectedApprover.Id)))),
    //**** CALCULATION USED TO DETERMINE TOTAL WORK DAYS REQUESTED ****
     Set(_inclusiveTotalDaysRequested, DateDiff(ThisItem.StartDate, ThisItem.EndDate, Days) + 1);
        Set(_numFullWeeks, RoundDown(_inclusiveTotalDaysRequested / 7, 0));
        Set(_numFullDaysPartialWeek, _inclusiveTotalDaysRequested - _numFullWeeks * 7);
        Set(_startWeekday, Weekday(ThisItem.StartDate)); 
        Set(_endWeekday, Weekday(ThisItem.EndDate));


       //calculates the number of business days in the partial week left over after whole weeks are subtracted out of total days requested
    If(_numFullDaysPartialWeek = 6, 
        If(_startWeekday &amp;lt;= 2, Set(_numPartialWeekdays, 5), Set(_numPartialWeekdays, 4)
        ),
      _numFullDaysPartialWeek = 5,
        If(_startWeekday = 2, Set(_numPartialWeekdays, 5), _startWeekday = 1 || _startWeekday = 3 || _startWeekday = 4, Set(_numPartialWeekdays, 4), Set(_numPartialWeekdays, 3)
        ),
      _numFullDaysPartialWeek = 4,
        If(_startWeekday = 2 || _startWeekday = 3, Set(_numPartialWeekdays, 4), _startWeekday = 1 || _startWeekday = 4, Set(_numPartialWeekdays, 3), Set(_numPartialWeekdays, 2)
        ),
      _numFullDaysPartialWeek = 3,
        If(_startWeekday = 6 || _startWeekday = 7, Set(_numPartialWeekdays, 1), _startWeekday = 1 || _startWeekday = 5, Set(_numPartialWeekdays, 2), Set(_numPartialWeekdays, 3)
        ),
      _numFullDaysPartialWeek = 2,
        If(_startWeekday = 7, Set(_numPartialWeekdays, 0), _startWeekday = 1 || _startWeekday = 6, Set(_numPartialWeekdays, 1), Set(_numPartialWeekdays, 2)),
      _numFullDaysPartialWeek = 1,
        If(_startWeekday = 1 || _startWeekday = 7, Set(_numPartialWeekdays, 0), Set(_numPartialWeekdays, 1)
        ),
      _numFullDaysPartialWeek = 0, Set(_numPartialWeekdays, 0)
    );
      Set(_workDaysInRequest, _numFullWeeks * 5 + _numPartialWeekdays),
      Set(_holidaysInRequest, CountIf(Holidays, StartDate &amp;gt;= ThisItem.StartDate, StartDate &amp;lt;= ThisItem.EndDate))
);
Set(_requestedDays, _workDaysInRequest - _holidaysInRequest);
//**** END CALCULATION ****
Set(_showDetails, true);

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Submission Category:
&lt;/h3&gt;

&lt;p&gt;Low-Code Legends&lt;/p&gt;
&lt;h3&gt;
  
  
  Link to Code on GitHub
&lt;/h3&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/kithminiii"&gt;
        kithminiii
      &lt;/a&gt; / &lt;a href="https://github.com/kithminiii/EmployeeLeavesManagmentSystem"&gt;
        EmployeeLeavesManagmentSystem
      &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&gt;
Employee Leaves Managment System&lt;/h1&gt;
&lt;h3&gt;
Overview of the System&lt;/h3&gt;
&lt;p&gt;This is a leave management system for employees. Which is a process within an organization that determines how leave is requested by employees and approve by managers, as well as how it tracked for payroll balance, and other purposes.&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/eb8e8907d7c45008abb99ced1d223113a89dc97a7d52afbeea521106904e34d5/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f6534796a65307671776a6d65666e74306a6c38652e504e47"&gt;&lt;img src="https://camo.githubusercontent.com/eb8e8907d7c45008abb99ced1d223113a89dc97a7d52afbeea521106904e34d5/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f6534796a65307671776a6d65666e74306a6c38652e504e47" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/2b4438b115cb59d5252f41a09fa457d4e08c446ba5c27ac487d5d331ef80b935/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f3967796a3638753033773976696477666d6566392e504e47"&gt;&lt;img src="https://camo.githubusercontent.com/2b4438b115cb59d5252f41a09fa457d4e08c446ba5c27ac487d5d331ef80b935/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f3967796a3638753033773976696477666d6566392e504e47" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
Submission Category&lt;/h3&gt;
&lt;p&gt;Low Code Legends&lt;/p&gt;
&lt;h3&gt;
License&lt;/h3&gt;
&lt;p&gt;Apache License 2.0&lt;/p&gt;
&lt;h3&gt;
Screen Shots of the System&lt;/h3&gt;
&lt;p&gt;Thre are 10 interfaces in this system.&lt;/p&gt;
&lt;p&gt;1.Login Screen&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/187e2ad099a086740675433f97c616f646f1ed351055c77a6517507127825e5d/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f76776f74736a676d78686a3532366f6179386d6b2e504e47"&gt;&lt;img src="https://camo.githubusercontent.com/187e2ad099a086740675433f97c616f646f1ed351055c77a6517507127825e5d/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f76776f74736a676d78686a3532366f6179386d6b2e504e47" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;2.Home Screen&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/10be9156295499992af508148fe912ad228e8a6345b6a56acc4e5fa42ce233ea/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f62767173696939336d747371686f67326e65646a2e504e47"&gt;&lt;img src="https://camo.githubusercontent.com/10be9156295499992af508148fe912ad228e8a6345b6a56acc4e5fa42ce233ea/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f62767173696939336d747371686f67326e65646a2e504e47" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;3.New Request Screen&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/395ae00726b14437fcc533b72d5ddfb4714ce1288ec5cc5a8e672689cc8c0145/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f6e72396d7739736b6e786b3174686a67626173372e504e47"&gt;&lt;img src="https://camo.githubusercontent.com/395ae00726b14437fcc533b72d5ddfb4714ce1288ec5cc5a8e672689cc8c0145/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f6e72396d7739736b6e786b3174686a67626173372e504e47" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;4.Company Holidays Screen&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/44fd218535686cb281d5f3ffa865016598a1454f35f5ed1e6f8e647cc9297cb3/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f71717a616475383265773036787871767a636b6c2e504e47"&gt;&lt;img src="https://camo.githubusercontent.com/44fd218535686cb281d5f3ffa865016598a1454f35f5ed1e6f8e647cc9297cb3/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f71717a616475383265773036787871767a636b6c2e504e47" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;5.Leave Balance Screen&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/1cdd0d27cc3938dea623e0c50c1cdee1d06c39e744c08495e8da4df87041a399/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f636c646b766f3432386b3333693667796172696b2e504e47"&gt;&lt;img src="https://camo.githubusercontent.com/1cdd0d27cc3938dea623e0c50c1cdee1d06c39e744c08495e8da4df87041a399/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f636c646b766f3432386b3333693667796172696b2e504e47" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;6.Confirmation Screen&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/72c8ac87f1eba5801dbc043c930bfd3d395d24437a242b3a8be2ba2d19b8e28b/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f30347a69396262656875653538397739776431662e504e47"&gt;&lt;img src="https://camo.githubusercontent.com/72c8ac87f1eba5801dbc043c930bfd3d395d24437a242b3a8be2ba2d19b8e28b/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f30347a69396262656875653538397739776431662e504e47" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;7.Change Approver Screen&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/7275dd384f66a8d8128ee248a96838b6ded569b0d4e22378f889fc5772f1d5e0/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f7764317764357775346e6c7469377477787a6b792e504e47"&gt;&lt;img src="https://camo.githubusercontent.com/7275dd384f66a8d8128ee248a96838b6ded569b0d4e22378f889fc5772f1d5e0/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f7764317764357775346e6c7469377477787a6b792e504e47" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;8.Manager Change Request Screen&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/f500aab7b3fa7cbda8689d66778472451061f772b2f13734f3290a92f1aedb91/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f796f6b3934717a7234753165306d6f33673572642e504e47"&gt;&lt;img src="https://camo.githubusercontent.com/f500aab7b3fa7cbda8689d66778472451061f772b2f13734f3290a92f1aedb91/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f796f6b3934717a7234753165306d6f33673572642e504e47" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;9.Manager Send Email Screen&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/69d2a3c45991b861174abb2531f484cc1b3a7f0921e2b8b35c253adfd5513178/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f62756139396d77756876366774366164383470722e504e47"&gt;&lt;img src="https://camo.githubusercontent.com/69d2a3c45991b861174abb2531f484cc1b3a7f0921e2b8b35c253adfd5513178/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f62756139396d77756876366774366164383470722e504e47" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;10.About Screen&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/130c9b9b62f85b44262deb846d3dde8d318fe538e9e8502a9c81bfa03621c9ed/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f6477766b743269646e786c3433396b6a33616c632e504e47"&gt;&lt;img src="https://camo.githubusercontent.com/130c9b9b62f85b44262deb846d3dde8d318fe538e9e8502a9c81bfa03621c9ed/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f6477766b743269646e786c3433396b6a33616c632e504e47" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;

  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/kithminiii/EmployeeLeavesManagmentSystem"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;Link to the system:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apps.powerapps.com/play/41b5329c-2c1b-4c74-91bf-30156794f6b9?tenantId=44e3cf94-19c9-4e32-96c3-14f5bf01391a"&gt;https://apps.powerapps.com/play/41b5329c-2c1b-4c74-91bf-30156794f6b9?tenantId=44e3cf94-19c9-4e32-96c3-14f5bf01391a&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Demo Video of the System:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://drive.google.com/file/d/1-4YefJUhL1tUjZ6vnBQvRCX8ZxGilwOe/view?usp=sharing"&gt;https://drive.google.com/file/d/1-4YefJUhL1tUjZ6vnBQvRCX8ZxGilwOe/view?usp=sharing&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Additional Resources / Info
&lt;/h3&gt;

&lt;p&gt;Thre are 10 interfaces I used to create the system.&lt;/p&gt;

&lt;p&gt;1.Login Screen&lt;/p&gt;

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

&lt;p&gt;2.Home Screen&lt;/p&gt;

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

&lt;p&gt;3.New Request Screen&lt;/p&gt;

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

&lt;p&gt;4.Company Holidays Screen&lt;/p&gt;

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

&lt;p&gt;5.Leave Balance Screen&lt;/p&gt;

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

&lt;p&gt;6.Confirmation Screen&lt;/p&gt;

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

&lt;p&gt;7.Change Approver Screen&lt;/p&gt;

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

&lt;p&gt;8.Manager Change Request Screen&lt;/p&gt;

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

&lt;p&gt;9.Manager Send Email Screen&lt;/p&gt;

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

&lt;p&gt;10.About Screen&lt;/p&gt;

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

</description>
      <category>azuretrialhack</category>
    </item>
  </channel>
</rss>
