{"id":36237019,"url":"https://github.com/cwahn/firebase-rust-sdk","last_synced_at":"2026-01-11T06:02:41.615Z","repository":{"id":328941213,"uuid":"1117207099","full_name":"cwahn/firebase-rust-sdk","owner":"cwahn","description":"Unofficial port of firebase SDK","archived":false,"fork":false,"pushed_at":"2025-12-17T10:21:33.000Z","size":1204,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-19T23:35:22.355Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cwahn.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-16T01:40:34.000Z","updated_at":"2025-12-17T10:17:04.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/cwahn/firebase-rust-sdk","commit_stats":null,"previous_names":["cwahn/firebase-rust-sdk"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/cwahn/firebase-rust-sdk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cwahn%2Ffirebase-rust-sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cwahn%2Ffirebase-rust-sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cwahn%2Ffirebase-rust-sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cwahn%2Ffirebase-rust-sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cwahn","download_url":"https://codeload.github.com/cwahn/firebase-rust-sdk/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cwahn%2Ffirebase-rust-sdk/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28293188,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-11T04:44:51.577Z","status":"ssl_error","status_checked_at":"2026-01-11T04:44:44.232Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-11T06:02:41.017Z","updated_at":"2026-01-11T06:02:41.602Z","avatar_url":"https://github.com/cwahn.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Firebase Rust SDK\n\n[![Crates.io](https://img.shields.io/crates/v/firebase-rust-sdk.svg)](https://crates.io/crates/firebase-rust-sdk)\n[![Documentation](https://docs.rs/firebase-rust-sdk/badge.svg)](https://docs.rs/firebase-rust-sdk)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nIdiomatic Rust SDK for Firebase Authentication and Cloud Firestore with full async/await support and gRPC transport.\n\n\u003e **⚠️ Unofficial Port**: This is an unofficial community port of the Firebase C++ SDK. It is not affiliated with, endorsed by, or supported by Google or Firebase.\n\u003e\n\u003e **⚠️ Beta Release**: This is version 0.1.0-beta. APIs are stabilizing but may still change before 1.0.0. Suitable for development and testing.\n\n## Features\n\n### Firebase Authentication\n- ✅ Email/password authentication\n- ✅ Anonymous authentication  \n- ✅ OAuth providers (Google, Facebook, GitHub, generic OAuth)\n- ✅ Custom token authentication\n- ✅ Password reset\n- ✅ Automatic token refresh\n- ✅ User management (profile, password, email updates)\n- ✅ Auth state change listeners (Rust Streams)\n\n### Cloud Firestore\n- ✅ Document CRUD operations via gRPC\n- ✅ Queries with filters, ordering, pagination\n- ✅ WriteBatch for atomic operations\n- ✅ Transactions with automatic retry\n- ✅ Real-time listeners using gRPC streaming (documents \u0026 queries)\n- ✅ Aggregation queries (COUNT, SUM, AVERAGE)\n- ✅ Settings configuration (host, SSL, cache)\n- ✅ Nested collections\n- ✅ Compound filters (And/Or)\n- ✅ GeoPoint, Timestamp support\n- ⚠️ Offline persistence API (structure ready, implementation pending)\n\n## Installation\n\nAdd to your `Cargo.toml`:\n\n```toml\n[dependencies]\nfirebase-rust-sdk = \"0.1.0-beta\"\ntokio = { version = \"1\", features = [\"full\"] }\n```\n\n## Quick Start\n\nSee the [documentation](https://docs.rs/firebase-rust-sdk) for detailed API reference.\n\n### Setup\n\n1. Create a Firebase project at [console.firebase.google.com](https://console.firebase.google.com)\n2. Enable Authentication and Firestore in your project\n3. Get your API key and project ID from project settings\n\n### Basic Usage\n\n```rust\nuse firebase_rust_sdk::{App, AppOptions, Auth, firestore::Firestore};\n\n#[tokio::main]\nasync fn main() -\u003e Result\u003c(), Box\u003cdyn std::error::Error\u003e\u003e {\n    // Initialize Firebase App\n    let app = App::create(AppOptions {\n        api_key: \"YOUR_API_KEY\".to_string(),\n        project_id: \"your-project-id\".to_string(),\n        app_name: None,\n    }).await?;\n    \n    // Get Auth instance\n    let auth = Auth::get_auth(\u0026app).await?;\n    \n    // Sign in\n    auth.sign_in_with_email_and_password(\"user@example.com\", \"password\").await?;\n    let user = auth.current_user().await?;\n    println!(\"Signed in as: {}\", user.uid);\n    \n    // Get Firestore instance with ID token\n    let id_token = user.get_id_token(false).await?;\n    let firestore = Firestore::new(\n        app.options.project_id.clone(),\n        \"default\".to_string(),\n        Some(id_token)\n    ).await?;\n    \n    // Write document\n    let doc_ref = firestore.document(\"users/alice\");\n    doc_ref.set(/* your data */).await?;\n    \n    // Read document\n    let snapshot = doc_ref.get().await?;\n    if snapshot.exists() {\n        println!(\"Data: {:?}\", snapshot.data);\n    }\n    \n    Ok(())\n}\n```\n\n## Requirements\n\n- Rust 1.75 or later\n- Tokio runtime\n- Firebase project with Authentication and Firestore enabled\n\n## Architecture\n\n- **Auth**: REST API for authentication operations\n- **Firestore**: gRPC with TLS for all database operations\n- **Async**: Full async/await with Tokio\n- **Streaming**: Real-time listeners use Rust Stream trait\n- **Type-safe**: Strong typing for all Firebase types\n\n## Development Status\n\nThis SDK is in active development. Core functionality is complete, but some features are pending:\n\n- ✅ All Auth features implemented and tested\n- ✅ All Firestore CRUD operations working\n- ✅ Real-time listeners with gRPC streaming\n- ✅ Transactions and batched writes\n- ⚠️ Offline persistence (API ready, implementation pending)\n\n## Testing\n\nThe SDK includes 24 comprehensive integration tests. To run them:\n\n1. Copy `.env.example` to `.env`\n2. Fill in your Firebase credentials\n3. Run: `cargo test --test firestore_integration -- --test-threads=1`\n\n## Contributing\n\nContributions welcome! This project follows the design patterns from the Firebase C++ SDK while using idiomatic Rust patterns.\n\n## License\n\nMIT License - see [LICENSE](LICENSE) file for details.\n\n## Credits\n\nBased on the Firebase C++ SDK architecture. This is an independent implementation and is not officially supported by Google or Firebase.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcwahn%2Ffirebase-rust-sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcwahn%2Ffirebase-rust-sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcwahn%2Ffirebase-rust-sdk/lists"}