Skip to content
Social & MediaAndroidiOS

Plural Social App

Location-based social network — friends, groups, crowd-voted event meetups, and a dedicated gamification backend

A Flutter social-networking app built around a friend graph, groups and a 'Moments' photo/video feed, with events discovered through Firestore geo-radius search and resolved by attendee voting — a venue poll and a fees poll that auto-tally and close on schedule — all backed by a dedicated Firebase Cloud Functions service that runs the app's points-and-levels gamification layer.

Plural Social App — app screenshot
Plural Social App — app screenshot
Plural Social App — app screenshot

Both repositories are private. Geo-radius event search, poll auto-tally and the points-and-levels Cloud Functions layer are explained below.

About this project

The core is a standard social graph — friend requests, a personal 'Moments' feed of photo/video posts with likes and threaded comments — extended with groups that each carry their own feed, chat, member gallery, join-request/invite flow and event calendar, plus a lightweight 'Fun' tab where users create their own challenges.

Location runs through the whole event flow. Event creation embeds a live Google Map (tap the map to drop a pin, or auto-detect the device's current position via Geolocator/Geocoding reverse-geocoding), and event discovery runs a Firestore geo-radius query layered under Algolia-powered search for groups and events.

Events have a distinctive mechanic: attendees vote on where an event happens and what it costs. Each event carries a venue poll and a separate fees poll with per-option vote tallies; a scheduled Cloud Function closes the poll once its duration elapses and writes back the winning venue/fee option. A second family of scheduled functions auto-deletes events and group-events past their end date, running on a minute-level cron. Shareable event-invite links run through Firebase Dynamic Links.

The gamification layer lives entirely in the companion Cloud Functions service: creating a post, liking, commenting, sending a friend request, joining a group, creating an event or sending a chat message each award points through a Firestore-triggered function, a nightly scheduled job resets each user's daily point total, and cumulative totals are mapped against a configurable level table. The same service fans out FCM push notifications for friend requests/acceptances, new group posts, likes, comments and new chat messages (both 1:1 and group chat) — all server-side, none of it duplicated in the Flutter app.

Auth is multi-provider: Google Sign-In and Facebook Login both complete a Firebase credential exchange, alongside standard Firebase email/password.

Key features

  • Nearby-event discovery: a Firestore geo-radius query surfaced under a live embedded Google Map — tap to drop a location pin, or auto-detect the device's current position
  • Crowd-decided event logistics — attendees vote on a venue poll and a fees poll per event; a scheduled Cloud Function tallies the leading option and auto-closes the poll once its set duration elapses
  • Scheduled cleanup jobs auto-delete events and group-events past their end date on a minute-level cron, independent of the poll-close jobs
  • Groups with their own feed, event calendar, chat, member gallery and join-request/invite flow, alongside a personal 'Moments' photo/video feed with likes and threaded comments
  • Real-time chat, both 1:1 and per-group, with Cloud Functions fanning out push notifications on every new message
  • Friend-request system with FCM push notifications on acceptance and a synced friend-count on both profiles
  • Points/leveling gamification: a Cloud Functions layer awards points for post/like/comment/friend/group/event/message actions, resets each user's daily total on a nightly scheduled job, and maps cumulative totals to levels
  • Multi-provider auth — Google Sign-In and Facebook Login via Firebase credential exchange, plus email/password — and Firebase Dynamic Links for shareable event-invite deep links
  • User-created 'challenges' in a dedicated Fun tab

More in Social & Media

~/sherazi.dev$./say-hello

Say hello.

Questions about a case study, one of the packages, AI tooling or Flutter in general are always welcome.

// or browse the packages on pub.dev(opens in a new tab)