Automate the repetitive parts of connecting your project to Firebase.
FireConfig detects your project, configures Firebase, safely manages environment variables, and generates framework-specific Firebase initialization.
React Β· Vite Β· CRA Β· Next.js Β· React Native
npx fireconfig initThat's it.
FireConfig guides you through:
Detect β Authenticate β Select β Configure β Generate
π₯ FireConfig
β Project detected: Next.js
β Package manager: npm
β Firebase CLI detected
β Firebase authentication detected
Fetching Firebase projects...
β Firebase project selected
Checking Firebase Web Apps...
β Web App selected
Downloading Firebase configuration...
β Firebase configuration retrieved
Configuring Firebase environment...
β .env.local configured
Generating Firebase initialization...
β src/firebase/config.js created
β Firebase configuration complete!
| Command | Description |
|---|---|
fireconfig init |
Configure Firebase for the current project |
fireconfig doctor |
Diagnose Firebase configuration |
fireconfig --help |
Show available commands |
fireconfig --version |
Show installed version |
| Framework | Detection | Configuration |
|---|---|---|
| React | β | β (with build tooling) |
| React + Vite | β | β |
| React + Create React App | β | β |
| Next.js | β | β |
| React Native Android | β | β |
| Expo | β | π§ Planned |
React Native projects are automatically connected to Firebase through the Android Firebase configuration workflow. Expo configuration is planned for a future release.
- Detects your project framework
- Detects your package manager
- Checks Firebase CLI
- Verifies Firebase authentication
- Finds or creates a Firebase project
- Finds or creates a Firebase Web App
- Retrieves Firebase SDK configuration
- Installs the Firebase SDK when required
- Safely merges
.env.local - Generates
src/firebase/config.js - Validates the configuration with
fireconfig doctor
FireConfig does not blindly overwrite your project:
- Existing environment variables are preserved
- Comments and unrelated variables are preserved
- Conflicting Firebase values require confirmation
- Existing Firebase configuration files require confirmation before replacement
- Firebase projects and Web Apps require explicit confirmation before creation
- Re-running FireConfig does not duplicate configuration
- Service-account private keys are never requested or stored
npx fireconfig initnpm install -g fireconfigcliThen:
fireconfig initIn v0.3.0, FireConfig uses a capability-oriented web architecture:
Firebase project
β
βΌ
Firebase Web App
β
βΌ
Firebase SDK config
β
βββββββββββ΄ββββββββββ
βΌ βΌ
Environment Init module
merger generator
β β
βΌ βΌ
.env.local src/firebase/config.js
Environment (.env.local):
NEXT_PUBLIC_FIREBASE_API_KEY=...
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=...
NEXT_PUBLIC_FIREBASE_PROJECT_ID=...
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=...
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=...
NEXT_PUBLIC_FIREBASE_APP_ID=...Initialization (src/firebase/config.js):
import { initializeApp, getApps } from "firebase/app";
const firebaseConfig = {
apiKey: process.env.NEXT_PUBLIC_FIREBASE_API_KEY,
authDomain: process.env.NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN,
projectId: process.env.NEXT_PUBLIC_FIREBASE_PROJECT_ID,
storageBucket: process.env.NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET,
messagingSenderId: process.env.NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID,
appId: process.env.NEXT_PUBLIC_FIREBASE_APP_ID,
};
export const app =
getApps().length > 0
? getApps()[0]
: initializeApp(firebaseConfig);Environment (.env.local):
VITE_FIREBASE_API_KEY=...
VITE_FIREBASE_AUTH_DOMAIN=...
VITE_FIREBASE_PROJECT_ID=...
VITE_FIREBASE_STORAGE_BUCKET=...
VITE_FIREBASE_MESSAGING_SENDER_ID=...
VITE_FIREBASE_APP_ID=...Initialization (src/firebase/config.js):
import { initializeApp, getApps } from "firebase/app";
const firebaseConfig = {
apiKey: import.meta.env.VITE_FIREBASE_API_KEY,
authDomain: import.meta.env.VITE_FIREBASE_AUTH_DOMAIN,
projectId: import.meta.env.VITE_FIREBASE_PROJECT_ID,
storageBucket: import.meta.env.VITE_FIREBASE_STORAGE_BUCKET,
messagingSenderId: import.meta.env.VITE_FIREBASE_MESSAGING_SENDER_ID,
appId: import.meta.env.VITE_FIREBASE_APP_ID,
};
export const app =
getApps().length > 0
? getApps()[0]
: initializeApp(firebaseConfig);Environment (.env.local):
REACT_APP_FIREBASE_API_KEY=...
REACT_APP_FIREBASE_AUTH_DOMAIN=...
REACT_APP_FIREBASE_PROJECT_ID=...
REACT_APP_FIREBASE_STORAGE_BUCKET=...
REACT_APP_FIREBASE_MESSAGING_SENDER_ID=...
REACT_APP_FIREBASE_APP_ID=...Initialization (src/firebase/config.js):
import { initializeApp, getApps } from "firebase/app";
const firebaseConfig = {
apiKey: process.env.REACT_APP_FIREBASE_API_KEY,
authDomain: process.env.REACT_APP_FIREBASE_AUTH_DOMAIN,
projectId: process.env.REACT_APP_FIREBASE_PROJECT_ID,
storageBucket: process.env.REACT_APP_FIREBASE_STORAGE_BUCKET,
messagingSenderId: process.env.REACT_APP_FIREBASE_MESSAGING_SENDER_ID,
appId: process.env.REACT_APP_FIREBASE_APP_ID,
};
export const app =
getApps().length > 0
? getApps()[0]
: initializeApp(firebaseConfig);Run fireconfig doctor to inspect and diagnose your Firebase setup at any time:
fireconfig doctorExample:
π©Ί FireConfig Doctor
β Project: React + Vite project detected
β Package manager: npm detected
β Firebase CLI: Firebase CLI 15.30.2 detected
β Firebase authentication: Firebase authentication detected
β Firebase SDK: Firebase SDK 12.19.0 detected
β Firebase config: React Vite Firebase environment configuration is valid
6/6 checks passed.
π₯ Firebase setup looks good!
- FireConfig never requests or stores Firebase service-account private keys.
- Authentication is delegated entirely to the official Firebase CLI (
firebase login). - Values written to
.env.localare client-side public identifiers intended for browser use. - Firebase Security Rules and server-side checks remain essential to protect your database, storage, and authentication resources.
- Process execution avoids unnecessary
shell: trueand sanitizes command arguments.
Clone the repository:
git clone https://github.com/Ugesh-Praavin/fireconfig.git
cd fireconfig
npm installRun the automated test suite:
npm test- Automated test suite & CI: 135 tests passing
- Project detection
- Firebase CLI detection & installation
- Firebase authentication
- Firebase project & Web App discovery
- SDK installation & initial generators
- Next.js environment configuration
- React Native Android configuration (
google-services.json) - Framework-specific doctor diagnostics
- Capability-oriented strategy architecture
- Shared safe environment merger (
src/config/env-merger.js) - Web Firebase initialization generator (
src/firebase/config.js) - Automatic Firebase project creation with explicit consent
- Automatic Firebase Web App creation with explicit consent
- Context-aware confirmation UX for zero-project and user-selected creation flows
- Conflict detection and interactive overwrite prompts
- Framework-aware doctor validation for Vite, CRA, Next.js, React, and React Native
- Strict idempotency across CLI runs
- Expo configuration workflow
- Firebase iOS configuration for React Native
- Additional Firebase service configuration (Firestore, Storage, Auth emulator setup)
MIT License. See LICENSE for details.
Ugesh Praavin D
- GitHub: https://github.com/Ugesh-Praavin
- Repository: https://github.com/Ugesh-Praavin/fireconfig