{"id":25157549,"url":"https://github.com/flatte/flatte-web","last_synced_at":"2025-04-30T09:51:01.482Z","repository":{"id":58240671,"uuid":"100209289","full_name":"Flatte/Flatte-Web","owner":"Flatte","description":"Client-Side NOSql Firebase Realtime Database modeling and management system. (only with angularjs for now...)","archived":false,"fork":false,"pushed_at":"2017-09-14T15:52:23.000Z","size":937,"stargazers_count":30,"open_issues_count":2,"forks_count":6,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-04-12T09:47:46.693Z","etag":null,"topics":["angularjs","client-side","database","denormalization","firebase","firebase-database","firebase-storage","flattejs","javascript","json","nosql","transaction"],"latest_commit_sha":null,"homepage":"https://flatte.maxabab.com","language":"JavaScript","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/Flatte.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-08-13T22:51:25.000Z","updated_at":"2024-06-12T15:11:05.000Z","dependencies_parsed_at":"2022-08-31T03:01:50.555Z","dependency_job_id":null,"html_url":"https://github.com/Flatte/Flatte-Web","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Flatte%2FFlatte-Web","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Flatte%2FFlatte-Web/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Flatte%2FFlatte-Web/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Flatte%2FFlatte-Web/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Flatte","download_url":"https://codeload.github.com/Flatte/Flatte-Web/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251679563,"owners_count":21626555,"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":["angularjs","client-side","database","denormalization","firebase","firebase-database","firebase-storage","flattejs","javascript","json","nosql","transaction"],"created_at":"2025-02-09T01:24:03.176Z","updated_at":"2025-04-30T09:51:01.433Z","avatar_url":"https://github.com/Flatte.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Welcome to Flatte\n![Flatte Logo](https://flatte.maxabab.com/assets/images/logos/flatte%20logo_Header.png \"Flatte Logo\") BETA\n\nClient-Side NOSql Firebase Realtime Database modeling and management system. (only with angularjs for now...)\n\nFlatte manages your database for you with a manifest which is created by you.\n\n## Benefits\n* Flatte provides to create a NOSql database model.\n* MySQL like transaction for Firebase. (If all conditions are passed, flatte sends the whole data to firebase.)\n* Client side processing.\n* Flatte handles copy records and external effects for you. No need to write everything in your application. (Denormalization)\n* Flatte allows you to create field based functions.\n* You can create your constants with predefined templates. (also with functions)\n* You can apply filters to incoming values. (Such as uppercase, date format..)\n* With [Flatte Manifesto Builder](https://flatte.maxabab.com), you can easily create and visualize your manifest.\n\n### Attention!\nThis is a beta release. We have not finished all the tests yet.\nSome functions may not work as expected.\n\n**We do not recommend using flatte in your actual projects.**\n\n\u003e _For detailed explanation, please checkout our **[wiki](https://github.com/Flatte/Flatte-Web/wiki)**_\n\n## Getting Started\n\nThese instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.\n\n### Prerequisites\n\nThere are not many prerequisites required to build and run this project, but you'll need the following:\n\n* Firebase\n* AngularJs\n\n## Flatte Manifest Builder \nEasy and free registration\n[Flatte Manifesto Builder](https://flatte.maxabab.com)\n\n## How to use\n### Install\n##### CDN\n\t\u003cscript type=\"text/javascript\" src=\"https://cdn.rawgit.com/Flatte/Flatte-Web/1.0.1-beta.88/dist/flatte.min.js\"\u003e\u003c/script\u003e\n##### Bower\n\t$ bower install flatte\nIf you don't want to use bower or cdn, you can manually download the latest version of [flatte.min.js](https://raw.githubusercontent.com/Flatte/Flatte-Web/master/dist/flatte.min.js). \n\n### Basic Usage\n\nInject flatte in your angularjs module.\n```javascript\nangular.module('myApp',['mx.flatte']);\n```\n\nSet configurations.\n```javascript\nangular.module('myApp').run(['flatte',function(flatte){\n  flatte.settings({\n    debug: false,\n    baseRef: \"/\",\n    con: firebase,\n    manifest: {},\n    predefined: {\n      \".true\": true,\n      \".false\": false,\n      \".null\": null,\n      \".timestamp\": firebase.database.ServerValue.TIMESTAMP\n    }\n  });\n}])\n```\n\n#### Understranding Flatte Manifest\nEvery node has \"_q\" and \"childs\" property. \"_q\" contains node's own options.\n```javascript\nflatt.settings().manifest = {\n  \"foo\":{\n    \"_q\":{},      // define action specifications of this node. (ID, saveValue, deleteValue, copy, externalEffect, function)\n    \"childs\":{    // contains children of \"foo\" node\n      \"bar\":{\"_q\":{},\"childs\":{}},\n      \"baz\":{\"_q\":{},\"childs\":{}}\n    }\n  }\n}\n```\nFor more information about manifest structure and how to use, please visit our [wiki](https://github.com/Flatte/Flatte-Web/wiki)\n\n![flatte.do process diagram](https://github.com/Flatte/Flatte-Web/raw/master/wiki/assets/flatte_do_process_diagram.jpg \"flatte.do process diagram\")\n\n#### Example\nDefined manifest in settings.\n```json\n{\n  \"customers\": {\n    \"childs\": {\n      \"customerID\": {\n        \"_q\": {\n          \"ID\": true\n        },\n        \"childs\": {\n          \"firstName\": {\n            \"_q\": {\n              \"saveValue\": {\"filter\": \"uppercase\"},\n              \"deleteValue\": \".auth\",\n              \"copy\":[{\"saveValue\": \"$\",\"deleteValue\": \"null\",\"path\": \"/contact/#customerID/firstName\"}]\n            }\n          }\n        }\n      }\n    }\n  }\n}\n```\nSending save data to flatte.\n```javascript\nangular.module('myApp').controller('myCtrl',['flatte',function(flatte){\n  flatte.do([{\n    ref:\"customer/-KrvGZuVwqwerty\",\n    data:{\"firstName\":\"Elon\",\"lastName\": \"Musk\",\"twitter\": \"@elonmusk\"}\n  }]);\n}]);\n```\n\n##### [Example fiddle](https://jsfiddle.net/micanose/pq8t5unx/)\n\n##### Results\n| Incoming data                                    | Recorded data                                    |\n|--------------------------------------------------|--------------------------------------------------|\n| customer/-KrvGZuVwqwerty/firstName:\"Elon\"         | customer/-KrvGZuVwqwerty/firstName:\"**ELON**\"     |\n| customer/-KrvGZuVwqwerty/lastName:\"Musk\"         | customer/-KrvGZuVwqwerty/lastName:\"Musk\"         |\n| customer/-KrvGZuVwqwerty/twitter:\"@elonmusk\"     | customer/-KrvGZuVwqwerty/twitter:\"@elonmusk\"     |\n|                                                  | **contact/-KrvGZuVwqwerty/firsName:\"Elon\"**      |\n\n![Flatte Example Photo](https://flatte.maxabab.com/assets/images/welcome/flatte_screen/full.png \"Flatte Manifesto Builder\")\n\n## Versioning\n\nWe use [SemVer](http://semver.org/) for versioning. For the versions available, see the [Flatte Web Tags](https://github.com/Flatte/Flatte-Web/tags). \n\n\n## Contributing\n\nPlease read [CONTRIBUTING.md](CONTRIBUTING.md) for details on our code of conduct, and the process for submitting pull requests to us.\n\n## Authors\n\n* **Sezer Ekinci** - *Initial work* - [@micanose](https://github.com/micanose)\n* **Kaan Ekinci** - *Initial work* - [@kaanekinci](https://github.com/kaanekinci)\n\nSee also the list of [contributors](https://github.com/Flatte/Flatte-Web/graphs/contributors) who participated in flatte.\n\n## License\n- Flatte is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details\n  - [http://opensource.org/licenses/MIT](http://opensource.org/licenses/MIT)\n\n[![Flatte Manifest Builder 01 Explore A Demo Project](http://img.youtube.com/vi/g6rlvM0GuA8/0.jpg)](http://www.youtube.com/watch?v=g6rlvM0GuA8)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflatte%2Fflatte-web","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflatte%2Fflatte-web","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflatte%2Fflatte-web/lists"}