<?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: Kulsum</title>
    <description>The latest articles on DEV Community by Kulsum (@kulsum_b3f717871a5439ba77).</description>
    <link>https://dev.to/kulsum_b3f717871a5439ba77</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%2F4052372%2F4f0abf16-2d58-46ca-8d4c-503b6433eda3.png</url>
      <title>DEV Community: Kulsum</title>
      <link>https://dev.to/kulsum_b3f717871a5439ba77</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kulsum_b3f717871a5439ba77"/>
    <language>en</language>
    <item>
      <title>I Vibe-Coded a Full-Stack Group Travel Planner in a Weekend — Then Found 8 Critical Security Issues</title>
      <dc:creator>Kulsum</dc:creator>
      <pubDate>Wed, 29 Jul 2026 05:29:09 +0000</pubDate>
      <link>https://dev.to/kulsum_b3f717871a5439ba77/i-vibe-coded-a-full-stack-group-travel-planner-in-a-weekend-then-found-8-critical-security-1jo4</link>
      <guid>https://dev.to/kulsum_b3f717871a5439ba77/i-vibe-coded-a-full-stack-group-travel-planner-in-a-weekend-then-found-8-critical-security-1jo4</guid>
      <description>&lt;p&gt;I built TripNest, a role-based group travel planner (Owner/Editor/Viewer permissions, itinerary planning, packing lists, group messaging) in a single weekend using Lovable. It looked release-ready by Sunday night. A free security scan found 8 critical issues before I ever pushed it live to real users.&lt;/p&gt;

&lt;p&gt;🔗 &lt;strong&gt;Try it:&lt;/strong&gt; &lt;a href="https://trip-together-planner-21.lovable.app/" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Problem&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I take a lot of short trips with family and friends — mostly road trips on holidays — and organizing them is always a mess:&lt;/p&gt;

&lt;p&gt;Fragmented info — itineraries live in someone's Notes app, flights get shared as screenshots buried in a 200-message group chat, no single source of truth.&lt;br&gt;
No safe way to share control — the person who did the planning has no way to let others view the plan without risking someone accidentally deleting a hotel booking or changing dates.&lt;br&gt;
Trip chat lost in the noise — trip-related decisions get buried in unrelated group chat messages.&lt;/p&gt;

&lt;p&gt;TripNest solves this with one space and a proper permission model.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How It Works: 3 Roles&lt;/strong&gt;&lt;br&gt;
Admins — the source of truth. Add/remove participants and planners.&lt;br&gt;
Planners — can shape the itinerary without admin-level control (good for the friend handling activities, not the whole trip).&lt;br&gt;
Participants — visibility without risk. Follow along, no ability to change dates or delete flights.&lt;/p&gt;

&lt;p&gt;Core features: trip creation, role-based invites (with accept-before-join), collaborative day-by-day itinerary, flight info storage, packing lists, and a dedicated group message thread per trip.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tech Stack&lt;/strong&gt;&lt;br&gt;
Lovable (initial build + iteration)&lt;br&gt;
React + TypeScript&lt;br&gt;
Tailwind CSS&lt;br&gt;
Supabase (Auth + PostgreSQL)&lt;br&gt;
Google Maps + OpenWeather (location/weather data)&lt;br&gt;
Perfai Security (free access-control testing)&lt;br&gt;
Building It&lt;/p&gt;

&lt;p&gt;I started with one long, detailed prompt covering the product, users, pages, visual direction, workflows, and technical expectations — front-loading detail so Lovable could build a connected first version instead of screen-by-screen guesswork. That first pass nailed the design system (consistent typography, spacing, cards, buttons, forms), but it wasn't a finished product. I spent the rest of the weekend iterating: wiring components together, fixing edge cases, and adding features as I thought of them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Challenges&lt;/strong&gt;&lt;br&gt;
Limited Lovable credits — every prompt draws from a chat budget, so vague prompts were expensive. I had to batch related changes and think through exactly what I wanted before sending a message.&lt;br&gt;
Role logic across features — getting Owner/Editor/Viewer permissions to hold consistently across trips, itineraries, packing lists, and messaging took way more iteration than any single feature.&lt;br&gt;
Sharing with non-users — inviting someone without a TripNest account initially just failed. Email invites needed a custom domain (which costs money), so I shipped a copy-link share feature instead.&lt;br&gt;
"Published" ≠ "Ready to Release"&lt;/p&gt;

&lt;p&gt;By Sunday, TripNest was a fully functional prototype — accounts, role-specific dashboards, persisted data, and a live published URL from Lovable. It looked done.&lt;/p&gt;

&lt;p&gt;But publishing only proves the app runs. It doesn't prove the authorization model holds up under direct requests, that sensitive data can't be reached outside the intended UI, or that auth endpoints resist abuse.&lt;/p&gt;

&lt;p&gt;So before calling it release-ready, I ran the live deployment through Perfai Security — not a code review, an actual test of the deployed app: mapping accessible routes, roles, and requests, then probing for weaknesses.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt; 8 critical issues. None of them were visible from using the app normally — the UI looked polished, dashboards were properly separated, auth worked, normal flows worked fine. After fixing them, a second scan came back clean.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Takeaway&lt;/strong&gt;&lt;br&gt;
Lovable turned a detailed spec into a working app in a weekend — genuinely impressive. But "vibe-coded and published" isn't the same as "safe to hand real user data to." A security pass isn't a replacement for building the product, and it's not optional once you're handling accounts, permissions, and personal records — it's just part of the release checklist, same as checking mobile responsiveness or environment configs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This is the prompt I used to build TripNest:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;TripNest – Collaborative Travel Planner&lt;/p&gt;

&lt;p&gt;Prompt I Used to make TripNest&lt;br&gt;
Overview&lt;br&gt;
Build a modern travel planning web app where users can create trips, collaborate with friends, build itineraries, upload travel documents, and receive travel recommendations.&lt;/p&gt;

&lt;p&gt;Tech Stack&lt;br&gt;
React&lt;br&gt;
TypeScript&lt;br&gt;
Tailwind CSS&lt;br&gt;
Supabase (Auth + PostgreSQL)&lt;br&gt;
APIs&lt;br&gt;
Google Maps API – Maps and destination search&lt;br&gt;
OpenWeather API – Weather forecasts&lt;br&gt;
Amadeus API – Flight and hotel search&lt;br&gt;
Authentication&lt;br&gt;
Sign Up&lt;br&gt;
Login&lt;br&gt;
Forgot Password&lt;br&gt;
Logout&lt;br&gt;
Roles&lt;br&gt;
Traveler: Manage their own trips and invite collaborators&lt;br&gt;
Moderator: Moderate public content&lt;br&gt;
Admin: Manage users and access the admin dashboard&lt;br&gt;
Features&lt;br&gt;
Dashboard&lt;br&gt;
Trip CRUD&lt;br&gt;
Shared itineraries&lt;br&gt;
Search &amp;amp; filtering&lt;br&gt;
File uploads&lt;br&gt;
Notifications&lt;br&gt;
Public &amp;amp; private trips&lt;br&gt;
Database&lt;br&gt;
Users&lt;br&gt;
Trips&lt;br&gt;
Trip Members&lt;br&gt;
Itineraries&lt;br&gt;
Comments&lt;br&gt;
Notifications&lt;br&gt;
Uploaded Files&lt;br&gt;
Security&lt;br&gt;
Role-based access control&lt;br&gt;
Secure API authorization&lt;br&gt;
Supabase Row Level Security (RLS)&lt;br&gt;
Prevent unauthorized access, edits, file downloads, IDOR, and privilege escalation&lt;br&gt;
Goal&lt;br&gt;
Build a production-ready collaborative travel planner with multiple users, shared resources, CRUD operations, external API integrations, and secure authentication and authorization.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>webdev</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
