Firestore (Android)

Open
#162 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

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

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.

Description

needs-info

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:

@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
}
Dominant language
TypeScript
Stars
127
Forks
49
PR merge metrics
No merged PRs in 30d

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from firebase/firebaseopensource.com

All issues in firebase/firebaseopensource.com

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.