<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Rishini Dharan T</title>
    <description>The latest articles on DEV Community by Rishini Dharan T (@rishini_dharan_t).</description>
    <link>https://dev.to/rishini_dharan_t</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3996001%2F463ce59f-7426-4659-951f-2f23d3e9a001.png</url>
      <title>DEV Community: Rishini Dharan T</title>
      <link>https://dev.to/rishini_dharan_t</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rishini_dharan_t"/>
    <language>en</language>
    <item>
      <title>I Didn't Start by Thinking About Code. I Started by Thinking About the Customer. 🍽️</title>
      <dc:creator>Rishini Dharan T</dc:creator>
      <pubDate>Sat, 27 Jun 2026 12:38:01 +0000</pubDate>
      <link>https://dev.to/rishini_dharan_t/i-didnt-start-by-thinking-about-code-i-started-by-thinking-about-the-customer-579g</link>
      <guid>https://dev.to/rishini_dharan_t/i-didnt-start-by-thinking-about-code-i-started-by-thinking-about-the-customer-579g</guid>
      <description>&lt;p&gt;When I began building my Restaurant Reservation System, I wasn't thinking about Spring Boot, JPA, or database schemas.&lt;/p&gt;

&lt;p&gt;Instead, I asked myself a much simpler question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"What makes booking a table frustrating for customers?"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The more I thought about it, the more I realized that customers don't really care how elegant the backend architecture is.&lt;/p&gt;

&lt;p&gt;They care about one thing:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A smooth, reliable booking experience.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That became the foundation of my project.&lt;/p&gt;




&lt;h2&gt;
  
  
  Looking at the problem from the customer's perspective
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Imagine planning a dinner for your family.&lt;/li&gt;
&lt;li&gt;You reserve a table days in advance.&lt;/li&gt;
&lt;li&gt;You arrive at the restaurant only to discover that your table was accidentally assigned to someone else.&lt;/li&gt;
&lt;li&gt;Or maybe the restaurant accepted your booking even though it had already closed for the day.&lt;/li&gt;
&lt;li&gt;Or perhaps you selected a premium dining experience online, only to find out it wasn't actually available.&lt;/li&gt;
&lt;li&gt;These situations don't just inconvenience customers.&lt;/li&gt;
&lt;li&gt;They break trust.&lt;/li&gt;
&lt;li&gt;And once trust is lost, customers rarely come back.&lt;/li&gt;
&lt;li&gt;That made me realize something important.&lt;/li&gt;
&lt;li&gt;A reservation system isn't just about managing tables.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  - It's about &lt;strong&gt;creating confidence before the customer even walks into the restaurant.&lt;/strong&gt;
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Customer retention begins long before the meal
&lt;/h2&gt;

&lt;p&gt;One idea kept coming back while I was designing the system.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;A restaurant doesn't retain customers because it serves great food once. It retains customers because every interaction feels reliable.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The booking process is often the customer's very first interaction with a restaurant.&lt;/p&gt;

&lt;p&gt;If that experience is confusing or unreliable, the dining experience has already started on the wrong foot.&lt;/p&gt;

&lt;p&gt;So I wanted every business rule in the system to contribute to one goal:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reduce uncertainty for the customer.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Every technical decision started as a customer problem
&lt;/h2&gt;

&lt;p&gt;Instead of asking,&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"What features should I implement?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I started asking,&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"What problems could the customer face?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That simple shift completely changed how I designed the application.&lt;/p&gt;

&lt;h3&gt;
  
  
  Preventing double bookings
&lt;/h3&gt;

&lt;p&gt;No customer wants to reserve a table only to discover someone else already has it.&lt;/p&gt;

&lt;p&gt;So the system validates reservation conflicts before confirming a booking.&lt;/p&gt;

&lt;p&gt;From a technical perspective, it's validation logic.&lt;/p&gt;

&lt;p&gt;From the customer's perspective, it's peace of mind.&lt;/p&gt;




&lt;h3&gt;
  
  
  Respecting restaurant operating hours
&lt;/h3&gt;

&lt;p&gt;Allowing reservations outside business hours might seem harmless from a coding standpoint.&lt;/p&gt;

&lt;p&gt;But for customers, it's a promise the restaurant can't keep.&lt;/p&gt;

&lt;p&gt;That's why the system checks whether the requested reservation time falls within the restaurant's operating schedule before accepting it.&lt;/p&gt;

&lt;p&gt;Reliable systems avoid making promises they can't fulfill.&lt;/p&gt;




&lt;h3&gt;
  
  
  Transparent pricing
&lt;/h3&gt;

&lt;p&gt;Unexpected charges create frustration.&lt;/p&gt;

&lt;p&gt;Instead of leaving pricing ambiguous, the system calculates reservation costs dynamically based on premium tables and selected dining experiences before the booking is finalized.&lt;/p&gt;

&lt;p&gt;Customers should know exactly what they're paying for.&lt;/p&gt;

&lt;p&gt;Transparency builds confidence.&lt;/p&gt;




&lt;h3&gt;
  
  
  Meaningful feedback instead of vague errors
&lt;/h3&gt;

&lt;p&gt;Nobody likes seeing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Something went wrong.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If a reservation can't be completed, the system explains why.&lt;/p&gt;

&lt;p&gt;Whether the restaurant is closed or a table has already been reserved, the customer receives clear feedback instead of confusion.&lt;/p&gt;

&lt;p&gt;Good software doesn't just detect problems.&lt;/p&gt;

&lt;p&gt;It explains them.&lt;/p&gt;




&lt;h2&gt;
  
  
  Thinking beyond the first reservation
&lt;/h2&gt;

&lt;p&gt;While developing the project, I kept asking myself another question.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"Would this experience make me want to book here again?"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Customer retention isn't only influenced by food quality or service.&lt;/p&gt;

&lt;p&gt;It also depends on how effortless the journey feels.&lt;/p&gt;

&lt;p&gt;A booking process that is quick, predictable, and trustworthy reduces friction.&lt;/p&gt;

&lt;p&gt;And every bit of reduced friction increases the chances that customers will return.&lt;/p&gt;

&lt;p&gt;That mindset influenced nearly every design decision I made.&lt;/p&gt;




&lt;h2&gt;
  
  
  The technology was just the toolbox
&lt;/h2&gt;

&lt;p&gt;To turn these ideas into reality, I used:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Spring Boot&lt;/li&gt;
&lt;li&gt;Spring Data JPA&lt;/li&gt;
&lt;li&gt;Hibernate&lt;/li&gt;
&lt;li&gt;MySQL&lt;/li&gt;
&lt;li&gt;Thymeleaf&lt;/li&gt;
&lt;li&gt;Maven&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These technologies helped me implement the solution.&lt;/p&gt;

&lt;p&gt;But they weren't the solution themselves.&lt;/p&gt;

&lt;p&gt;The real challenge wasn't choosing a framework.&lt;/p&gt;

&lt;p&gt;It was translating customer expectations into business logic.&lt;/p&gt;




&lt;h2&gt;
  
  
  What this project taught me
&lt;/h2&gt;

&lt;p&gt;Before this project, I often viewed backend development as writing APIs and connecting databases.&lt;/p&gt;

&lt;p&gt;Now I see it differently.&lt;/p&gt;

&lt;p&gt;Backend development is about protecting the customer experience.&lt;/p&gt;

&lt;p&gt;Every validation.&lt;/p&gt;

&lt;p&gt;Every exception.&lt;/p&gt;

&lt;p&gt;Every pricing calculation.&lt;/p&gt;

&lt;p&gt;Every reservation check.&lt;/p&gt;

&lt;p&gt;They're all invisible to the customer.&lt;/p&gt;

&lt;p&gt;Yet they shape the entire experience.&lt;/p&gt;

&lt;p&gt;If users never notice those safeguards, that's probably because they're working exactly as intended.&lt;/p&gt;




&lt;h2&gt;
  
  
  Looking ahead
&lt;/h2&gt;

&lt;p&gt;If I continue developing this project, I'd love to make the customer journey even better by adding:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Personalized table recommendations based on previous visits.&lt;/li&gt;
&lt;li&gt;AI-powered reservation suggestions during less crowded hours.&lt;/li&gt;
&lt;li&gt;Instant email and SMS confirmations.&lt;/li&gt;
&lt;li&gt;Loyalty rewards for returning customers.&lt;/li&gt;
&lt;li&gt;Smart waiting lists that automatically notify customers when tables become available.&lt;/li&gt;
&lt;li&gt;Reservation analytics to help restaurants understand customer behavior and improve service.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each of these ideas comes back to the same principle:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Technology should quietly remove friction while making customers feel valued.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Final thoughts
&lt;/h2&gt;

&lt;p&gt;This project taught me that software isn't just about implementing features.&lt;/p&gt;

&lt;p&gt;It's about understanding people.&lt;/p&gt;

&lt;p&gt;Every line of code represented a question I asked myself:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"If I were the customer, would this make my experience easier?"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Once I started thinking that way, the architecture, business rules, and implementation details became much clearer.&lt;/p&gt;

&lt;p&gt;Because in the end, I wasn't building a reservation system.&lt;/p&gt;

&lt;p&gt;I was building &lt;strong&gt;confidence&lt;/strong&gt;, &lt;strong&gt;convenience&lt;/strong&gt;, and a better first impression for every customer who wanted nothing more than a seamless dining experience.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/Rishini-Dharan/RES_PROJ" rel="noopener noreferrer"&gt;https://github.com/Rishini-Dharan/RES_PROJ&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;What user problem do you think developers often overlook when designing reservation systems? I'd love to hear your thoughts in the comments.&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  springboot #java #backend #softwareengineering #customerexperience #ux #webdevelopment #opensource #learninginpublic #programming #jpa #hibernate
&lt;/h1&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>api</category>
      <category>design</category>
    </item>
    <item>
      <title>Understanding Server Sent Events</title>
      <dc:creator>Rishini Dharan T</dc:creator>
      <pubDate>Mon, 22 Jun 2026 04:26:16 +0000</pubDate>
      <link>https://dev.to/rishini_dharan_t/understanding-server-sent-events-3mkd</link>
      <guid>https://dev.to/rishini_dharan_t/understanding-server-sent-events-3mkd</guid>
      <description>&lt;p&gt;&lt;strong&gt;Hello reader!&lt;/strong&gt; Today I have learnt about server-side events and going to discuss it here.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Assume you are using ChatGPT and sent a query to the LLM and it's makes you to wait for 5 seconds before printing the entire answer in a one-shot action like loading a webpage instead of the current sequential character printing pattern using streaming responses, will it be surprising, frustrating or at least makes you feel like waiting? &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;So, to prevent the user from feeling the pain of waiting most LLMs uses the sequential printing method.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Working&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;These are called Time Taking Processes (TTP), and this working is achieved by the server-sent events.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;SSE is the standard for streaming data from the server to the client using HTTP.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Each event is a small text block with "fields" like data, event, id, and retry, separated by blank lines.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It looks like this:&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;data: {"name": "Portal Gun", "price": 999.99}&lt;br&gt;
data: {"name": "Plumbus", "price": 32.99}&lt;/p&gt;

&lt;p&gt;SSE is commonly used for AI chat streaming, live notifications, logs and observability, and other cases where the server pushes updates to the client.&lt;/p&gt;

&lt;p&gt;Before technologies like SSE became popular, applications often relied on short polling or long polling to receive updates from the server:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Short polling:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The client-initiates the request to the server and if the response is incomplete and will takes time to complete then the server will response with an immediate wait message and then the user will wait for some time(defined) before initiating the request again, continuing this process until the process's completed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Long polling:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The client-initiated request is once processed and if not completed then the server will hold on to that request and check the same after a defined time when it also not completed during the second investigation then the server responses to the client as incomplete. The user will immediately reinitiate the same request as soon as they receive it and the same repeat until the process is completed or any termination event has been happened.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;EVENT STREAM:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Processes that are continuous and ordered sequence of events that can be simple from creating pdf file to a much complex process like transactions between two banks. These are undertaken by establishing a communication channel between the server and the clients and maintaining the channel until the completion of the process.&lt;/p&gt;

&lt;p&gt;Here's a fun-fact for you if you have read until here: HTTP requests are &lt;br&gt;
stateless.&lt;/p&gt;

&lt;p&gt;Bye guys! let's all have a great day of learning😊.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>todayilearned</category>
      <category>resources</category>
    </item>
  </channel>
</rss>
