Hi, \n\n
I am a student and a junior developer who is a graduating candidate in comp sci major. I am about to start building my final year project which is a real-time messaging application for software developers to Enhance Knowledge Exchange and Problem Solving. It is mainly a chat application with more enhanced features. I am planning to use React and React Native for the frontend and cross-platform mobile apps, Node.js and ExpressJS for the backend, GraphQL for fetching and manipulating data from the backend and PostgreSQL for the database, and finally Socket.IO for the real-time chatting and communication. I would highly appreciate it if anyone here with experience in building similar apps to tell me if I made a good choice or suggest better tech stacks. \n\n
Thanks in advance.","private":false,"viewCount":118711,"publishedAt":"2024-02-23T11:00:02Z","upvotesCount":27,"decisionType":"getAdvice","fromTools":[],"toTools":[],"subjectTools":[{"type":"id","generated":false,"id":"Tool:101231773920953695","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773849098825","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774544144572","typename":"Tool"}],"services":[{"type":"id","generated":false,"id":"Tool:101231773920191005","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773853533403","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231775212866992","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773920953695","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773845103618","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774544144572","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773849098825","typename":"Tool"}],"topics":[],"__typename":"StackDecision"},"Tool:101231773849098825":{"id":"101231773849098825","name":"React","slug":"react","title":"A JavaScript library for building user interfaces","verified":false,"imageUrl":"https://img.stackshare.io/service/1020/OYIaJ1KK.png","canonicalUrl":"/react","path":"/react","votes":4083,"fans":164543,"stacks":174961,"followingTool":false,"followContext":null,"__typename":"Tool","thumbUrl":"https://img.stackshare.io/service/1020/thumb_OYIaJ1KK.png","thumbRetinaUrl":"https://img.stackshare.io/service/1020/thumb_retina_OYIaJ1KK.png"},"Tool:101231774544144572":{"id":"101231774544144572","name":"React Native","slug":"react-native","title":"A framework for building native apps with React","verified":false,"imageUrl":"https://img.stackshare.io/service/2699/KoK6gHzp.jpg","canonicalUrl":"/react-native","path":"/react-native","votes":1156,"fans":34635,"stacks":33896,"followingTool":false,"followContext":null,"__typename":"Tool","thumbUrl":"https://img.stackshare.io/service/2699/thumb_KoK6gHzp.jpg"},"Tool:101231773853533403":{"name":"PostgreSQL","path":"/postgresql","id":"101231773853533403","imageUrl":"https://img.stackshare.io/service/1028/ASOhU5xJ.png","thumbUrl":"https://img.stackshare.io/service/1028/thumb_ASOhU5xJ.png","stacks":99128,"fans":96235,"votes":3550,"followingTool":false,"__typename":"Tool","slug":"postgresql","title":"A powerful, open source object-relational database system","verified":false,"canonicalUrl":"/postgresql","following":false,"followContext":null},"Tool:101231775212866992":{"name":"GraphQL","path":"/graphql","id":"101231775212866992","imageUrl":"https://img.stackshare.io/service/3820/12972006.png","thumbUrl":"https://img.stackshare.io/service/3820/thumb_12972006.png","stacks":34038,"fans":33671,"votes":309,"followingTool":false,"__typename":"Tool"},"Tool:101231773845103618":{"name":"Node.js","path":"/nodejs","id":"101231773845103618","imageUrl":"https://img.stackshare.io/service/1011/n1JRsFeB_400x400.png","thumbUrl":"https://img.stackshare.io/service/1011/thumb_n1JRsFeB_400x400.png","stacks":190355,"fans":184545,"votes":8539,"followingTool":false,"__typename":"Tool"},"$Tool:101231773920191005.stackDecisions({\"first\":6}).edges.0":{"node":{"type":"id","generated":false,"id":"StackDecision:111980445837497667","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"User:108854548630360554":{"id":"108854548630360554","username":"alphacruze","title":"Team Lead","companyName":"Alert 21","imageUrl":"https://img.stackshare.io/user/1332200/default_971cf193ea25d7fde8a4a91995339cdcca97c762.png","thumbUrl":"https://img.stackshare.io/user/1332200/thumb_971cf193ea25d7fde8a4a91995339cdcca97c762.png","displayName":"Moghammad Sabre Khan","__typename":"User"},"StackDecision:108854618689751061":{"user":{"type":"id","generated":false,"id":"User:108854548630360554","typename":"User"},"company":null,"link":null,"publicId":"108854618689751061","id":"108854618689751061","htmlContent":"
We (my team) are building an App where we want to have Bi-directional texting, Single Directional Picture, and audio transfer.\n\n
We are building all this using Flutter.\n\nThere will essentially be 3 apps, 2 Mobile-based (Android and iOS) and 1 Microsoft Based.\nWe've built up most of the code already, and made a few major mistakes but fixed it(namely had no proper state management). \n\n
How things will work: \n\n
Person A has a Mobile app 1, Person A presses a button that sends a \"communication request\" into a Pool of requests.\nPerson B on Desktop App chooses a \"communication request\" from the pool, and engages in Bi-directional texting with Person A. \nPerson B also opens communication with Person C who is on Mobile app 2, and they engage in Bi-directional texting. Person C will be notified of communication requests through Push Notifications. \n\n
So far we've been using Socket.IO, however, I'm starting to think that's not the best.\n\nA problem we've encountered so far is that Person A(Mobile App 1 User), is the person who sends a \"communication request\" into the \"Communication Pool\". The Mobile App 1 User, can \"cancel\" the communication at any point in time. When they do that, I would like for a notification to be sent to Person B, the Desktop User, For them to pick up another communication request.\n\n
I am not sure how this should be done however, should it be done in the Back-end, then how does the Front-end get notified of the change? \n\n
Any advice on which to choose?","private":false,"viewCount":170532,"publishedAt":"2022-08-20T10:01:05Z","upvotesCount":4,"decisionType":"getAdvice","fromTools":[],"toTools":[],"subjectTools":[{"type":"id","generated":false,"id":"Tool:101231773461393493","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773920191005","typename":"Tool"}],"services":[{"type":"id","generated":false,"id":"Tool:101231773920191005","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231777036008618","typename":"Tool"}],"topics":[],"__typename":"StackDecision"},"Tool:101231777036008618":{"name":"Flutter","path":"/flutter","id":"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","stacks":17150,"fans":18410,"votes":1192,"followingTool":false,"__typename":"Tool","thumbRetinaUrl":"https://img.stackshare.io/service/7180/thumb_retina_flutter-mark-square-100.png","slug":"flutter"},"$Tool:101231773920191005.stackDecisions({\"first\":6}).edges.1":{"node":{"type":"id","generated":false,"id":"StackDecision:108854618689751061","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"User:107253358664589586":{"id":"107253358664589586","username":"kabir4382025","title":"","companyName":"","imageUrl":"https://img.stackshare.io/user/1070822/default_de306641b0ad17d43a8ba3a02d3577ddbe499aa3.png","thumbUrl":"https://img.stackshare.io/user/1070822/thumb_de306641b0ad17d43a8ba3a02d3577ddbe499aa3.png","displayName":"Kabir Chawla","__typename":"User"},"StackDecision:107359551599939859":{"user":{"type":"id","generated":false,"id":"User:107253358664589586","typename":"User"},"company":null,"link":null,"publicId":"107359551599939859","id":"107359551599939859","htmlContent":"
My web app will use redisJSON and/or MongoDB. I need my app to have real-time functions. I don't want to run my Next.js app with a dev server on the node. I want to use vercel's hosting with static side generation only. Do I use pusher or Socket.IO? Or maybe some tool I don't know about.","private":false,"viewCount":159915,"publishedAt":"2021-11-29T09:05:51Z","upvotesCount":3,"decisionType":"getAdvice","fromTools":[],"toTools":[],"subjectTools":[{"type":"id","generated":false,"id":"Tool:101231776411419473","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773460958511","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773920191005","typename":"Tool"}],"services":[{"type":"id","generated":false,"id":"Tool:101231773920191005","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231776411419473","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773854388643","typename":"Tool"}],"topics":[],"__typename":"StackDecision"},"Tool:101231776411419473":{"id":"101231776411419473","name":"Next.js","slug":"next-js","title":"A small framework for server-rendered universal JavaScript apps ","verified":false,"imageUrl":"https://img.stackshare.io/service/5936/nextjs.png","canonicalUrl":"/next-js","path":"/next-js","votes":326,"fans":6650,"stacks":6928,"followingTool":false,"followContext":null,"__typename":"Tool","thumbUrl":"https://img.stackshare.io/service/5936/thumb_nextjs.png"},"Tool:101231773854388643":{"name":"MongoDB","path":"/mongodb","id":"101231773854388643","imageUrl":"https://img.stackshare.io/service/1030/leaf-360x360.png","thumbUrl":"https://img.stackshare.io/service/1030/thumb_leaf-360x360.png","stacks":94218,"fans":94400,"votes":4135,"followingTool":false,"__typename":"Tool","slug":"mongodb","title":"The database for giant ideas","verified":true,"canonicalUrl":"/mongodb","followContext":null},"$Tool:101231773920191005.stackDecisions({\"first\":6}).edges.2":{"node":{"type":"id","generated":false,"id":"StackDecision:107359551599939859","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"User:106455012876179762":{"id":"106455012876179762","username":"bdiazc90","title":"CEO","companyName":"Guvery","imageUrl":"https://img.stackshare.io/user/982298/default_86936dbb0f8cd9d2d45e70e665c177c6744f9ae7.png","thumbUrl":"https://img.stackshare.io/user/982298/thumb_86936dbb0f8cd9d2d45e70e665c177c6744f9ae7.png","displayName":"Bruno Diaz","__typename":"User"},"StackDecision:106466515560734842":{"user":{"type":"id","generated":false,"id":"User:106455012876179762","typename":"User"},"company":null,"link":null,"publicId":"106466515560734842","id":"106466515560734842","htmlContent":"Hello guys, my team is looking for some stack pre-build to implement a real-time chat.\nMeanwhile, we had built a little infrastructure with Node.js, PHP/JavaScript, and Socket.IO, and it works fine, but we want to evolve. Thanks!","private":false,"viewCount":164636,"publishedAt":"2021-06-24T15:55:02Z","upvotesCount":3,"decisionType":"getAdvice","fromTools":[],"toTools":[],"subjectTools":[{"type":"id","generated":false,"id":"Tool:101231773669807419","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773854388643","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773920191005","typename":"Tool"}],"services":[{"type":"id","generated":false,"id":"Tool:101231773920191005","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773939333405","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773836410122","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773845103618","typename":"Tool"}],"topics":[],"__typename":"StackDecision"},"Tool:101231773669807419":{"id":"101231773669807419","name":"Docker","slug":"docker","title":"Enterprise Container Platform for High-Velocity Innovation.","verified":true,"imageUrl":"https://img.stackshare.io/service/586/n4u37v9t_400x400.png","canonicalUrl":"/docker","path":"/docker","votes":3857,"fans":162427,"stacks":176149,"followingTool":false,"followContext":null,"__typename":"Tool"},"Tool:101231773939333405":{"name":"JavaScript","path":"/javascript","id":"101231773939333405","imageUrl":"https://img.stackshare.io/service/1209/javascript.jpeg","thumbUrl":"https://img.stackshare.io/service/1209/thumb_javascript.jpeg","stacks":364753,"fans":316287,"votes":8070,"followingTool":false,"__typename":"Tool"},"Tool:101231773836410122":{"name":"PHP","path":"/php","id":"101231773836410122","imageUrl":"https://img.stackshare.io/service/991/hwUcGZ41_400x400.jpg","thumbUrl":"https://img.stackshare.io/service/991/thumb_hwUcGZ41_400x400.jpg","stacks":145161,"fans":96037,"votes":4622,"followingTool":false,"__typename":"Tool"},"$Tool:101231773920191005.stackDecisions({\"first\":6}).edges.3":{"node":{"type":"id","generated":false,"id":"StackDecision:106466515560734842","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"User:105944776227538096":{"id":"105944776227538096","username":"monalitechdoodles","title":"","companyName":"","imageUrl":"https://img.stackshare.io/user/922442/default_cf28885054a7cdd464a05ddce1ac0106abae713b.jpg","thumbUrl":"https://img.stackshare.io/user/922442/thumb_cf28885054a7cdd464a05ddce1ac0106abae713b.jpg","displayName":"Mohit Patel","__typename":"User"},"StackDecision:105944909468245316":{"user":{"type":"id","generated":false,"id":"User:105944776227538096","typename":"User"},"company":null,"link":{"type":"id","generated":true,"id":"$StackDecision:105944909468245316.link","typename":"Link"},"publicId":"105944909468245316","id":"105944909468245316","htmlContent":"I am trying to replace Socket.IO with PubNub. Provide the way to do it.","private":false,"viewCount":287257,"publishedAt":"2021-03-24T13:03:45Z","upvotesCount":1,"decisionType":"getAdvice","fromTools":[],"toTools":[],"subjectTools":[{"type":"id","generated":false,"id":"Tool:101231773600197923","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773920191005","typename":"Tool"}],"services":[{"type":"id","generated":false,"id":"Tool:101231773600197923","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773920191005","typename":"Tool"}],"topics":[],"__typename":"StackDecision"},"$StackDecision:105944909468245316.link":{"url":"https://stackoverflow.com/questions/66746928/pubnub-integration-in-react-js-frontend-and-nodejs-backend?noredirect=1#comment117992172_66746928","title":"node.js - pubnub integration in react js frontend and nodejs backend - Stack Overflow","__typename":"Link"},"$Tool:101231773920191005.stackDecisions({\"first\":6}).edges.4":{"node":{"type":"id","generated":false,"id":"StackDecision:105944909468245316","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"User:104016930033103313":{"id":"104016930033103313","username":"shemeshno1328","title":"","companyName":"","imageUrl":"https://img.stackshare.io/user/523590/default_2a2c7d03115ed50a9fd5d3d4e4a42b76250aa5d0.jpg","thumbUrl":"https://img.stackshare.io/user/523590/thumb_2a2c7d03115ed50a9fd5d3d4e4a42b76250aa5d0.jpg","displayName":"Noam Shemesh","__typename":"User"},"StackDecision:104523431071745682":{"user":{"type":"id","generated":false,"id":"User:104016930033103313","typename":"User"},"company":null,"link":null,"publicId":"104523431071745682","id":"104523431071745682","htmlContent":"We are starting to work on a web-based platform aiming to connect artists (clients) and professional freelancers (service providers). In-app, timeline-based, real-time communication between users (& storing it), file transfers, and push notifications are essential core features. We are considering using Node.js, ExpressJS, React, MongoDB stack with Socket.IO & Apollo, or maybe using Real-Time Database and functionalities of Firebase.","private":false,"viewCount":1140094,"publishedAt":"2020-07-16T12:03:06Z","upvotesCount":9,"decisionType":"getAdvice","fromTools":[],"toTools":[],"subjectTools":[{"type":"id","generated":false,"id":"Tool:101231776161934711","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773461393493","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773920191005","typename":"Tool"}],"services":[{"type":"id","generated":false,"id":"Tool:101231773461393493","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231776161934711","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773920191005","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773854388643","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773849098825","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773920953695","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773845103618","typename":"Tool"}],"topics":[],"__typename":"StackDecision"},"Tool:101231776161934711":{"id":"101231776161934711","name":"Apollo","slug":"apollo","title":"GraphQL server for Express, Connect, Hapi, Koa and more","verified":false,"imageUrl":"https://img.stackshare.io/service/5508/CyUH653y.png","canonicalUrl":"/apollo","path":"/apollo","votes":25,"fans":2456,"stacks":2430,"followingTool":false,"followContext":null,"__typename":"Tool","thumbUrl":"https://img.stackshare.io/service/5508/thumb_CyUH653y.png"},"$Tool:101231773920191005.stackDecisions({\"first\":6}).edges.5":{"node":{"type":"id","generated":false,"id":"StackDecision:104523431071745682","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"$Tool:101231773920191005.featuredPosts({\"first\":8})":{"count":1,"pageInfo":{"type":"id","generated":true,"id":"$Tool:101231773920191005.featuredPosts({\"first\":8}).pageInfo","typename":"PageInfo"},"edges":[{"type":"id","generated":true,"id":"$Tool:101231773920191005.featuredPosts({\"first\":8}).edges.0","typename":"FeaturedPostEdge"}],"__typename":"FeaturedPostConnection"},"$Tool:101231773920191005.featuredPosts({\"first\":8}).pageInfo":{"hasNextPage":false,"endCursor":"MQ","__typename":"PageInfo"},"FeaturedPost:106461160606930684":{"id":"106461160606930684","views":11410,"title":"Open Sourcing Querybook, Pinterestâs Collaborative Big Data Hub","imageUrl":"https://img.stackshare.io/company/260/c077fc04bb219001b7a1ab10f90ebcdb00c143a9.png","publishedAt":"2021-06-23T17:13:13Z","canonicalUrl":"/pinterest/open-sourcing-querybook-pinterests-collaborative-big-data-hub","previewImageUrl":"https://img.stackshare.io/stack/871235/f97ba616df502620c8accfca8397ed9c9a59bd7a.png","company":{"type":"id","generated":true,"id":"$FeaturedPost:106461160606930684.company","typename":"Company"},"tools":[{"type":"id","generated":false,"id":"Tool:101231773837179153","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773851859414","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773853533403","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773854768982","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773409399220","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773774313645","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773920191005","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773941167904","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231775419688564","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774778599369","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773712725009","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774372347323","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774501522052","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231775802024485","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774217017036","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774119036971","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:106456126802764865","typename":"Tool"}],"favoriteStacksCount":8,"__typename":"FeaturedPost"},"$FeaturedPost:106461160606930684.company":{"name":"Pinterest","__typename":"Company"},"Tool:101231773837179153":{"id":"101231773837179153","name":"Python","slug":"python","title":"A clear and powerful object-oriented programming language, comparable to Perl, Ruby, Scheme, or Java.","verified":false,"imageUrl":"https://img.stackshare.io/service/993/pUBY5pVj.png","canonicalUrl":"/python","path":"/python","votes":6894,"fans":228740,"stacks":246951,"following":false,"followContext":null,"__typename":"Tool"},"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":123691,"stacks":126491,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773854768982":{"id":"101231773854768982","name":"Redis","slug":"redis","title":"Open source (BSD licensed), in-memory data structure store","verified":false,"imageUrl":"https://img.stackshare.io/service/1031/default_cbce472cd134adc6688572f999e9122b9657d4ba.png","canonicalUrl":"/redis","path":"/redis","votes":3948,"fans":55310,"stacks":59945,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773409399220":{"id":"101231773409399220","name":"Amazon S3","slug":"amazon-s3","title":"Store and retrieve any amount of data, at any time, from anywhere on the web","verified":false,"imageUrl":"https://img.stackshare.io/service/25/amazon-s3.png","canonicalUrl":"/amazon-s3","path":"/amazon-s3","votes":2041,"fans":48165,"stacks":53573,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773774313645":{"id":"101231773774313645","name":"Elasticsearch","slug":"elasticsearch","title":"Open Source, Distributed, RESTful Search Engine","verified":true,"imageUrl":"https://img.stackshare.io/service/841/Image_2019-05-20_at_4.58.04_PM.png","canonicalUrl":"/elasticsearch","path":"/elasticsearch","votes":1649,"fans":32834,"stacks":34739,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773941167904":{"id":"101231773941167904","name":"R Language","slug":"r-language","title":"A language and environment for statistical computing and graphics","verified":false,"imageUrl":"https://img.stackshare.io/service/1213/r-logo.png","canonicalUrl":"/r-language","path":"/r-language","votes":416,"fans":2444,"stacks":3205,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231775419688564":{"id":"101231775419688564","name":"Jupyter","slug":"jupyter","title":"Multi-language interactive computing environments.","verified":false,"imageUrl":"https://img.stackshare.io/service/4190/fGBUdNf__400x400.jpg","canonicalUrl":"/jupyter","path":"/jupyter","votes":57,"fans":2105,"stacks":2650,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231774778599369":{"id":"101231774778599369","name":"Airflow","slug":"airflow","title":"A platform to programmaticaly author, schedule and monitor data pipelines, by Airbnb","verified":true,"imageUrl":"https://img.stackshare.io/service/3130/airflow.png","canonicalUrl":"/airflow","path":"/airflow","votes":128,"fans":3102,"stacks":1717,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773712725009":{"id":"101231773712725009","name":"Google Cloud Storage","slug":"google-cloud-storage","title":"Durable and highly available object storage service","verified":false,"imageUrl":"https://img.stackshare.io/service/694/Cloud_Storage.png","canonicalUrl":"/google-cloud-storage","path":"/google-cloud-storage","votes":75,"fans":1566,"stacks":1715,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231774372347323":{"id":"101231774372347323","name":"Jinja","slug":"jinja2","title":"Full featured template engine for Python","verified":false,"imageUrl":"https://img.stackshare.io/service/2303/New_Project__20_.png","canonicalUrl":"/jinja2","path":"/jinja2","votes":7,"fans":670,"stacks":1458,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231774501522052":{"id":"101231774501522052","name":"Presto","slug":"presto","title":"Distributed SQL Query Engine for Big Data","verified":true,"imageUrl":"https://img.stackshare.io/service/2606/default_9c42299fc673a12eed0ad20cb7f5c1fd4ef5c80f.png","canonicalUrl":"/presto","path":"/presto","votes":66,"fans":1130,"stacks":394,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231775802024485":{"id":"101231775802024485","name":"Superset","slug":"superset","title":"Data exploration and visualization platform, by Airbnb","verified":false,"imageUrl":"https://img.stackshare.io/service/4908/superset2.png","canonicalUrl":"/superset","path":"/superset","votes":45,"fans":1097,"stacks":412,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231774217017036":{"id":"101231774217017036","name":"Apache Hive","slug":"apache-hive","title":"Data Warehouse Software for Reading, Writing, and Managing Large Datasets","verified":false,"imageUrl":"https://img.stackshare.io/service/1911/27eb4217dfd5cb2d579cb56bbcc7b290_400x400.jpeg","canonicalUrl":"/apache-hive","path":"/apache-hive","votes":0,"fans":624,"stacks":480,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231774119036971":{"id":"101231774119036971","name":"Evernote","slug":"evernote","title":"Feel organized without the effort","verified":false,"imageUrl":"https://img.stackshare.io/service/1664/Msdwofz8_400x400.jpg","canonicalUrl":"/evernote","path":"/evernote","votes":21,"fans":302,"stacks":238,"following":false,"followContext":null,"__typename":"Tool"},"Tool:106456126802764865":{"id":"106456126802764865","name":"Querybook","slug":"querybook","title":"A Big Data IDE that allows you to discover, create, and share data analyses, queries, and tables (By Pinterest)","verified":false,"imageUrl":"https://img.stackshare.io/service/25752/default_0337bc010f3cb137893fe12aa28b06b75e4121a2.png","canonicalUrl":"/querybook","path":"/querybook","votes":0,"fans":21,"stacks":4,"following":false,"followContext":null,"__typename":"Tool"},"$Tool:101231773920191005.featuredPosts({\"first\":8}).edges.0":{"node":{"type":"id","generated":false,"id":"FeaturedPost:106461160606930684","typename":"FeaturedPost"},"__typename":"FeaturedPostEdge"},"$Tool:101231773920191005.allToolIntegrations({\"first\":9})":{"count":13,"pageInfo":{"type":"id","generated":true,"id":"$Tool:101231773920191005.allToolIntegrations({\"first\":9}).pageInfo","typename":"PageInfo"},"edges":[{"type":"id","generated":true,"id":"$Tool:101231773920191005.allToolIntegrations({\"first\":9}).edges.0","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773920191005.allToolIntegrations({\"first\":9}).edges.1","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773920191005.allToolIntegrations({\"first\":9}).edges.2","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773920191005.allToolIntegrations({\"first\":9}).edges.3","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773920191005.allToolIntegrations({\"first\":9}).edges.4","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773920191005.allToolIntegrations({\"first\":9}).edges.5","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773920191005.allToolIntegrations({\"first\":9}).edges.6","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773920191005.allToolIntegrations({\"first\":9}).edges.7","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773920191005.allToolIntegrations({\"first\":9}).edges.8","typename":"ToolEdge"}],"__typename":"ToolConnection"},"$Tool:101231773920191005.allToolIntegrations({\"first\":9}).pageInfo":{"hasNextPage":true,"endCursor":"OQ","__typename":"PageInfo"},"$Tool:101231773920191005.allToolIntegrations({\"first\":9}).edges.0":{"node":{"type":"id","generated":false,"id":"Tool:101231773849098825","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231773920191005.allToolIntegrations({\"first\":9}).edges.1":{"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:101231773920191005.allToolIntegrations({\"first\":9}).edges.2":{"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:101231773920191005.allToolIntegrations({\"first\":9}).edges.3":{"node":{"type":"id","generated":false,"id":"Tool:101231775174055327","typename":"Tool"},"__typename":"ToolEdge"},"Tool:101231776137461847":{"imageUrl":"https://img.stackshare.io/service/5472/default_189db484e0770a6101c6a70f0ef0172bc0f8de37.png","thumbUrl":"https://img.stackshare.io/service/5472/thumb_189db484e0770a6101c6a70f0ef0172bc0f8de37.png","thumbRetinaUrl":"https://img.stackshare.io/service/5472/thumb_retina_189db484e0770a6101c6a70f0ef0172bc0f8de37.png","name":"Gatsby","id":"101231776137461847","slug":"gatsbyjs","path":"/gatsbyjs","__typename":"Tool"},"$Tool:101231773920191005.allToolIntegrations({\"first\":9}).edges.4":{"node":{"type":"id","generated":false,"id":"Tool:101231776137461847","typename":"Tool"},"__typename":"ToolEdge"},"Tool:101231773678588190":{"imageUrl":"https://img.stackshare.io/service/601/5Nm3jtVh.jpeg","thumbUrl":"https://img.stackshare.io/service/601/thumb_5Nm3jtVh.jpeg","thumbRetinaUrl":"https://img.stackshare.io/service/601/thumb_retina_5Nm3jtVh.jpeg","name":"Auth0","id":"101231773678588190","slug":"auth0","path":"/auth0","__typename":"Tool"},"$Tool:101231773920191005.allToolIntegrations({\"first\":9}).edges.5":{"node":{"type":"id","generated":false,"id":"Tool:101231773678588190","typename":"Tool"},"__typename":"ToolEdge"},"Tool:101231777274352317":{"imageUrl":"https://img.stackshare.io/service/7696/Untitled-5.png","thumbUrl":"https://img.stackshare.io/service/7696/thumb_Untitled-5.png","thumbRetinaUrl":"https://img.stackshare.io/service/7696/thumb_retina_Untitled-5.png","name":"Cloud Firestore","id":"101231777274352317","slug":"google-cloud-firestore","path":"/google-cloud-firestore","__typename":"Tool"},"$Tool:101231773920191005.allToolIntegrations({\"first\":9}).edges.6":{"node":{"type":"id","generated":false,"id":"Tool:101231777274352317","typename":"Tool"},"__typename":"ToolEdge"},"Tool:101231773921760520":{"imageUrl":"https://img.stackshare.io/service/1165/3bf33a82d4b1624f6b94da4d9fe1eaeb.png","thumbUrl":"https://img.stackshare.io/service/1165/thumb_3bf33a82d4b1624f6b94da4d9fe1eaeb.png","thumbRetinaUrl":"https://img.stackshare.io/service/1165/thumb_retina_3bf33a82d4b1624f6b94da4d9fe1eaeb.png","name":"Sails.js","id":"101231773921760520","slug":"sailsjs","path":"/sailsjs","__typename":"Tool"},"$Tool:101231773920191005.allToolIntegrations({\"first\":9}).edges.7":{"node":{"type":"id","generated":false,"id":"Tool:101231773921760520","typename":"Tool"},"__typename":"ToolEdge"},"Tool:101231774438458945":{"imageUrl":"https://img.stackshare.io/service/2463/LHpIuZLH_400x400.png","thumbUrl":"https://img.stackshare.io/service/2463/thumb_LHpIuZLH_400x400.png","thumbRetinaUrl":"https://img.stackshare.io/service/2463/thumb_retina_LHpIuZLH_400x400.png","name":"Outbrain","id":"101231774438458945","slug":"outbrain","path":"/outbrain","__typename":"Tool"},"$Tool:101231773920191005.allToolIntegrations({\"first\":9}).edges.8":{"node":{"type":"id","generated":false,"id":"Tool:101231774438458945","typename":"Tool"},"__typename":"ToolEdge"}}