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
- Overview
- Why CatMap?
- Features
- Technology Stack
- Application Preview
- Project Structure
- Architecture
- Getting Started
- Lessons Learned
- Roadmap
- Contributors
- License
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.
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."
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. |
| 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.
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. |
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 |
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.
Follow these instructions to set up the project on your local machine for development and testing.
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)
- Clone the repository.
git clone https://github.com/WhalEmo/CatMap.git-
Open the project in Android Studio.
-
Create a Firebase project.
-
Download
google-services.json. -
Place
google-services.jsoninside theapp/directory. -
Enable:
- Authentication
- Cloud Firestore
- Firebase Storage
- Realtime Database
-
Create a Google Maps API Key.
-
Add your Maps API key to
local.propertiesor your preferred secrets configuration. -
Sync Gradle.
-
Run the application.
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.
- Authentication
- Google Maps
- CameraX
- Firebase Storage
- Realtime Chat
- Profile System
- Nearby Cats
- Jetpack Compose
- StateFlow
- Complete Kotlin Migration
- Improved Navigation Engine
- Clean Architecture
- Unit Tests
- Dark Theme
- CI/CD Pipeline
- Offline Mode
| Name | Role |
|---|---|
| Beyza Nur Takça | Lead Android Developer |
| Emrullah Uygun | Android Developer |
Built with Kotlin, Java, Firebase and ❤️ for the cat community.
This project is licensed under the MIT License. See the LICENSE file for more information.






