<?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: sandriaas</title>
    <description>The latest articles on DEV Community by sandriaas (@sandriaas).</description>
    <link>https://dev.to/sandriaas</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%2F119421%2F80173e55-3a52-4668-a3d9-acbd9400412f.jpg</url>
      <title>DEV Community: sandriaas</title>
      <link>https://dev.to/sandriaas</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sandriaas"/>
    <language>en</language>
    <item>
      <title>Easy Rent Bali Case Study: Building a Luxury UX with React &amp; SSR</title>
      <dc:creator>sandriaas</dc:creator>
      <pubDate>Sat, 11 Oct 2025 00:43:00 +0000</pubDate>
      <link>https://dev.to/sandriaas/easy-rent-bali-case-study-building-a-luxury-ux-with-react-ssr-bo9</link>
      <guid>https://dev.to/sandriaas/easy-rent-bali-case-study-building-a-luxury-ux-with-react-ssr-bo9</guid>
      <description>&lt;p&gt;I just wrapped up a complete redesign of &lt;a href="https://www.easyrentbali.com/" rel="noopener noreferrer"&gt;easyrentbali.com&lt;/a&gt;, and it was more than just a visual update. My goal was to transform a standard rental website into a bespoke, luxury digital experience. This wasn't about just making it look good; it was about architecting a seamless journey for the user, inspired by high-end design principles and optimized for the future of search.&lt;/p&gt;

&lt;h4&gt;
  
  
  The Philosophy: Luxury is Effortless
&lt;/h4&gt;

&lt;p&gt;My core belief for this project was that a luxury experience should feel effortless. The previous site had friction points that made booking a chore. I started by mapping the entire user journey, identifying every single click and decision, with the mission to eliminate as many of them as possible.&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%2Finojladiwntd7colgp9l.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%2Finojladiwntd7colgp9l.png" alt="a luxury experience should feel effortless" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  The UX/UI Deep Dive
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Mobile-First, Always:&lt;/strong&gt; This project was designed for a phone screen from day one. I didn't just make a desktop design responsive; I built the entire UI around the mobile use case, ensuring large, accessible touch targets and a one-handed booking process. The desktop view is an extension of the mobile experience, not the other way around.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Inspired by Fluent Design:&lt;/strong&gt; While not a Microsoft product, I drew heavy inspiration from the principles of Fluent Design. I focused on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Light:&lt;/strong&gt; Using gradients and soft glows to guide the user's eye to interactive elements.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Depth:&lt;/strong&gt; Employing subtle drop shadows and layering to create a sense of hierarchy and place.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Motion:&lt;/strong&gt; This is where the magic happens. I used purposeful, fluid animations to make the interface feel alive and responsive. Instead of jarring page loads, elements fade, slide, and scale into view. This isn't just decoration; it provides feedback and communicates state changes, making the UI feel polished and incredibly premium.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h4&gt;
  
  
  The Tech Stack: Bringing the Vision to Life
&lt;/h4&gt;

&lt;p&gt;To execute this vision, I chose a specific, modern tech stack that prioritized performance, developer experience, and creative freedom.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Foundation (Vite, Vike, and React):&lt;/strong&gt; The core is built on &lt;strong&gt;Vite&lt;/strong&gt;, a next-gen build tool that provided an instant feedback loop essential for fine-tuning animations. Instead of a monolithic framework, I chose &lt;strong&gt;Vike.js&lt;/strong&gt;, a lean, Vite-native framework that gave me full control over the &lt;strong&gt;Server-Side Rendering (SSR)&lt;/strong&gt; implementation. Choosing SSR was a critical architectural decision. It means the server sends a fully rendered HTML page to the browser, allowing the user to see content immediately. For a global audience on potentially slow mobile networks, this dramatically improves perceived performance and is the first step in an effortless experience. A blank loading screen is the opposite of luxury.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Styling &amp;amp; Motion (Tailwind CSS &amp;amp; Framer Motion):&lt;/strong&gt; The luxury aesthetic was crafted with &lt;strong&gt;Tailwind CSS&lt;/strong&gt;. This utility-first framework allowed me to build the bespoke design directly within my components. For the fluid animations central to the design philosophy, &lt;strong&gt;Framer Motion&lt;/strong&gt; was the star. It's a production-ready React animation library that I used to orchestrate everything from simple page fades to complex interactive feedback.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Development &amp;amp; Tooling (TypeScript, VS Code, &amp;amp; Multi-Agent AI):&lt;/strong&gt; The entire codebase is written in &lt;strong&gt;TypeScript&lt;/strong&gt;, making it robust and easier to maintain. My editor was &lt;strong&gt;VS Code&lt;/strong&gt;, but my development process was heavily AI-augmented. Instead of relying on a single tool, I orchestrated a suite of AI models (including models like OpenAI's Codex, Google's Gemini, and others accessed via OpenRouter) to handle concurrent tasks. While one model was scaffolding a new React component, another could be refactoring complex logic or generating test cases. This multi-agent approach allowed me to delegate specialized coding tasks, freeing me up to focus entirely on the high-level architecture and user experience. It was less like pair programming and more like leading a small, efficient team of AI developers.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&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%2Fsb0qpkw7zde9di7xmhj5.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%2Fsb0qpkw7zde9di7xmhj5.png" alt="A split-screen view showing the Easy Rent Bali website on a mobile device, emphasizing a clean user interface with a booking form and vehicle options." width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Deployment &amp;amp; Infrastructure: Global Speed at the Edge
&lt;/h4&gt;

&lt;p&gt;To ensure the site was blazingly fast for every user, no matter where they are in the world, I deployed the entire application using &lt;strong&gt;Cloudflare Functions&lt;/strong&gt;. This is a serverless "edge" computing platform. Instead of my SSR logic running in a single data center in one country, it runs on Cloudflare's massive global network. When a user from Australia visits the site, the page is rendered by a server in Australia. A user from Germany is served from Germany. This drastically reduces latency and makes the first-page load feel instantaneous, which is a non-negotiable part of a premium digital experience.&lt;/p&gt;

&lt;h4&gt;
  
  
  AI-First Optimization (AEO): Designing for the Future
&lt;/h4&gt;

&lt;p&gt;The choice of SSR was also fundamental to my AI-First Optimization strategy. Traditional SEO is about keywords; AEO is about answers. By sending fully rendered HTML from the server, I ensure that AI-driven search engines and crawlers can read the site's content perfectly without needing to execute JavaScript. This makes the information more accessible and authoritative. I combined this with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Conversational Content:&lt;/strong&gt; Writing clear, direct copy that answers the questions a traveler would naturally ask.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Structured Data:&lt;/strong&gt; Implementing rich schema to explicitly tell search engines what everything is—a vehicle, a price, a location, a review.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Clear Information Architecture:&lt;/strong&gt; Creating a logical flow so AI can understand the context and relationship between different pieces of content.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This AEO strategy is even automated directly into the project's build process. Custom scripts automatically run after every build to generate a clean sitemap and create a simplified, LLM-friendly version of the site's content, ensuring every deployment is perfectly optimized for the next generation of search.&lt;/p&gt;

&lt;h4&gt;
  
  
  The Result: A High-End Digital Showroom
&lt;/h4&gt;

&lt;p&gt;The new &lt;a href="https://www.easyrentbali.com/" rel="noopener noreferrer"&gt;easyrentbali.com&lt;/a&gt; is designed to feel less like a booking form and more like a high-end digital showroom. The combination of a thoughtful user experience, fluid animations, and a clean, luxury-inspired UI—all built on a high-performance, globally distributed tech stack—creates a sense of trust and quality that sets the brand apart.&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%2Fsv7yf04k2hi4d1dw3knv.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%2Fsv7yf04k2hi4d1dw3knv.png" alt="The vehicle selection page of the Easy Rent Bali website on a mobile device, displaying different car models with clear pricing and high-quality images." width="800" height="600"&gt;&lt;/a&gt;&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%2Fv6gvtlckriu1ymcsxmkc.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%2Fv6gvtlckriu1ymcsxmkc.png" alt="The vehicle selection page of the Easy Rent Bali website on a mobile device, displaying different car models with clear pricing and high-quality images." width="800" height="600"&gt;&lt;/a&gt;&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%2Fq56nw4op70i3unsbsmj0.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%2Fq56nw4op70i3unsbsmj0.png" alt="The vehicle selection page of the Easy Rent Bali website on a mobile device, displaying different car models with clear pricing and high-quality images." width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>ux</category>
      <category>ui</category>
      <category>serverless</category>
    </item>
  </channel>
</rss>
