Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

305 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CatMap Banner

CatMap

Where Every Cat Finds Its Place.

An open-source Android application for discovering, photographing, and sharing cats on an interactive map.

Discover nearby cats • Capture memorable moments • Share with the community

Android • Firebase • Google Maps • CameraX • MVVM

Android

Kotlin

Java

Firebase

Google Maps

Architecture

License


Table of Contents


Overview

CatMap is an open-source Android platform built for cat lovers who want to discover, document, and share cats through an interactive map.

Instead of leaving memorable encounters as forgotten photos in a gallery, CatMap turns each sighting into a location-aware community post.

The application combines Google Maps, CameraX, Firebase Authentication, Cloud Firestore, Firebase Storage, and a real-time messaging system to create a social experience centered around location and photography.

The project follows the MVVM architectural pattern and focuses on maintainability, modularity, and modern Android development practices.

Why CatMap?

Every day, countless cats are encountered in streets, campuses, neighborhoods, and parks. Most of these encounters disappear as isolated photos stored on personal devices.

CatMap transforms these moments into a shared community experience.

By combining location services, photography, and social interaction, the application allows every cat sighting to become part of a collaborative map maintained by the community.

Instead of asking:

"I saw a cat today."

CatMap allows users to say:

"I shared its story with everyone."

Features

CatMap brings together interactive mapping, mobile photography, real-time communication and cloud services into a single Android application designed for cat lovers.

Feature Description
Authentication User registration, login and password recovery.
Interactive Map Explore nearby cats using Google Maps and GeoFire.
Photography Capture and upload photos with CameraX.
Community Profiles, comments, follows and cat posts.
Realtime Chat Instant one-to-one messaging.
Cloud Backend Firebase Authentication, Firestore, Storage and Realtime Database.

Technology Stack

Category Technology
Language Kotlin + Java
UI XML
Architecture MVVM
Backend Firebase
Database Firestore
Storage Firebase Storage
Authentication Firebase Auth
Maps Google Maps SDK
Camera CameraX
Async Coroutines
Build Gradle KTS
Min SDK 24
Target SDK 34

CatMap is built using modern Android development tools with a strong focus on scalability, maintainability and modular architecture.

Application Preview

CatMap is designed around a simple user journey.

Discover nearby cats.

Capture memorable moments.

Share them with the community.


Discover

Capture

Explore nearby cats shared by the community.

Take high-quality photos using CameraX.

Share

Connect

Publish your cat sightings with precise location.

Start real-time conversations with other users.

Profile

Details

Manage your posts and personal profile.

View detailed information about every cat marker.


Project Structure

The project is organized into feature-based modules and shared infrastructure layers to improve maintainability and scalability.

app
├── auth/                # User authentication
├── maps/                # Google Maps & location features
├── chat/                # Realtime messaging
├── profile/             # User profiles and social features
├── models/              # Data models
├── repository/          # Data access layer
├── comments/            # Comments and replies
└── ui/
    ├── camera/          # CameraX implementation
    ├── navigation/      # Navigation engine
    ├── upload/          # Post publishing
    ├── manager/         # Shared managers
    ├── map/             # Map UI components
    └── extensions/      # Kotlin extensions
Package Responsibility
auth User authentication and account management
maps Google Maps integration and location features
chat Realtime messaging infrastructure
profile User profile and social interactions
repository Data access and Firebase communication
models Application data models
ui Shared UI components and navigation

Architecture

CatMap follows the MVVM (Model–View–ViewModel) architectural pattern.

The application separates presentation logic, business logic, and data access into dedicated layers, making the project easier to understand and maintain.

            UI Layer
    (Activity / Fragment / XML)
              │
              ▼
          ViewModel
              │
              ▼
          Repository
              │
      ┌───────┼────────┬───────────┐
      ▼       ▼        ▼           ▼
 Firebase  Firestore Storage Google Maps
   Auth
              │
              ▼
           GeoFire

This architecture allows UI components to remain independent from backend implementations while improving scalability and code organization.

Getting Started

Follow these instructions to set up the project on your local machine for development and testing.

Prerequisites

Ensure you have the following installed before proceeding:

  • Android Studio (Latest version recommended)
  • Java Development Kit (JDK) 17 or higher
  • A Firebase Account
  • A Google Cloud Platform Account (for Maps SDK)

Installation

  1. Clone the repository.
git clone https://github.com/WhalEmo/CatMap.git
  1. Open the project in Android Studio.

  2. Create a Firebase project.

  3. Download google-services.json.

  4. Place google-services.json inside the app/ directory.

  5. Enable:

    • Authentication
    • Cloud Firestore
    • Firebase Storage
    • Realtime Database
  6. Create a Google Maps API Key.

  7. Add your Maps API key to local.properties or your preferred secrets configuration.

  8. Sync Gradle.

  9. Run the application.

Lessons Learned

Developing CatMap provided valuable experience in modern Android application architecture and mobile software engineering.

Key lessons learned throughout the project include:

  • MVVM significantly improves maintainability.
  • Navigation architecture should be designed before feature implementation.
  • Kotlin-only development simplifies project consistency.
  • StateFlow would be preferred over LiveData for modern state management.
  • Jetpack Compose would be the preferred UI toolkit for future development.

If CatMap were started again today, it would adopt a Compose-first architecture, a cleaner repository layer and a redesigned navigation engine.

Roadmap

  • Authentication
  • Google Maps
  • CameraX
  • Firebase Storage
  • Realtime Chat
  • Profile System
  • Nearby Cats

Next Version

  • Jetpack Compose
  • StateFlow
  • Complete Kotlin Migration
  • Improved Navigation Engine
  • Clean Architecture
  • Unit Tests
  • Dark Theme
  • CI/CD Pipeline
  • Offline Mode

Contributors

Name Role
Beyza Nur Takça Lead Android Developer
Emrullah Uygun Android Developer

Built with Kotlin, Java, Firebase and ❤️ for the cat community.

License

This project is licensed under the MIT License. See the LICENSE file for more information.

About

A location-based cat media sharing Android application built with Material 3, CameraX, Firebase, and a reactive custom LocationEngine.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages