Skip to content
Jud-ePublic

About

Flutter event-discovery app with Firebase Auth, Google Maps, group management, and chat.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

📍 MeetEm

Event discovery and group-based social app built with Flutter.

MeetEm is a mobile application designed to help people discover nearby events and make it easier to participate in them with other people.

The application combines event discovery, location-based browsing, authentication, interest tracking, group formation, and group chat.

🚀 Features

  • 📍 Event Discovery — Browse events with location information
  • 🗺️ Map Integration — View event locations using Google Maps
  • ❤️ Interest Tracking — Express interest in events
  • 👥 Group Formation — Join an existing group or create a new one
  • 🎯 Dense-Fill Groups — Prioritize groups with more available members before creating additional groups
  • 👤 20-Person Capacity — Groups have a maximum capacity of 20 members
  • 💬 Group Chat — Send messages within event groups
  • 🚪 Leave & Don't Rejoin — Users can leave a group and prevent themselves from automatically rejoining it
  • 🔐 Firebase Authentication — Email/password account creation and login
  • 🧭 Onboarding Flow — Guided account creation and profile setup

🧠 Group Formation Logic

MeetEm uses a dense-fill strategy when users join groups.

Rather than distributing users across many small groups, available groups for an event are sorted by their current membership count, with fuller groups considered first.

Groups have a maximum capacity of 20 members.

When all existing groups are full, the application can create a new group for the event.

For user-generated events, group creation requires at least 3 interested users. Sourced events bypass this threshold.

💬 Group Chat

Each group has an associated chat.

Messages currently use an in-memory repository within the application. The repository is structured so that the data layer can be replaced with persistent storage when the backend is implemented.

Chat messages contain:

  • Message ID
  • Group ID
  • Sender ID
  • Sender name
  • Message text
  • Timestamp

🔐 Authentication

MeetEm uses Firebase Authentication for account creation and login.

The authentication flow includes:

  • Email/password registration
  • Email/password login
  • Firebase authentication error handling
  • Password validation
  • Display-name setup
  • Logout

Firebase authentication is also injected into the login and signup screens during testing so authentication behavior can be tested without relying on the production Firebase service.

🧪 Testing

The project includes Flutter widget tests covering:

  • Login form validation
  • Invalid email validation
  • Successful Firebase authentication
  • Onboarding navigation

Firebase Authentication is mocked during login tests, allowing the UI authentication flow to be tested independently of a live Firebase backend.

🏗️ Architecture

The application separates UI, models, and application services Repository classes use ChangeNotifier to notify screens when group or chat state changes.

🛠️ Tech Stack

Mobile

Flutter Dart

Authentication & Services

Firebase Authentication Google Maps

State / Application Logic

ChangeNotifier Repository pattern In-memory application state

Testing

Flutter Widget Tests firebase_auth_mocks

Development

Git / GitHub 📱 Current Implementation

MeetEm is currently a functional Flutter prototype.

Firebase Authentication is integrated, while event, group, and chat data currently use local/mock application state.

This separation allows the UI and application logic to be developed before connecting the remaining data flows to persistent backend storage.

🔮 Future Improvements

Persist groups and chat messages using Firestore Persist event interest and membership data Replace mock event data with external event APIs Add real-time chat synchronization Add stronger user/group moderation Expand automated test coverage Complete production deployment

Built with Flutter, Dart, Firebase Authentication, and Google Maps.

Design & Wireframing

Designs are subject to change during the phases of design and implementation. Preview: https://www.figma.com/design/xKYdlKL3pxpe3ZyksckuR8/Color-wheel-palette-generator--Community-?node-id=0-1&t=at2iEqBdTpU1bBR6-1

Tools

Wireframes and UI mockups were designed in Figma, using Figma Make to rapidly prototype the onboarding flow before implementation in Flutter.

Color Palette

The app's visual identity is built around two primary accent tones, each with a full tonal ramp for backgrounds, surfaces, and text states:

Role Hex Swatch
Primary accent (teal) #4894B1 Interactive elements, dark mode buttons
Primary accent (indigo) #0E31AA Interactive elements, light mode buttons

Teal ramp: #B0DFF6 · #5DBCE0 · #4894B1 · #346E84 · #214A5A · #0F2932 · #051319

Indigo ramp: #EFF0FE · #CCD0FD · #9CA5FC · #697AFA · #1E4DF7 · #0E31AA · #041862

Neutral ramp: #D6D8DA · #ADB1B3 · #888B8D · #656768 · #434546 · #242526 · #101111

Both a dark mode and light mode theme are supported, drawing from the same palette (teal-forward accents in dark mode, indigo-forward accents in light mode).

Onboarding Flow Wireframes

The onboarding flow was wireframed as 10 screens (5 dark mode, 5 light mode), designed for iPhone 17:

  1. Welcome — Map-themed hero image, app tagline ("Meet people near you"), social proof (2.4M+ users)
  2. Sign Up — Create account via Google OAuth or email/password (full name, email, password, confirm password)
  3. Log In — Returning user login via Google OAuth or email/password, with forgot password link
  4. Profile Setup — Username selection step (step 2 of 3), with explanation of visibility to other users
  5. Success — Welcome confirmation screen with account stats (members, topics, rating) and CTA to start exploring

About

Flutter event-discovery app with Firebase Auth, Google Maps, group management, and chat.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages