
Quick Website Cleanup & Creating Essential Pages (Day 26)
Yesterday was one of those development days where you're not building flashy new features, but doing the unglamorous work that actually keeps your project moving forward. You know what I mean? Sometimes you just need to clean house before you can build the next room.
Quick summary
I spent Day 26 of my 60-day challenge fixing some technical issues on my Bali travel directory, creating essential pages like terms and conditions, and dealing with database filtering problems that were making my site look broken. Not the most exciting work, but absolutely necessary if I want this thing to actually function properly.
Why these cleanup days matter
Here's the thing about building in public - people see the exciting feature launches and the big wins, but they don't always see the maintenance work that keeps everything running smoothly. Living here in Bali and working on this project daily, I've learned that these cleanup sessions are just as important as the flashy development days.
I'm at day 26 of building this travel directory, and I realized I had some fundamental issues that needed fixing before I could move forward. The homepage wasn't displaying locations properly, my filtering logic was broken, and I was missing basic pages that any legitimate website needs.
The filtering nightmare I walked into
So basically what happened was this: I opened up my homepage and noticed that all my accommodation listings were showing "unknown" for the location. This is exactly the kind of bug that makes your site look completely unprofessional.
The problem was in how I was filtering my database queries. I had listings categorized by accommodation, dining, activities, etc., but my code wasn't properly connecting the category relationships. Instead of showing "Canggu, Bali" it was just showing blank fields.
Here's how I tackled the database issues
Step 1: Understanding the category structure
First, I had to wrap my head around how my database was organized. I have a listings table with category IDs, and those categories have parent-child relationships. So "beachfront villa" would be a child of "accommodation" which is the parent category.
The issue was that my homepage was trying to filter by specific category IDs instead of looking at the parent category. Not gonna lie, this took me way longer to figure out than it should have.
Step 2: Fixing the filter logic
I updated my code to filter by parent category ID instead of specific subcategories. So now when someone visits the "Featured Stays" section, it shows all listings where the parent category is "accommodation" - whether that's hotels, villas, or guesthouses.
// Instead of filtering by specific category
filter by category_id = 'beachfront-villa'
// Now filtering by parent category
filter by parent_category_id = 'accommodation'
This was one of those "oh duh" moments where the solution seems obvious in hindsight.
Step 3: Getting locations to display properly
The location issue was trickier. My listings table connects to a locations table, but the relationship wasn't being loaded properly in my queries. I had to make sure that when I fetch listings, I'm also joining the location data.
Once I fixed this, suddenly "Canggu, Bali" started showing up instead of "unknown location." Small win, but it felt huge.
Creating the boring but essential pages
You know what's funny? I've been so focused on building cool features that I forgot to create basic pages like terms and conditions, privacy policy, and contact forms. These aren't exciting to build, but they're absolutely necessary if you want people to trust your site.
The one-shot approach
I decided to use my AI coding assistant to generate these pages all at once. I gave it the design pattern from my existing about page and asked it to create:
Contact page with a proper form
Privacy policy with standard templates
Terms and conditions
Cookie policy
The first attempt looked terrible - just walls of text with no styling. But after some back and forth, I got them looking consistent with the rest of my site.
What went wrong (because something always does)
The biggest headache was getting my MCP (Model Context Protocol) working with Supabase. This would let my coding assistant access my database directly instead of me having to take screenshots of my database schema every time I need help with queries.
I've been trying to set this up for weeks and it just won't work properly. So I'm still doing this awkward dance of taking screenshots and uploading them whenever I need database help. It's inefficient, but sometimes you just have to work with what you've got.
Current status of the cleanup
After this session, my homepage is actually displaying real information instead of placeholder text and "unknown" fields. The featured sections are pulling the right data, locations are showing up correctly, and I have all the legal pages that a real business needs.
It's not glamorous work, but now when someone lands on my site, it looks professional instead of like a broken demo.
Why I'm sharing the messy parts
I'm traveling to Thailand on Monday to meet my parents, so I wanted to get this cleanup done before I'm working from different locations and dealing with travel schedules. These kinds of technical debt sessions are crucial - they're just not as fun to talk about as building new features.
But here's what I've learned: the boring maintenance work is what separates a real project from a side project that never launches. Every successful website has gone through these cleanup phases.
What's coming next
Once I'm back from Thailand, I'm planning to focus on the monetization aspects - affiliate programs, partnership pages, and the backend systems that will actually make this travel directory profitable. But I needed this solid foundation first.
I'm also working on integrating a proper newsletter system using Beehive, which I'll probably do a separate episode about since it's pretty interesting how you can sync form submissions directly to your email list.
Lessons from this cleanup session
Technical debt compounds quickly if you ignore it
Sometimes the most important work is the least exciting
Having proper legal pages isn't optional if you want to run a real business
Database relationships are trickier than they seem (still learning this one)
The thing about building in public is that you have to show the unglamorous days too. Not every development session results in a shiny new feature. Sometimes you spend the whole day fixing things that should have been working in the first place.
But you know what? These cleanup days are often when you learn the most. Fighting with database queries and fixing broken relationships teaches you way more about how your system actually works than building new features on top of shaky foundations.
Following along with my 60-day challenge to build a travel directory? I'm documenting the whole journey - the wins, the frustrations, and everything in between. What's the most boring but necessary work you've had to do on your projects?