I Built a Small Social App. Here’s What Worked, What Broke, and What I’d Do Again.

I’m Kayla, and I wanted a tiny, friendly network for my block. So I built one. I called it Porch Pals. Yes, very cute. I made it with FlutterFlow and Firebase. Nights. Weekends. Coffee at 9 pm. My cat sat on my keyboard more than once. I wrote up an extended post-mortem over here if you want the expanded version with even more screenshots.

Was it worth it? Mostly. Let me explain.

Why I Even Tried This

I wanted neighbors to share lost pets, porch plants, and yard sale pics. Big apps felt too loud. Too many rules. So I made a small space. It needed a feed, likes, comments, push alerts, and simple chat. Nothing wild. But still real. I had already kicked the tires on a handful of replacements—these alternatives to Facebook convinced me that none hit the neighborly sweet spot.

What I Used (and How It Felt)

  • FlutterFlow for screens and buttons. Drag, drop, wire actions. Easy to start.
  • Firebase Auth for sign in with Apple and Google.
  • Firestore for posts, comments, and follows.
  • Firebase Storage for photos and short clips.
  • Cloud Functions for things that need a server, like safe like counts.
  • Cloud Messaging for push alerts.

If you’re curious how teams stretch FlutterFlow in production, the engineers at Levi9 shared an excellent technical deep-dive that echoes many of the setup choices I landed on here.

Sounds fancy, right? It’s not bad. The fun part is you can see things working fast. The tough part is rules and little edge cases that will make you sigh.

Real Bits From the Build

Sign Up: Two Apples, One Person

Day one, I had duplicate users. Why? Apple’s “hide my email” made a second account for the same person. I fixed it by linking the Apple and Google providers to the same UID. It took an hour and two more coffees. After that, no more ghost users.

The Feed: Too Many Posts, Too Slow

My first feed loaded 200 posts at once. Rookie move. On older phones, it crawled. I switched to pages of 20, used startAfter for the next page, and added pull to refresh. Simple, smooth, done.

Likes: The Count Kept Lying

Two people liked a post at the same time. The count jumped wrong. Classic race bug. I moved likes to a Cloud Function that uses a transaction. That kept the number true. Tap. Count goes up by one. No drama.
For anyone prototyping a similar feature, the lightweight widget at LikeButton can save you a surprising amount of time.

Photos: HEIC? Nope

iPhones send HEIC images. Android didn’t love that. My app didn’t either. Uploads froze. So I added an upload step that converts to JPG and shrinks wide images to 1080 px. After that, uploads felt quick, even on slow Wi-Fi.

Push Alerts: 4 A.M. Oops

My first push schedule went off at 4 a.m. for three people. Time zones are tricky. I switched to user local time based on device settings and wrote a simple check. No more sleepy complaints.

Comments: A Little Hurt, Then a Fix

A teen wrote something mean. My heart sank. I added “Report” and “Mute” that same night. Reports go to a mod queue. I blurred flagged posts. Not fancy AI—just a checklist. It helped right away. Moderation is hard; reading an honest review of a dedicated physician social network reminded me that even professional spaces struggle with it.
To see how quickly explicit images can overrun a mainstream stream, take two minutes to skim this overview of Twitter nudes — it maps the hashtags, search habits, and moderation blind spots that any budding community manager should be aware of.

Chat: Works, But Keep It Light

One-on-one chat is fine. Group chat got heavy. I kept groups to 20 members and archived old threads. I also added typing dots because small touches make chat feel alive.

App Store: The Waiting Room

Apple asked me to add a “Block” button and a simple privacy note. Fair. I added both. On the next try, they passed it. Google Play was faster.

What Users Actually Did

  • Week 1: 27 neighbors joined. We got 89 posts. Lots of dog photos.
  • My favorite note: “The buttons are big. Bless you.” That was from Gloria, who’s 72.
  • Teens wanted stories that vanish. So I added 24-hour posts. They loved it.
  • A dad asked for a “Yard Sale” tag. That tag is our busiest on Saturdays.

Costs and Speed

  • Firestore read costs in month one: $18. Storage: $2. Not scary.
  • Cold starts on Functions made the first like tap feel slow after a nap. I set one tiny function to stay warm. It helped.
  • Images were the big bite. Thumbnails saved the day.

Pros I Felt Right Away

  • Fast UI work in FlutterFlow. I could try three layouts in an hour.
  • Firebase Auth is steady. Social sign in felt clean.
  • Real-time updates make the feed feel alive.

Cons That Poked Me

  • Firestore rules are fussy. One wrong line, and writes fail with no clear hint.
  • Media handling takes care. Without resize, it’s lag city.
  • Group chat scales weird. It’s fine small. Big groups need more care and maybe a different stack.

How I Set Up My Data (Simple and Strong)

  • users: profile info, block list, lastSeen
  • posts: authorId, text, imageUrl, createdAt, likeCount
  • comments (as a sub-collection under posts): text, authorId, createdAt
  • follows: followerId, followeeId
  • reports: itemType, itemId, reason, reporterId, createdAt

It’s not fancy. But it’s easy to reason about and secure.

Little Things That Made a Big Difference

  • Skeleton loaders on the feed. People wait better when stuff shimmers.
  • Deep links for invites. One tap, you’re in the right screen.
  • Big touch targets. Fewer mis-taps, fewer grumbles.
  • Rate limits: 1 post per minute, 50 likes per hour. Stops spam without nagging.
  • A “What’s New” card after updates. Folks like to know what changed.

I borrowed subtle UX clues from other micro-networks, including a candid look at a crossdressing social network where safety and anonymity are paramount.

Bugs I Won’t Forget

  • Android: Photos rotated sideways. I normalized EXIF on upload.
  • iOS: Keyboard covered the comment box. I added safe area padding.
  • Search froze on long names. I added indexing on lowercase usernames and trimmed spaces.

Who This Setup Fits

  • Small social apps. Neighborhoods, clubs, classrooms, teams.
  • MVPs that need to ship fast, learn, and grow later.
    Passion-based hubs—think biker social networking sites or faith-oriented circles like this Christian network experience—show just how far a niche can carry a product when tech stays small and focused.
    Developers exploring alternative back-ends can also draw inspiration from the Kreante team’s experience building a full professional network on FlutterFlow with Supabase, which demonstrates how far no-code tooling can stretch when paired with the right data layer.
  • Not great for giant groups, heavy media, or deep search at huge scale. You’ll feel it.

What I’d Do Next Time

  • Start with a mod queue on day one. Don’t wait for the first hurtful comment.
  • Build stories first. They spark more posts from shy users.
  • Add email summaries weekly. Simple roundups pull people back in.

My Bottom Line

I’d use FlutterFlow and Firebase again for a small social app. It felt human. It shipped fast. I could fix stuff the same night someone asked. Was everything smooth? No. But the trade felt fair.

Score? 8 out of 10 for this kind of project. With a little patience—and a cat who doesn’t step on the delete key—you can get something real into people’s hands. If you’re curious how another city-scale app compares, check out this take on Dallas Social Network—you’ll see many of the