firebase / firebase/firebaseopensource.com

Firestore (Android)

Open
#162 1 comment 0 reactions 0 assignees View on GitHub
needs-info
Dominant language
TypeScript
Stars
127
Forks
49
PR merge metrics
No merged PRs in 30d

Description

**Link to project (GitHub)**: https://github.com/natario1/Firestore

**Describe the project in 2-3 sentences**: A lightweight, efficient library to manage Firestore model data as reactive, observable objects that adapt to your Firestore schema and provide type safety and efficiency. Written in Kotlin, with built-in data-binding and `Parcelable` support.

**Why would Firebase developers be interested in this project?**: The library is a needed companion to the official Firestore SDK. It uses annotation processing to generate type-safe, null-safe, efficient (no reflection) objects around your Firestore model. It leverages Kotlin syntax, so declaring a property is as simple as `var name: String by this`.

Controlling the model class lets the engine do many things much more efficiently, for example:
- parsing data from snapshot: the library will cache and reuse as many objects as possible, plus use generated setters instead of reflection
- saving data to server: saves time and bandwidth by keeping track of dirty fields and uploading them, instead of the whole object.

In addition, each model class automatically offers a `@Parcelable` implementation and it works with Android's databinding out of the box, by simply declaring fields as bindable:

```kotlin
@FirestoreClass
class Message : FirestoreDocument() {
// You can use {message.text} and {message.comment} in XML layouts
// and they will be updated automatically when the model changes.
@get:Bindable var text: String by this
@get:Bindable var author: String by this
}
```

Contributor guide

Open the contributing guide

Research direction

The issue contains a project-submission description for the Firestore Android library, but names no repository file, test, or entry point. Review existing project-submission handling in firebaseopensource.com first and determine whether this content should be added or updated; done means the submission is represented according to the site's established format.

Written by the indexing model from the issue text.

Assessment

Tech stack
firebase, kotlin
Domain
content, documentation
Issue type
Documentation
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.