For inboxkitten.com, an opensource disposable email service;\n\n

We migrated our serverless workload from Cloud Functions for Firebase to CloudFlare workers, taking advantage of the lower cost and faster-performing edge computing of Cloudflare network. Made possible due to our extremely low CPU and RAM overhead of our serverless functions.\n\n

If I were to summarize the limitation of Cloudflare (as oppose to firebase/gcp functions), it would be ...\n\n

    \n
  1. <5ms CPU time limit\n
  2. Incompatible with express.js\n
  3. one script limitation per domain\n\n\n

    Limitations our workload is able to conform with (YMMV)\n\n

    For hosting of static files, we migrated from Firebase to CommonsHost\n\n

    More details on the trade-off in between both serverless providers is in the article","private":false,"viewCount":542814,"publishedAt":"2019-03-27T09:39:18Z","upvotesCount":14,"decisionType":"migration","fromTools":[{"type":"id","generated":false,"id":"Tool:101231773461393493","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231776794429029","typename":"Tool"}],"toTools":[{"type":"id","generated":false,"id":"Tool:101231773404113083","typename":"Tool"}],"subjectTools":[{"type":"id","generated":false,"id":"Tool:101231773404113083","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773461393493","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231776794429029","typename":"Tool"}],"services":[{"type":"id","generated":false,"id":"Tool:101231776794429029","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773404113083","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773461393493","typename":"Tool"}],"topics":[],"__typename":"StackDecision"},"$StackDecision:101821943632695955.company":{"imageUrl":"https://img.stackshare.io/company/28674/default_f389dd772fbd5809e1b8df40f5e8e9873d63d3ca.png","thumbUrl":"https://img.stackshare.io/company/28674/thumb_f389dd772fbd5809e1b8df40f5e8e9873d63d3ca.png","name":"UI licious","path":"/companies/ui-licious","features":[],"__typename":"Company"},"$StackDecision:101821943632695955.link":{"url":"https://dev.to/uilicious/why-we-migrated-serverless-inboxkitten-from-firebase-to-cloudflare-workers-and-commonshost-gd3","title":"Why we migrated opensource 😼inboxkitten (77 million serverless request) from 🔥Firebase to ☁️Cloudflare workers & 🐑CommonsHost - DEV Community 👩‍💻👨‍💻","__typename":"Link"},"Tool:101231776794429029":{"id":"101231776794429029","name":"Cloud Functions for Firebase","slug":"cloud-functions-for-firebase","title":"Run your mobile backend code without managing servers","verified":true,"imageUrl":"https://img.stackshare.io/service/6673/cZLxNFZS.jpg","canonicalUrl":"/cloud-functions-for-firebase","path":"/cloud-functions-for-firebase","votes":6,"fans":517,"stacks":469,"followingTool":false,"followContext":null,"__typename":"Tool","thumbUrl":"https://img.stackshare.io/service/6673/thumb_cZLxNFZS.jpg"},"Tool:101231773404113083":{"id":"101231773404113083","name":"CloudFlare","slug":"cloudflare","title":"The Web Performance & Security Company.","verified":true,"imageUrl":"https://img.stackshare.io/service/15/twitter-profile-400x400.png","canonicalUrl":"/cloudflare","path":"/cloudflare","votes":1772,"fans":27482,"stacks":76473,"followingTool":false,"followContext":null,"__typename":"Tool","thumbUrl":"https://img.stackshare.io/service/15/thumb_twitter-profile-400x400.png"},"$Tool:101231773461393493.stackDecisions({\"first\":6}).edges.0":{"node":{"type":"id","generated":false,"id":"StackDecision:101821943632695955","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"User:101232031860244544":{"id":"101232031860244544","username":"jsdario","title":"Telecomm Engineering","companyName":"Netbeast","imageUrl":"https://img.stackshare.io/user/86193/default_bf44ae217017c44ff06ece2fabd5d17de25416b7.jpg","thumbUrl":"https://img.stackshare.io/user/86193/thumb_bf44ae217017c44ff06ece2fabd5d17de25416b7.jpg","displayName":"Jesus Dario Rivera Rubio","__typename":"User"},"StackDecision:104331856541518887":{"user":{"type":"id","generated":false,"id":"User:101232031860244544","typename":"User"},"company":{"type":"id","generated":true,"id":"$StackDecision:104331856541518887.company","typename":"Company"},"link":{"type":"id","generated":true,"id":"$StackDecision:104331856541518887.link","typename":"Link"},"publicId":"104331856541518887","id":"104331856541518887","htmlContent":"

    This time I want to share something different. For those that have read my stack decisions, it's normal to expect some advice on infrastructure or React Native. Lately my mind has been focusing more on product as a experience than what's it made of (anatomy). As a tech leader, I have to worry about things like: are we taking enough time for reviews? Are we improving over time? Are we faster now? Is our code of higher quality?\n\n

    For all these questions you can add many great recommendations on your pipeline. We use Trello for bug-tracking and project management. We use https://danger.systems/js/ to add checks for linting, type-enforcing and other quality dimensions in our PRs and a great feature from Vercel that let's you previsualize deployments directly in a PR. However it's not easy to measure this improvements over time. For customer matters we have Amplitude or Firebase analytics, but for our internal process? That's a little bit more complicated.\n\n

    I collaborated recently with some folks in a small startup as an early adopter to create a metrics dashboard for engineers. I tried to add the tool to stackshare.io but still it doesn't appear as one of the options, please take a look on it over product hunt and let us know https://www.producthunt.com/posts/scope-6","private":false,"viewCount":457874,"publishedAt":"2020-06-12T16:03:10Z","upvotesCount":15,"decisionType":"freeform","fromTools":[],"toTools":[],"subjectTools":[],"services":[{"type":"id","generated":false,"id":"Tool:101231773461393493","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773692729304","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231777233002910","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773457672502","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774544144572","typename":"Tool"}],"topics":[],"__typename":"StackDecision"},"$StackDecision:104331856541518887.company":{"imageUrl":"https://img.stackshare.io/company/16436/default_bc41e940174a90be9ec8786fc9c77f2f71d9d6f5.png","thumbUrl":"https://img.stackshare.io/company/16436/thumb_bc41e940174a90be9ec8786fc9c77f2f71d9d6f5.png","name":"Netbeast","path":"/companies/netbeast","features":[],"__typename":"Company"},"$StackDecision:104331856541518887.link":{"url":"https://www.producthunt.com/posts/scope-6","title":"Scope - Software Engineering Metrics for Engineers and Team Leaders | Product Hunt","__typename":"Link"},"Tool:101231773692729304":{"name":"Amplitude","path":"/amplitude","id":"101231773692729304","imageUrl":"https://img.stackshare.io/service/640/default_51e537c5ed098d3e9aba0eb94299e4575a556aec.jpg","thumbUrl":"https://img.stackshare.io/service/640/thumb_51e537c5ed098d3e9aba0eb94299e4575a556aec.jpg","stacks":891,"fans":828,"votes":36,"followingTool":false,"__typename":"Tool"},"Tool:101231777233002910":{"name":"Vercel","path":"/vercel","id":"101231777233002910","imageUrl":"https://img.stackshare.io/service/7618/bHjpwZem_400x400.png","thumbUrl":"https://img.stackshare.io/service/7618/thumb_bHjpwZem_400x400.png","stacks":1429,"fans":1384,"votes":86,"followingTool":false,"__typename":"Tool"},"Tool:101231773457672502":{"name":"Trello","path":"/trello","id":"101231773457672502","imageUrl":"https://img.stackshare.io/service/109/-CvHThPk_400x400.jpg","thumbUrl":"https://img.stackshare.io/service/109/thumb_-CvHThPk_400x400.jpg","stacks":42996,"fans":41101,"votes":3707,"followingTool":false,"__typename":"Tool"},"Tool:101231774544144572":{"name":"React Native","path":"/react-native","id":"101231774544144572","imageUrl":"https://img.stackshare.io/service/2699/KoK6gHzp.jpg","thumbUrl":"https://img.stackshare.io/service/2699/thumb_KoK6gHzp.jpg","stacks":33476,"fans":34301,"votes":1152,"followingTool":false,"__typename":"Tool"},"$Tool:101231773461393493.stackDecisions({\"first\":6}).edges.1":{"node":{"type":"id","generated":false,"id":"StackDecision:104331856541518887","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"User:105161931373123661":{"id":"105161931373123661","username":"RandyMoss","title":null,"companyName":null,"imageUrl":"https://img.stackshare.io/user/786921/default_32de6d75242ae80dfd9a09eb2e4c2ce816d62f1b.jpg","thumbUrl":"https://img.stackshare.io/user/786921/thumb_32de6d75242ae80dfd9a09eb2e4c2ce816d62f1b.jpg","displayName":"Randy Moss","__typename":"User"},"StackDecision:105161993903708297":{"user":{"type":"id","generated":false,"id":"User:105161931373123661","typename":"User"},"company":null,"link":null,"publicId":"105161993903708297","id":"105161993903708297","htmlContent":"

    Hi, we are looking to create a sports app that collects and displays player stats. It will include team chats with push notifications for upcoming games etc. We are thinking of using the standard MERN stack route with a GraphQL API or a real-time Firebase database. Any advice would be greatly appreciated.","private":false,"viewCount":2138141,"publishedAt":"2020-11-06T06:38:02Z","upvotesCount":6,"decisionType":"getAdvice","fromTools":[],"toTools":[],"subjectTools":[{"type":"id","generated":false,"id":"Tool:101231773461393493","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231775212866992","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773845103618","typename":"Tool"}],"services":[{"type":"id","generated":false,"id":"Tool:101231773461393493","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231775212866992","typename":"Tool"}],"topics":[],"__typename":"StackDecision"},"Tool:101231775212866992":{"id":"101231775212866992","name":"GraphQL","slug":"graphql","title":"A data query language and runtime","verified":false,"imageUrl":"https://img.stackshare.io/service/3820/12972006.png","canonicalUrl":"/graphql","path":"/graphql","votes":310,"fans":33379,"stacks":33650,"followingTool":false,"followContext":null,"__typename":"Tool","thumbUrl":"https://img.stackshare.io/service/3820/thumb_12972006.png"},"$Tool:101231773461393493.stackDecisions({\"first\":6}).edges.2":{"node":{"type":"id","generated":false,"id":"StackDecision:105161993903708297","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"User:101946391012365558":{"id":"101946391012365558","username":"lukasvarkalis","title":"Software Engineer","companyName":"","imageUrl":"https://img.stackshare.io/user/291832/default_f97f7fda1c93e900db32a38de02141f8649e5576.jpeg","thumbUrl":"https://img.stackshare.io/user/291832/thumb_f97f7fda1c93e900db32a38de02141f8649e5576.jpeg","displayName":"Lukas Varkalis","__typename":"User"},"StackDecision:104508278987278100":{"user":{"type":"id","generated":false,"id":"User:101946391012365558","typename":"User"},"company":null,"link":null,"publicId":"104508278987278100","id":"104508278987278100","htmlContent":"

    Hi all,\n\n

    I need advice for object-oriented data analysis. I have exported a collection of users from Firebase to JSON, and I want to analyze it, for example, how many users are females, males, etc. Are there any tools or packages that could help me quickly analyze this data?","private":false,"viewCount":192917,"publishedAt":"2020-07-13T19:49:44Z","upvotesCount":2,"decisionType":"getAdvice","fromTools":[],"toTools":[],"subjectTools":[{"type":"id","generated":false,"id":"Tool:101231773461393493","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773939333405","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773845103618","typename":"Tool"}],"services":[{"type":"id","generated":false,"id":"Tool:101231774641851090","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773461393493","typename":"Tool"}],"topics":[],"__typename":"StackDecision"},"Tool:101231773939333405":{"id":"101231773939333405","name":"JavaScript","slug":"javascript","title":"Lightweight, interpreted, object-oriented language with first-class functions","verified":false,"imageUrl":"https://img.stackshare.io/service/1209/javascript.jpeg","canonicalUrl":"/javascript","path":"/javascript","votes":8069,"fans":311406,"stacks":359330,"followingTool":false,"followContext":null,"__typename":"Tool"},"Tool:101231774641851090":{"name":"JSON","path":"/json","id":"101231774641851090","imageUrl":"https://img.stackshare.io/service/2880/1024px-JSON_vector_logo.svg.png","thumbUrl":"https://img.stackshare.io/service/2880/thumb_1024px-JSON_vector_logo.svg.png","stacks":1945,"fans":2290,"votes":9,"followingTool":false,"__typename":"Tool"},"$Tool:101231773461393493.stackDecisions({\"first\":6}).edges.3":{"node":{"type":"id","generated":false,"id":"StackDecision:104508278987278100","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"User:104541388931529911":{"id":"104541388931529911","username":"Coola","title":"","companyName":"","imageUrl":"https://img.stackshare.io/user/669438/default_a9982031d013d93b605b7f99ea8bca321fa29c6f.jpg","thumbUrl":"https://img.stackshare.io/user/669438/thumb_a9982031d013d93b605b7f99ea8bca321fa29c6f.jpg","displayName":"A M","__typename":"User"},"StackDecision:104586416281735036":{"user":{"type":"id","generated":false,"id":"User:104541388931529911","typename":"User"},"company":null,"link":null,"publicId":"104586416281735036","id":"104586416281735036","htmlContent":"

    I am setting up a content management system (CMS) in Laravel using #GoogleCloudPlatform. This #CMS will have quite a few polymorphic many-to-many relationships (at least 10) and for that reason I am considering whether I should use Firebase or other #NoSQL databases with Laravel.\n\n

    I know that there is a laravel-firebase package by Kreait which should allow me to use the firebase as database. My question is therefore:\n\n

      \n
    1. Are there any drawbacks to using Firebase with Laravel, which I should be aware of?\n
    2. Can I possibly use a hybrid model where some data is stored in the SQL database (e.g. user data) while other is stored in Firebase (e.g. the content).\n
    3. Or should I just stick to MySQL and create the several polymorphic many-to-many relationships?\n
    4. Should I do both and see what works better?\n\n\n

      Any advice is appreciated.","private":false,"viewCount":188760,"publishedAt":"2020-07-27T15:01:04Z","upvotesCount":6,"decisionType":"getAdvice","fromTools":[],"toTools":[],"subjectTools":[{"type":"id","generated":false,"id":"Tool:101231777274352317","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773836807964","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773851859414","typename":"Tool"}],"services":[{"type":"id","generated":false,"id":"Tool:101231773851859414","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773836807964","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773461393493","typename":"Tool"}],"topics":[{"type":"id","generated":false,"id":"Topic:104476917444819180","typename":"Topic"},{"type":"id","generated":false,"id":"Topic:101388607028889807","typename":"Topic"},{"type":"id","generated":false,"id":"Topic:101231988975022535","typename":"Topic"}],"__typename":"StackDecision"},"Tool:101231777274352317":{"id":"101231777274352317","name":"Cloud Firestore","slug":"google-cloud-firestore","title":"NoSQL database built for global apps","verified":true,"imageUrl":"https://img.stackshare.io/service/7696/Untitled-5.png","canonicalUrl":"/google-cloud-firestore","path":"/google-cloud-firestore","votes":111,"fans":1104,"stacks":719,"followingTool":false,"followContext":null,"__typename":"Tool","thumbUrl":"https://img.stackshare.io/service/7696/thumb_Untitled-5.png","thumbRetinaUrl":"https://img.stackshare.io/service/7696/thumb_retina_Untitled-5.png"},"Tool:101231773836807964":{"id":"101231773836807964","name":"Laravel","slug":"laravel","title":"A PHP Framework For Web Artisans","verified":false,"imageUrl":"https://img.stackshare.io/service/992/AcA2LnWL_400x400.jpg","canonicalUrl":"/laravel","path":"/laravel","votes":3864,"fans":27176,"stacks":27951,"followingTool":false,"followContext":null,"__typename":"Tool","thumbUrl":"https://img.stackshare.io/service/992/thumb_AcA2LnWL_400x400.jpg"},"Tool:101231773851859414":{"id":"101231773851859414","name":"MySQL","slug":"mysql","title":"The world's most popular open source database","verified":false,"imageUrl":"https://img.stackshare.io/service/1025/logo-mysql-170x170.png","canonicalUrl":"/mysql","path":"/mysql","votes":3753,"fans":122264,"stacks":124965,"followingTool":false,"followContext":null,"__typename":"Tool","thumbUrl":"https://img.stackshare.io/service/1025/thumb_logo-mysql-170x170.png"},"Topic:104476917444819180":{"name":"NoSQL","id":"104476917444819180","__typename":"Topic"},"Topic:101388607028889807":{"name":"CMS","id":"101388607028889807","__typename":"Topic"},"Topic:101231988975022535":{"name":"GoogleCloudPlatform","id":"101231988975022535","__typename":"Topic"},"$Tool:101231773461393493.stackDecisions({\"first\":6}).edges.4":{"node":{"type":"id","generated":false,"id":"StackDecision:104586416281735036","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"User:104524668593557330":{"id":"104524668593557330","username":"psiedlak5760","title":"","companyName":"","imageUrl":"https://img.stackshare.io/user/667055/default_09f7c9c93a920e15d22661675d7376cfa0bdb5da.jpg","thumbUrl":"https://img.stackshare.io/user/667055/thumb_09f7c9c93a920e15d22661675d7376cfa0bdb5da.jpg","displayName":"Pawel S","__typename":"User"},"StackDecision:104529557357459047":{"user":{"type":"id","generated":false,"id":"User:104524668593557330","typename":"User"},"company":null,"link":null,"publicId":"104529557357459047","id":"104529557357459047","htmlContent":"

      Hi,\n\n

      I am in the process of building a mobile application and releasing it to the AppStore.\nCurrently, we're in a TestFlight Beta with ~ 1500 users with a front-end only native iOS app.\nBefore releasing it to production, we would like to add the following functionalities:\n\n

        \n
      1. User email authentication\n

      2. Being able to store and synchronise individual user's data ( generated while interacting with the app each day -> \"user session\" ) between various devices\n

      3. Having user session data ( anonymized ) available for an admin via a visual interface for querying, generating insights\n

      4. Simple crud interface for remote configs\n

      5. a/b testing\n

      6. GDPR requirements ( e.g. workflows for removing or exporting user data, ideally a way to keep the anonymized data too ) \n

      7. Integration with 3rd party services like Mailchimp or Mixpanel ( which we already use, data is sent directly from the app )\n\n\n

        Would appreciate any help with finding the right solution for this case given:\n\n

          \n
        1. Costs (we don't expect large media files storage)\n

        2. Flexibility to add new features related to the backend in the future\n

        3. Infra setup and maintenance \n\n\n

          What I've been thinking so far was one of: 1. BaaS AWS/Firebase 2. Custom backend with PostgreSQL 3. PaaS of a Realm type (mobile app already uses Realm for local persistence) \n\n

          Thanks!","private":false,"viewCount":229015,"publishedAt":"2020-07-17T14:01:06Z","upvotesCount":2,"decisionType":"getAdvice","fromTools":[],"toTools":[],"subjectTools":[{"type":"id","generated":false,"id":"Tool:101231773461393493","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773853533403","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773902893044","typename":"Tool"}],"services":[{"type":"id","generated":false,"id":"Tool:101231773853533403","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773461393493","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773431684432","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773423818690","typename":"Tool"}],"topics":[],"__typename":"StackDecision"},"Tool:101231773853533403":{"id":"101231773853533403","name":"PostgreSQL","slug":"postgresql","title":"A powerful, open source object-relational database system","verified":false,"imageUrl":"https://img.stackshare.io/service/1028/ASOhU5xJ.png","canonicalUrl":"/postgresql","path":"/postgresql","votes":3549,"fans":95182,"stacks":97943,"followingTool":false,"followContext":null,"__typename":"Tool","thumbUrl":"https://img.stackshare.io/service/1028/thumb_ASOhU5xJ.png"},"Tool:101231773431684432":{"name":"Mixpanel","path":"/mixpanel","id":"101231773431684432","imageUrl":"https://img.stackshare.io/service/60/default_a3830bd6c50dcc059aaf3aaf287131b64e0957e2.png","thumbUrl":"https://img.stackshare.io/service/60/thumb_a3830bd6c50dcc059aaf3aaf287131b64e0957e2.png","stacks":7102,"fans":4637,"votes":438,"followingTool":false,"__typename":"Tool"},"Tool:101231773423818690":{"name":"Mailchimp","path":"/mailchimp","id":"101231773423818690","imageUrl":"https://img.stackshare.io/service/47/default_3a2efb58b55346c25d951f68f21e56f8af77c9b8.jpg","thumbUrl":"https://img.stackshare.io/service/47/thumb_3a2efb58b55346c25d951f68f21e56f8af77c9b8.jpg","stacks":22616,"fans":15741,"votes":1172,"followingTool":false,"__typename":"Tool"},"$Tool:101231773461393493.stackDecisions({\"first\":6}).edges.5":{"node":{"type":"id","generated":false,"id":"StackDecision:104529557357459047","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"$Tool:101231773461393493.allToolIntegrations({\"first\":9})":{"count":59,"pageInfo":{"type":"id","generated":true,"id":"$Tool:101231773461393493.allToolIntegrations({\"first\":9}).pageInfo","typename":"PageInfo"},"edges":[{"type":"id","generated":true,"id":"$Tool:101231773461393493.allToolIntegrations({\"first\":9}).edges.0","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773461393493.allToolIntegrations({\"first\":9}).edges.1","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773461393493.allToolIntegrations({\"first\":9}).edges.2","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773461393493.allToolIntegrations({\"first\":9}).edges.3","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773461393493.allToolIntegrations({\"first\":9}).edges.4","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773461393493.allToolIntegrations({\"first\":9}).edges.5","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773461393493.allToolIntegrations({\"first\":9}).edges.6","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773461393493.allToolIntegrations({\"first\":9}).edges.7","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773461393493.allToolIntegrations({\"first\":9}).edges.8","typename":"ToolEdge"}],"__typename":"ToolConnection"},"$Tool:101231773461393493.allToolIntegrations({\"first\":9}).pageInfo":{"hasNextPage":true,"endCursor":"OQ","__typename":"PageInfo"},"Tool:101231773849098825":{"imageUrl":"https://img.stackshare.io/service/1020/OYIaJ1KK.png","thumbUrl":"https://img.stackshare.io/service/1020/thumb_OYIaJ1KK.png","thumbRetinaUrl":"https://img.stackshare.io/service/1020/thumb_retina_OYIaJ1KK.png","name":"React","id":"101231773849098825","slug":"react","path":"/react","__typename":"Tool"},"$Tool:101231773461393493.allToolIntegrations({\"first\":9}).edges.0":{"node":{"type":"id","generated":false,"id":"Tool:101231773849098825","typename":"Tool"},"__typename":"ToolEdge"},"Tool:101231773848354670":{"imageUrl":"https://img.stackshare.io/service/1019/square.png","thumbUrl":"https://img.stackshare.io/service/1019/thumb_square.png","thumbRetinaUrl":"https://img.stackshare.io/service/1019/thumb_retina_square.png","name":"AngularJS","id":"101231773848354670","slug":"angularjs","path":"/angularjs","__typename":"Tool"},"$Tool:101231773461393493.allToolIntegrations({\"first\":9}).edges.1":{"node":{"type":"id","generated":false,"id":"Tool:101231773848354670","typename":"Tool"},"__typename":"ToolEdge"},"Tool:101231777036008618":{"imageUrl":"https://img.stackshare.io/service/7180/flutter-mark-square-100.png","thumbUrl":"https://img.stackshare.io/service/7180/thumb_flutter-mark-square-100.png","thumbRetinaUrl":"https://img.stackshare.io/service/7180/thumb_retina_flutter-mark-square-100.png","name":"Flutter","id":"101231777036008618","slug":"flutter","path":"/flutter","__typename":"Tool"},"$Tool:101231773461393493.allToolIntegrations({\"first\":9}).edges.2":{"node":{"type":"id","generated":false,"id":"Tool:101231777036008618","typename":"Tool"},"__typename":"ToolEdge"},"Tool:101231773847537497":{"imageUrl":"https://img.stackshare.io/service/1017/Screen_Shot_2012-04-28_at_8.52.15_PM.png","thumbUrl":"https://img.stackshare.io/service/1017/thumb_Screen_Shot_2012-04-28_at_8.52.15_PM.png","thumbRetinaUrl":"https://img.stackshare.io/service/1017/thumb_retina_Screen_Shot_2012-04-28_at_8.52.15_PM.png","name":"Backbone.js","id":"101231773847537497","slug":"backbone","path":"/backbone","__typename":"Tool"},"$Tool:101231773461393493.allToolIntegrations({\"first\":9}).edges.3":{"node":{"type":"id","generated":false,"id":"Tool:101231773847537497","typename":"Tool"},"__typename":"ToolEdge"},"Tool:101231775174055327":{"imageUrl":"https://img.stackshare.io/service/3745/cb8U-gL6_400x400.jpg","thumbUrl":"https://img.stackshare.io/service/3745/thumb_cb8U-gL6_400x400.jpg","thumbRetinaUrl":"https://img.stackshare.io/service/3745/thumb_retina_cb8U-gL6_400x400.jpg","name":"Angular","id":"101231775174055327","slug":"angular","path":"/angular","__typename":"Tool"},"$Tool:101231773461393493.allToolIntegrations({\"first\":9}).edges.4":{"node":{"type":"id","generated":false,"id":"Tool:101231775174055327","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231773461393493.allToolIntegrations({\"first\":9}).edges.5":{"node":{"type":"id","generated":false,"id":"Tool:101231776137461847","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231773461393493.allToolIntegrations({\"first\":9}).edges.6":{"node":{"type":"id","generated":false,"id":"Tool:101231773678588190","typename":"Tool"},"__typename":"ToolEdge"},"Tool:101231773847891619":{"imageUrl":"https://img.stackshare.io/service/1018/3s1seyc0csl75btyw1vl.png","thumbUrl":"https://img.stackshare.io/service/1018/thumb_3s1seyc0csl75btyw1vl.png","thumbRetinaUrl":"https://img.stackshare.io/service/1018/thumb_retina_3s1seyc0csl75btyw1vl.png","name":"Ember.js","id":"101231773847891619","slug":"emberjs","path":"/emberjs","__typename":"Tool"},"$Tool:101231773461393493.allToolIntegrations({\"first\":9}).edges.7":{"node":{"type":"id","generated":false,"id":"Tool:101231773847891619","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231773461393493.allToolIntegrations({\"first\":9}).edges.8":{"node":{"type":"id","generated":false,"id":"Tool:101231777274352317","typename":"Tool"},"__typename":"ToolEdge"}}

          40.9K
          35.1K
          + 1
          2K

          What is Firebase?

          Firebase is a cloud service designed to power real-time, collaborative applications. Simply add the Firebase library to your application to gain access to a shared data structure; any changes you make to that data are automatically synchronized with the Firebase cloud and with other clients within milliseconds.
          Firebase is a tool in the Realtime Backend / API category of a tech stack.

          Who uses Firebase?

          Companies
          3147 companies reportedly use Firebase in their tech stacks, including LaunchDarkly, Instacart, and Twitch.

          Developers
          36449 developers on StackShare have stated that they use Firebase.

          Firebase Integrations

          React, AngularJS, Flutter, Backbone.js, and Angular are some of the popular tools that integrate with Firebase. Here's a list of all 59 tools that integrate with Firebase.
          Pros of Firebase
          371
          Realtime backend made easy
          270
          Fast and responsive
          242
          Easy setup
          215
          Real-time
          191
          JSON
          134
          Free
          128
          Backed by google
          83
          Angular adaptor
          68
          Reliable
          36
          Great customer support
          32
          Great documentation
          25
          Real-time synchronization
          21
          Mobile friendly
          19
          Rapid prototyping
          14
          Great security
          12
          Automatic scaling
          11
          Freakingly awesome
          8
          Super fast development
          8
          Angularfire is an amazing addition!
          8
          Chat
          6
          Firebase hosting
          6
          Built in user auth/oauth
          6
          Awesome next-gen backend
          6
          Ios adaptor
          4
          Speed of light
          4
          Very easy to use
          3
          Great
          3
          It's made development super fast
          3
          Brilliant for startups
          2
          Free hosting
          2
          Cloud functions
          2
          JS Offline and Sync suport
          2
          Low battery consumption
          2
          .net
          2
          The concurrent updates create a great experience
          2
          Push notification
          2
          I can quickly create static web apps with no backend
          2
          Great all-round functionality
          2
          Free authentication solution
          1
          Easy Reactjs integration
          1
          Google's support
          1
          Free SSL
          1
          CDN & cache out of the box
          1
          Easy to use
          1
          Large
          1
          Faster workflow
          1
          Serverless
          1
          Good Free Limits
          1
          Simple and easy
          Decisions about Firebase

          Here are some stack decisions, common use cases and reviews by companies and developers who chose Firebase in their tech stack.

          Eugene Cheah

          For inboxkitten.com, an opensource disposable email service;

          We migrated our serverless workload from Cloud Functions for Firebase to CloudFlare workers, taking advantage of the lower cost and faster-performing edge computing of Cloudflare network. Made possible due to our extremely low CPU and RAM overhead of our serverless functions.

          If I were to summarize the limitation of Cloudflare (as oppose to firebase/gcp functions), it would be ...

          1. <5ms CPU time limit
          2. Incompatible with express.js
          3. one script limitation per domain

          Limitations our workload is able to conform with (YMMV)

          For hosting of static files, we migrated from Firebase to CommonsHost

          More details on the trade-off in between both serverless providers is in the article

          See more
          Jesus Dario Rivera Rubio
          Telecomm Engineering at Netbeast · | 15 upvotes · 457.9K views
          Shared insights
          at

          This time I want to share something different. For those that have read my stack decisions, it's normal to expect some advice on infrastructure or React Native. Lately my mind has been focusing more on product as a experience than what's it made of (anatomy). As a tech leader, I have to worry about things like: are we taking enough time for reviews? Are we improving over time? Are we faster now? Is our code of higher quality?

          For all these questions you can add many great recommendations on your pipeline. We use Trello for bug-tracking and project management. We use https://danger.systems/js/ to add checks for linting, type-enforcing and other quality dimensions in our PRs and a great feature from Vercel that let's you previsualize deployments directly in a PR. However it's not easy to measure this improvements over time. For customer matters we have Amplitude or Firebase analytics, but for our internal process? That's a little bit more complicated.

          I collaborated recently with some folks in a small startup as an early adopter to create a metrics dashboard for engineers. I tried to add the tool to stackshare.io but still it doesn't appear as one of the options, please take a look on it over product hunt and let us know https://www.producthunt.com/posts/scope-6

          See more
          Needs advice
          on
          FirebaseFirebaseGraphQLGraphQL
          and
          Node.jsNode.js

          Hi, we are looking to create a sports app that collects and displays player stats. It will include team chats with push notifications for upcoming games etc. We are thinking of using the standard MERN stack route with a GraphQL API or a real-time Firebase database. Any advice would be greatly appreciated.

          See more
          Lukas Varkalis
          Needs advice
          on
          FirebaseFirebaseJavaScriptJavaScript
          and
          Node.jsNode.js

          Hi all,

          I need advice for object-oriented data analysis. I have exported a collection of users from Firebase to JSON, and I want to analyze it, for example, how many users are females, males, etc. Are there any tools or packages that could help me quickly analyze this data?

          See more
          Needs advice
          on
          Cloud FirestoreCloud FirestoreLaravelLaravel
          and
          MySQLMySQL

          I am setting up a content management system (CMS) in Laravel using #GoogleCloudPlatform. This #CMS will have quite a few polymorphic many-to-many relationships (at least 10) and for that reason I am considering whether I should use Firebase or other #NoSQL databases with Laravel.

          I know that there is a laravel-firebase package by Kreait which should allow me to use the firebase as database. My question is therefore:

          1. Are there any drawbacks to using Firebase with Laravel, which I should be aware of?
          2. Can I possibly use a hybrid model where some data is stored in the SQL database (e.g. user data) while other is stored in Firebase (e.g. the content).
          3. Or should I just stick to MySQL and create the several polymorphic many-to-many relationships?
          4. Should I do both and see what works better?

          Any advice is appreciated.

          See more
          Needs advice
          on
          FirebaseFirebasePostgreSQLPostgreSQL
          and
          RealmRealm

          Hi,

          I am in the process of building a mobile application and releasing it to the AppStore. Currently, we're in a TestFlight Beta with ~ 1500 users with a front-end only native iOS app. Before releasing it to production, we would like to add the following functionalities:

          1. User email authentication

          2. Being able to store and synchronise individual user's data ( generated while interacting with the app each day -> "user session" ) between various devices

          3. Having user session data ( anonymized ) available for an admin via a visual interface for querying, generating insights

          4. Simple crud interface for remote configs

          5. a/b testing

          6. GDPR requirements ( e.g. workflows for removing or exporting user data, ideally a way to keep the anonymized data too )

          7. Integration with 3rd party services like Mailchimp or Mixpanel ( which we already use, data is sent directly from the app )

          Would appreciate any help with finding the right solution for this case given:

          1. Costs (we don't expect large media files storage)

          2. Flexibility to add new features related to the backend in the future

          3. Infra setup and maintenance

          What I've been thinking so far was one of: 1. BaaS AWS/Firebase 2. Custom backend with PostgreSQL 3. PaaS of a Realm type (mobile app already uses Realm for local persistence)

          Thanks!

          See more

          Blog Posts

          GitNode.jsFirebase+5
          7
          2397

          Firebase's Features

          • Add the Firebase library to your app and get access to a shared data structure. Any changes made to that data are automatically synchronized with the Firebase cloud and with other clients within milliseconds.
          • Firebase apps can be written entirely with client-side code, update in real-time out-of-the-box, interoperate well with existing services, scale automatically, and provide strong data security.
          • Data Accessibility- Data is stored as JSON in Firebase. Every piece of data has its own URL which can be used in Firebase's client libraries and as a REST endpoint. These URLs can also be entered into a browser to view the data and watch it update in real-time.
          • Real-time Synchronization- Firebase takes a new approach to the way data is moved around an app. Rather than using a traditional request & response model, it works by synchronizing data between devices. Whenever your data changes, all clients are immediately notified within milliseconds. The synchronized data is also persisted, allowing new clients to be immediately updated.
          • First-class Data Security- Traditional applications intermix security code with application code, whereas Firebase treats security as a first-class feature. You define your security policies in one place using a flexible rules language, and Firebase ensures that they are consistently enforced across all parts of your application. Having all your security logic in one place allows for easy auditing and helps you avoid security mistakes. The safety and security of your data is our top priority.
          • Automatic Scaling- The Firebase API is built from the ground up for performance and scale. Whenever your data changes, Firebase calculates the minimum set of updates required to keep all your clients in sync. In addition, all Firebase API functions are designed to scale linearly with the size of the data being synchronized. More importantly, Firebase handles all of the scaling and operations for you. Your app will scale from its first user to its first million without any code changes.
          • Servers are Optional- Firebase can provide all of the data storage, control, and transmission needs of most apps. In many cases, Firebase can completely replace your server and server-side code. This means you no longer need to build complicated backend software and can instead focus on your application logic and your customers.

          Firebase Alternatives & Comparisons

          What are some alternatives to Firebase?
          Parse
          With Parse, you can add a scalable and powerful backend in minutes and launch a full-featured app in record time without ever worrying about server management. We offer push notifications, social integration, data storage, and the ability to add rich custom logic to your app’s backend with Cloud Code.
          MongoDB
          MongoDB stores data in JSON-like documents that can vary in structure, offering a dynamic, flexible schema. MongoDB was also designed for high availability and scalability, with built-in replication and auto-sharding.
          Heroku
          Heroku is a cloud application platform – a new way of building and deploying web apps. Heroku lets app developers spend 100% of their time on their application code, not managing servers, deployment, ongoing operations, or scaling.
          Auth0
          A set of unified APIs and tools that instantly enables Single Sign On and user management to all your applications.
          Realm
          The Realm Mobile Platform is a next-generation data layer for applications. Realm is reactive, concurrent, and lightweight, allowing you to work with live, native objects.
          See all alternatives

          Firebase's Followers
          35051 developers follow Firebase to keep up with related blogs and decisions.