{"id":15037419,"url":"https://github.com/sd10/nora","last_synced_at":"2025-07-05T02:33:44.695Z","repository":{"id":19561319,"uuid":"87247937","full_name":"SD10/Nora","owner":"SD10","description":"Nora is a Firebase abstraction layer for FirebaseDatabase and FirebaseStorage","archived":false,"fork":false,"pushed_at":"2018-06-19T15:03:42.000Z","size":47266,"stargazers_count":270,"open_issues_count":3,"forks_count":26,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-07-02T09:59:38.374Z","etag":null,"topics":["database","firebase","firebase-database","firebasestorage","networking","open-source","swift","swift3"],"latest_commit_sha":null,"homepage":"","language":"Swift","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/SD10.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-04-05T00:25:09.000Z","updated_at":"2025-05-30T20:23:17.000Z","dependencies_parsed_at":"2022-07-27T00:32:22.825Z","dependency_job_id":null,"html_url":"https://github.com/SD10/Nora","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/SD10/Nora","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SD10%2FNora","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SD10%2FNora/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SD10%2FNora/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SD10%2FNora/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SD10","download_url":"https://codeload.github.com/SD10/Nora/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SD10%2FNora/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263671759,"owners_count":23494034,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["database","firebase","firebase-database","firebasestorage","networking","open-source","swift","swift3"],"created_at":"2024-09-24T20:34:35.806Z","updated_at":"2025-07-05T02:33:44.675Z","avatar_url":"https://github.com/SD10.png","language":"Swift","readme":"\u003cp align=\"center\"\u003e\n   \u003cimg src=\"https://github.com/SD10/Nora/blob/master/Screenshots/NoraBanner.png\"/\u003e\n \u003c/p\u003e\n \n \u003cp align=\"center\"\u003e\n     \u003ca href=\"https://codebeat.co/projects/github-com-sd10-nora-master\"\u003e\n         \u003cimg src=\"https://codebeat.co/badges/222038d6-dd5d-4253-94a6-63f00d3a1ae9\" \n              alt=\"codebeat badge\"\u003e\n     \u003c/a\u003e\n     \u003ca href=\"https://travis-ci.org/SD10/Nora\"\u003e\n         \u003cimg src=\"https://travis-ci.org/SD10/Nora.svg?branch=master\"\n              alt=\"Build Status\"\u003e\n     \u003c/a\u003e\n     \u003ca href=\"https://swift.org\"\u003e\n       \u003cimg src=\"https://img.shields.io/badge/Swift-4.1-orange.svg\"\n            alt=\"Swift\" /\u003e\n     \u003c/a\u003e\n     \u003ca href=\"https://developer.apple.com/xcode\"\u003e\n         \u003cimg src=\"https://img.shields.io/badge/Xcode-9.3-blue.svg\"\n              alt=\"Xcode\"\u003e\n     \u003c/a\u003e\n     \u003ca href=\"https://opensource.org/licenses/MIT\"\u003e\n         \u003cimg src=\"https://img.shields.io/badge/License-MIT-red.svg\"\n              alt=\"MIT\"\u003e\n     \u003c/a\u003e\n     \u003ca href=\"https://github.com/SD10/Nora/issues\"\u003e\n         \u003cimg src=\"https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat\"\n              alt=\"Contributions Welcome\"\u003e\n     \u003c/a\u003e\n     \u003ca href=\"https://github.com/ellerbrock/open-source-badge/\"\u003e\n         \u003cimg src=\"https://badges.frapsoft.com/os/v1/open-source.svg?v=102\"\n              alt=\"Open Source Love\"\u003e\n     \u003c/a\u003e\n \u003c/p\u003e\n\n---\n\nNora is a Firebase abstraction layer for working with FirebaseDatabase and FirebaseStorage.\n\nStop spending all that time cleaning up your view controllers and trying to write reusable Firebase code.\n\nLet Nora handle that for you. Your time is better spent on what you do best. Writing great Apps!\n\nSimply put, working with Firebase just got whole lot easier.\n\n---\n\n## Installation\n\n### [CocoaPods](https://cocoapods.org) Recommended\n\n```rb\n  pod 'Nora'\n```\n\n## Example\n\n### Working with FirebaseDatabase\n\nAfter [setting up a target](https://github.com/SD10/Nora/blob/master/Documentation/Examples/DatabaseProviderExample.md) making requests is simple.\n\n```swift\n\nlet database = DatabaseProvider\u003cUsers\u003e()\n\ndatabase.request(.getUser(id: \"1\")) { result in\n  switch result {\n  case .success(let response):\n    let snapshot = response.snapshot\n  case .failure(let error):\n    print(error.localizedDescription)\n  }\n}\n\n```\n\n### Database Response Decoding\n\nProvide a JSON initializer for your custom types and easily convert the database response:\n\n```swift\n\nlet database = DatabaseProvider\u003cUsers\u003e()\n\ndatabase.request(.getUser(id: \"1\")) { result in\n  switch result {\n  case .success(let response):\n    let user = try? response.mapTo(User.init)\n  case .failure(let error):\n    print(error.localizedDescription)\n  }\n}\n\n```\n\n---\n\n### Working with FirebaseStorage\n\n```swift\n\nlet storage = StorageProvider\u003cAvatars\u003e()\nlet avatarData = Data()\nvar meta = FIRStorageMetadata?\n\nstorage.request(.upload(avatarData, meta)) { result in\n  switch result {\n  case .success(_):\n    print(\"Upload Success!\")\n  case .failure(let error):\n    print(error.localizedDescription)\n  }\n}\n\n```\n\n---\n\n## Documentation (In Progress)\n\n[DatabaseTarget Documentation](https://github.com/SD10/Nora/blob/master/Documentation/Documentation/DatabaseTargetDocs.md)\n\n[DatabaseProvider Documentation](https://github.com/SD10/Nora/blob/master/Documentation/Documentation/DatabaseProviderDocs.md)\n\n---\n\n## Get involved\n\nYou can contribute to this project in more ways than just code:\n\n- Improving the README\n- Improving Documentation\n- Bug reporting\n- New feature suggestions\n- Answering questions\n\nWe really encourage everyone to get involved in open source.\n\nYour feedback is always welcome and much appreciated!\n\nREGARDLESS, of your level of experience.\n\nYou will never be put down for having an opinion. So take a chance, open a pull request, or submit that issue!\n\n---\n\n## Inspiration\n\nThis project was inspired and based off the [Moya](https://github.com/Moya/Moya) networking abstraction layer in Swift.\n\nCheck out their project if you're using traditional networking!\n\n---\n\n## License\n\nNora is released under an MIT license. See [LICENSE.md](https://github.com/SD10/Nora/blob/master/LICENSE.md) for more information.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsd10%2Fnora","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsd10%2Fnora","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsd10%2Fnora/lists"}