┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ F I R E B A S E M U L T I - P R O J E C T A R C H I T E C T U R E │ │ "1 Project = 1 Database + 1 Unique API Key/Config" │ └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ ▲ │ owns & manages │ ┌─────────────────────┴─────────────────────┐ │ │ │ 👤 DEVELOPER (One Account) │ │ Unlimited Firebase Projects allowed │ │ │ └───────────────┬───────────────┬───────────┘ │ │ ┌───────────────────────┼───────────────┼───────────────────────┐ │ │ │ │ ▼ ▼ ▼ ▼ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ PROJECT A │ │ PROJECT B │ │ PROJECT C │ │ ... │ │ (E‑commerce) │ │ (Admin System) │ │ (Analytics) │ │ (Unlimited) │ └────────┬────────┘ └────────┬────────┘ └────────┬────────┘ └────────┬────────┘ │ │ │ │ │ 1:1 rule ──────────────────────────────────────────────────────────▶ │ │ Each project owns EXACTLY ONE database (Spark = 1 Firestore + 1 RTDB) │ │ │ │ │ ▼ ▼ ▼ ▼ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ 🗄️ DATABASE A │ │ 🗄️ DATABASE B │ │ 🗄️ DATABASE C │ │ 🗄️ DATABASE N │ │ Firestore/RTDB │ │ Firestore/RTDB │ │ Firestore/RTDB │ │ (isolated) │ └────────┬────────┘ └────────┬────────┘ └────────┬────────┘ └────────┬────────┘ │ │ │ │ │ Unique API & Config ───────────────────────────────────────────────▶ │ │ Project A → API Key A, Config A (never cross‑wire!) │ │ Project B → API Key B, Config B │ │ │ │ ▼ ▼ ▼ ┌─────────────────────────────────────────────────────────────────────────────────────────┐ │ APPS (unlimited per project) │ ├───────────────────────────────────┬─────────────────────────────────────────────────────┤ │ PROJECT A apps (all share DB A) │ PROJECT B apps (all share DB B) │ │ ┌────────────┐ ┌────────────┐ │ ┌────────────┐ ┌────────────┐ │ │ │ 🌐 Web App │ │ 🌐 Web App │ │ │ 📱 Android │ │ 📱 Android │ │ │ │ Store │ │ Dashboard │ │ │ Staff App │ │ Field App │ │ │ └────────────┘ └────────────┘ │ └────────────┘ └────────────┘ │ │ ┌────────────┐ │ ┌────────────┐ │ │ │ 📱 Android │ │ │ 🌐 Web App │ │ │ │ Buyer App │ │ │ Admin Panel│ │ │ └────────────┘ │ └────────────┘ │ └───────────────────────────────────┴─────────────────────────────────────────────────────┘ ╔═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗ ║ F R E E P L A N ( S P A R K ) L I M I T S ║ ╠═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╣ ║ ✅ CAN do: ❌ CANNOT do: ║ ║ • Many apps (web + Android + iOS) sharing 1 project's database • 2 separate databases inside 1 project ║ ║ • Multiple Firebase projects (each with its own free quota) • Multiple Firestore DBs per project (Blaze only) ║ ║ • Separate data logically via collections/paths • Multiple RTDB instances (1 per project max) ║ ║ • Use Project A + Project B as workaround for two databases • Unlimited reads/writes (strict quotas apply) ║ ╚═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝ ┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ C R O S S - P R O J E C T D A T A S H A R I N G │ ├─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ │ │ │ ╔═══════════════════╗ ╔═══════════════════╗ │ │ ║ PROJECT A ║ ║ PROJECT B ║ │ │ ║ Database A ║ ║ Database B ║ │ │ ╚═════════╤═════════╝ ╚═════════╤═════════╝ │ │ │ │ │ │ │ NO automatic sync ─────────┼──────▶ ❌ Built-in replication? NO │ │ │ │ │ │ │ Manual bridging only │ │ │ └──────────────┬───────────────┘ │ │ │ │ │ ▼ │ │ ┌─────────────────────────────┐ │ │ │ 🌉 MANUAL BRIDGE OPTIONS │ │ │ │ • Cloud Functions │ │ │ │ • REST API calls │ │ │ │ • External backend service │ │ │ │ • Pub/Sub message relay │ │ │ └─────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ ┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ Y O U R D E C I S I O N T R E E │ ├─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ │ │ │ ┌───────────────────────────────────┐ │ │ │ Do apps need to share data? │ │ │ └─────────────────┬─────────────────┘ │ │ │ │ │ ┌────────────────────────────┼────────────────────────────┐ │ │ │ │ │ │ │ YES │ NO │ │ │ │ │ │ │ ▼ │ ▼ │ │ ┌───────────────────┐ │ ┌───────────────────┐ │ │ │ OPTION 1 │ │ │ OPTION 2 │ │ │ │ Single Project │ │ │ Multiple Projects│ │ │ │ One shared DB │ │ │ Separate DBs │ │ │ │ Many apps │ │ │ per project │ │ │ └─────────┬─────────┘ │ └─────────┬─────────┘ │ │ │ │ │ │ │ ▼ │ ▼ │ │ ✅ Recommended for │ ✅ Clean isolation │ │ related apps │ for unrelated systems │ │ (e.g., same user base) │ (e.g., different customers) │ │ │ │ │ │ │ │ ┌────────────────────┴────────────────────┐ │ │ │ Need two separate databases? │ │ │ └────────────────────┬────────────────────┘ │ │ │ │ │ ┌──────────────────┼──────────────────┐ │ │ │ │ │ │ │ YES │ NO │ │ │ │ │ │ │ ▼ │ ▼ │ │ ┌───────────────────┐ │ ┌───────────────────┐ │ │ │ Use TWO (or more) │ │ │ Keep ONE project │ │ │ │ Firebase projects │ │ │ Use collections │ │ │ │ Project A + B │ │ │ to separate data │ │ │ └───────────────────┘ │ └───────────────────┘ │ │ │ │ │ │ │ │ ┌────────────────────┴────────────────────┐ │ │ │ On Spark free plan? │ │ │ └────────────────────┬────────────────────┘ │ │ │ │ │ ┌──────────────────┼──────────────────┐ │ │ │ │ │ │ │ YES │ NO │ │ │ │ │ │ │ ▼ │ ▼ │ │ ┌───────────────────┐ │ ┌───────────────────┐ │ │ │ Multiple projects │ │ │ Consider Blaze │ │ │ │ is your ONLY way │ │ │ for multi-database│ │ │ │ for 2+ databases │ │ │ (paid feature) │ │ │ └───────────────────┘ │ └───────────────────┘ │ │ │ │ └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ ╔═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗ ║ C A R D I N A L R U L E S (MUST REMEMBER) ║ ╠═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╣ ║ ║ ║ ┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ ║ ║ │ 🔗 RULE 1: 1 PROJECT = 1 DATABASE (1:1 relationship) — on Spark you cannot have two databases inside one project │ ║ ║ ├─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ ║ ║ │ 🔑 RULE 2: Each project has its OWN API KEY & CONFIG — Project A → Config A, Project B → Config B (never mix!) │ ║ ║ ├─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ ║ ║ │ 📦 RULE 3: 1 PROJECT = MANY APPS — unlimited web/Android/iOS apps can share the same project & database │ ║ ║ ├─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ ║ ║ │ 👤 RULE 4: 1 DEVELOPER = UNLIMITED PROJECTS — one account can own and manage hundreds of Firebase projects │ ║ ║ ├─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ ║ ║ │ 🚫 RULE 5: NO automatic cross-project data sharing — bridges must be built manually (Cloud Functions, REST, etc.) │ ║ ║ └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ ║ ║ ║ ╚═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝ LEGEND ┌─────────────────────────────────────┐ │ 🗄️ = Database 🌐 = Web App │ │ 📱 = Android App 🔑 = API Key/Config│ │ 👤 = Developer 🚫 = Not allowed │ │ ✅ = Allowed ❌ = Forbidden │ │ 🌉 = Manual bridge │ └─────────────────────────────────────┘

Comments

Popular posts from this blog

[MAIN PROGRAM] UNDONE HOUSEHOLD WORKs WEB-PROGRAM v2/MAIN

PENDING ITEMs [REVISION] v0