nestjs-firebase-admin
v0.6.2
Published
Firebase Admin SDK for Nestjs
Maintainers
Readme
Features
- AdminService — Firebase app initialization and lifecycle management
- AuthService — Create, update, delete users; verify ID tokens; manage custom claims
- FirestoreService — Typed CRUD, collection queries, batch writes, transactions
- DatabaseService — Realtime Database read, write, push, update, remove, and listeners
- MessagingService — Send to device tokens, topics, and conditions; manage subscriptions
- Sync (
register) and async (registerAsync) module registration - Compatible with NestJS 7 – 11 and Firebase Admin 13+
- TypeScript-first with full type support
Installation
npm i nestjs-firebase-admin --saveyarn add nestjs-firebase-adminpnpm add nestjs-firebase-adminQuick start
Import AdminModule in your root or feature module:
import { Module } from '@nestjs/common';
import { AdminModule } from 'nestjs-firebase-admin';
@Module({
imports: [
AdminModule.register({
credential: {
projectId: 'my-project-id',
clientEmail: 'my-client-email',
privateKey: 'my-private-key',
},
databaseURL: 'https://my-project-id.firebaseio.com',
}),
],
})
export class AppModule {}Async configuration
Use registerAsync to load credentials from ConfigService or any other provider:
import { Module } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
import { AdminModule } from 'nestjs-firebase-admin';
@Module({
imports: [
AdminModule.registerAsync({
inject: [ConfigService],
useFactory: (config: ConfigService) => ({
credential: {
projectId: config.get('FIREBASE_PROJECT_ID'),
clientEmail: config.get('FIREBASE_CLIENT_EMAIL'),
privateKey: config.get('FIREBASE_PRIVATE_KEY'),
},
databaseURL: config.get('FIREBASE_DATABASE_URL'),
}),
}),
],
})
export class AppModule {}Usage examples
Once AdminModule is imported, inject any service:
import { Injectable } from '@nestjs/common';
import { AuthService, FirestoreService } from 'nestjs-firebase-admin';
@Injectable()
export class UsersService {
constructor(
private readonly auth: AuthService,
private readonly firestore: FirestoreService,
) {}
async createUser(email: string, password: string) {
const user = await this.auth.createUser({ email, password });
await this.firestore.set(`users/${user.uid}`, { email, createdAt: new Date() });
return user;
}
async getUser(uid: string) {
return this.firestore.get(`users/${uid}`);
}
}Requirements
| Dependency | Version | |-----------|---------| | Node.js | >= 20 | | NestJS | >= 7.0.0 | | firebase-admin | >= 13.0.0 |
Documentation
Full documentation is available at hebertcisco.github.io/nestjs-firebase-admin.
Contributing
Contributions, issues, and feature requests are welcome! Check the issues page or read the contributing guide.
