<?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: Sofia Laurent</title>
    <description>The latest articles on DEV Community by Sofia Laurent (@sofialaurent).</description>
    <link>https://dev.to/sofialaurent</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%2F3413637%2Fdc848f1f-c691-4a99-a5bb-0177405ed7fd.png</url>
      <title>DEV Community: Sofia Laurent</title>
      <link>https://dev.to/sofialaurent</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sofialaurent"/>
    <language>en</language>
    <item>
      <title>How I Built a Travel Booking Platform with React and Node.js</title>
      <dc:creator>Sofia Laurent</dc:creator>
      <pubDate>Tue, 05 Aug 2025 06:47:51 +0000</pubDate>
      <link>https://dev.to/sofialaurent/how-i-built-a-travel-booking-platform-with-react-and-nodejs-55d8</link>
      <guid>https://dev.to/sofialaurent/how-i-built-a-travel-booking-platform-with-react-and-nodejs-55d8</guid>
      <description>&lt;p&gt;This is like on one of those nights you can not sleep because your brain is buzzing with an idea. It happened at the end of my first winter in Mumbai where I sat in my small apartment on a Sunday evening, drawing wireframes on napkins and asking myself the question: &lt;em&gt;“What sort of platform could I build that would make it easier/smoother/more inspiring to plan trips in and around India?”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Six months later and BOOM, I had a usable MVP of one travel booking site that used &lt;strong&gt;React&lt;/strong&gt; on the frontend and &lt;strong&gt;Node.js&lt;/strong&gt; on the backend. And this is what happened, in the following way (including some bumps, face palm and aha moments).&lt;/p&gt;




&lt;h2&gt;
  
  
  🧩 Why React and Node.js?
&lt;/h2&gt;

&lt;p&gt;Let’s be real — I didn’t choose React and Node.js just because they were trendy. I chose them because they’re &lt;strong&gt;flexible, powerful, and beginner-friendly&lt;/strong&gt; (yes, even for solo devs like me).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;React&lt;/strong&gt; helped me build a dynamic, responsive UI that didn’t feel clunky or outdated. Components made everything easier to manage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Node.js&lt;/strong&gt;, paired with Express, allowed me to build APIs super fast. And since JavaScript runs both client and server, I could keep my tech stack clean and consistent.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Need help getting started with Node? You might find &lt;a href="https://dev.to/ruturajj/understanding-react-props-a-beginner-friendly-guide-3954"&gt;this beginner-friendly guide&lt;/a&gt; on DEV useful.&lt;/p&gt;




&lt;h2&gt;
  
  
  🛠️ Laying the Foundation
&lt;/h2&gt;

&lt;p&gt;I started with the basics:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;React (Vite + Tailwind CSS)&lt;/strong&gt; for the front-end&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Express.js + MongoDB&lt;/strong&gt; for the back-end&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;JWT&lt;/strong&gt; for user authentication&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stripe API&lt;/strong&gt; for payment handling&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you haven’t integrated payments before, check out &lt;a href="https://dev.to/adrianbailador/complete-guide-to-integrating-stripe-in-a-net-application-48d9"&gt;this awesome post on setting up Stripe&lt;/a&gt;. It saved me hours.&lt;/p&gt;

&lt;p&gt;One of my favorite parts? Creating the &lt;strong&gt;search and filter feature&lt;/strong&gt; for destinations and tour packages. You select a state, enter your dates, and voilà — filtered options. It felt like magic once it worked properly.&lt;/p&gt;




&lt;h2&gt;
  
  
  🤯 The Challenges
&lt;/h2&gt;

&lt;p&gt;Now, let me tell you — it wasn’t all sunshine and chai breaks.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I struggled a lot with &lt;strong&gt;CORS errors&lt;/strong&gt; during API calls in development.&lt;/li&gt;
&lt;li&gt;My first try at &lt;strong&gt;pagination&lt;/strong&gt; was a disaster. I used offsets incorrectly, and the whole app started glitching.&lt;/li&gt;
&lt;li&gt;And don’t even get me started on &lt;strong&gt;image uploads&lt;/strong&gt;. I initially used Base64 (terrible idea for performance) before switching to &lt;a href="https://dev.to/ebereplenty/cloudinary-and-postgresql-persisting-and-retrieving-images-using-nodejs-31b2"&gt;Cloudinary&lt;/a&gt; with &lt;code&gt;Multer&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I learned that &lt;em&gt;every bug teaches you something you didn’t know you needed&lt;/em&gt;. Debugging made me a better developer — not just technically, but mentally too.&lt;/p&gt;




&lt;h2&gt;
  
  
  📦 Features That Made It Shine
&lt;/h2&gt;

&lt;p&gt;Aside from the booking functionality, I added:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Wishlist saving&lt;/strong&gt; with local storage (perfect for undecided travelers)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Admin dashboard&lt;/strong&gt; with stats on bookings, user activity, and earnings&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-language support&lt;/strong&gt; — because India is beautifully diverse, and travelers want options&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I even experimented with some cool libraries like &lt;code&gt;react-calendar&lt;/code&gt;, &lt;code&gt;react-query&lt;/code&gt;, and &lt;code&gt;axios&lt;/code&gt; (life-saver). If you’re considering adding smooth API handling, take a look at &lt;a href="https://dev.to/satishverma/handling-api-requests-like-a-pro-with-axios-4nkn"&gt;how to use Axios like a pro&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🌏 The Human Side of It All
&lt;/h2&gt;

&lt;p&gt;Building a project like this isn’t just about code. It’s about &lt;em&gt;empathy&lt;/em&gt;. About putting yourself in the shoes of a user trying to find the perfect trip. I talked to real travelers, took notes, observed how they plan — and baked that into the UX.&lt;/p&gt;

&lt;p&gt;And somewhere along the way, I realized this platform wasn’t just helping people book trips — it was helping them &lt;strong&gt;&lt;em&gt;explore India&lt;/em&gt;&lt;/strong&gt; in ways they hadn’t before.&lt;/p&gt;

&lt;p&gt;That, to me, was the real win.&lt;/p&gt;




&lt;h2&gt;
  
  
  💡 What I’d Do Differently
&lt;/h2&gt;

&lt;p&gt;If I had to start over, I’d:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use &lt;strong&gt;TypeScript&lt;/strong&gt; from the start (strong types = fewer bugs)&lt;/li&gt;
&lt;li&gt;Set up &lt;strong&gt;CI/CD pipelines&lt;/strong&gt; early on to avoid last-minute surprises&lt;/li&gt;
&lt;li&gt;Write &lt;strong&gt;better unit tests&lt;/strong&gt; (I got lazy, not gonna lie)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Also, I’d probably use &lt;a href="https://dev.to/manukumar07/how-to-structure-your-projects-for-better-scalability-2ebk"&gt;this awesome DEV.to post on scalable project structures&lt;/a&gt; as my blueprint.&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 What's Next?
&lt;/h2&gt;

&lt;p&gt;Right now, I’m working on improving performance, adding offline access via service workers, and opening up APIs for third-party integration (maybe even travel agents).&lt;/p&gt;

&lt;p&gt;If you're working on something similar, feel free to connect or ask questions. We all start somewhere, and DEV has been a great space to share, learn, and grow.&lt;/p&gt;

&lt;p&gt;Also — if you’re still deciding whether or not to start your side project... take this as your sign.&lt;/p&gt;

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