Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/typeheim/fire-legion

DDD framework for Firebase
https://github.com/typeheim/fire-legion

ddd fire-legion firebase firestore firestore-orm orm rxjs

Last synced: 3 months ago
JSON representation

DDD framework for Firebase

Awesome Lists containing this project

README

        





NPM Version
Build Status
Package License
Discord


DDD framework for Firebase applications that includes ORMOnFire and FireAuth libraries.

# Getting Started

Install root package that adds all of the latest FireLegion packages to dependencies

```shell
yarn add @typeheim/fire-legion
//or
npm -i @typeheim/fire-legion
```

# ORMOnFire

ORMOnFire is a powerful Firestore ORM.

```typescript
import {
Agregate,
Entity,
Collection,
CollectionRef,
ID,
Field
} from '@typeheim/orm-on-fire'

@Agregate()
export class User {
@ID() id: string

@Field() firstName: string

@Field() lastName: string

@Field() status: string

@CollectionRef(UserFile) files: Collection
}

@Entity({ collection: 'user-files' })
export class UserFile {
@ID() id: string

@Field() name: string
}

export const UsersCollection = Collection.of(User)

//.......

// with promise-like interface
let markus = await UsersCollection.one('markus').get()

// with Rx interface
UsersCollection.one('tom').get().subscribe((tom: User) => {
tom.files.forEach((file: UserFile) => {
// some cool stuff
})
})
```
[Read more...](https://github.com/typeheim/fire-legion/tree/master/packages/orm-on-fire)

# FireAuth

FireAuth is Firebase auth library based on Rx principles.

```typescript
import { FireAuth, FireAuthSession, AuthProvidersList } from '@typeheim/fire-auth'

// through provider
FireAuth.throughProvider(AuthProvidersList.Google).signInWithPopup()

// using email/password flow
FireAuth.signIn(new PasswordAuth('email', 'password'))

// getting user object
FireAuthSession.userStream.subscribe(user => /*do your magick*/)

// gedding auth status
FireAuthSession.isLoggedInStream.subscribe(isLoggedIn => /*do your magick*/)

// gedding access token
FireAuthSession.accessTokenStream.subscribe(token => /*do your magick*/)
```
[Read more...](https://github.com/typeheim/fire-legion/tree/master/packages/fire-atuh)