[HN Gopher] Show HN: Appwrite - Open-Source and Self Hosted Fire... ___________________________________________________________________ Show HN: Appwrite - Open-Source and Self Hosted Firebase Alternative Author : christyjacob4 Score : 168 points Date : 2022-03-22 17:37 UTC (5 hours ago) (HTM) web link (github.com) (TXT) w3m dump (github.com) | 20220322-beans wrote: | From my quick research when I was selecting the next backend I | was going to use for a project in the past, and today reading | some responses on this page: | | - Appwrite is written in PHP. Just because something is open | source, doesn't mean it is extensible, scalable or otherwise | written well. I haven't seen many popular projects written in PHP | recently. The only time I used PHP was in university, where the | PHP application was the target machine in a CTF. | | - AppWrite doesn't yet have their Cloud version, so they aren't | ready to be a "backend as a service" - it's a product that isn't | ready "as a service". That's why I didn't use it, and I can see | similar sentiment here on HN. I'd be willing to try it out when | it's ready. | | - It's not built on Postgres. Their comment about Supabase using | postgres did not include any real substance: "I'm trying to be as | objective as I can, but building the entire ecosystem around a | single product like Postgres ( even though tried and tested ) | comes with its own downsides...". The downsides of what AppWrite | might be that they're rolling their own database... in PHP? They | may not be database experts, and there's lots to think about and | fix when building a database, and Postgres has been tested for a | long time. | | - Not much progress is happening on the GraphQL side: | https://github.com/appwrite/appwrite/pull/974/files, whereas | Supabase has it: https://supabase.com/blog/2021/12/03/pg-graphql. | | Overall, it seems like the project doesn't move as fast as its | competitor (primarily Supabase) for features I care about, and | perhaps this is caused by PHP? | | Anyway, I'd love to hear your thoughts about my comments, Eldad | and team. | fiznool wrote: | Not the OP but just wanted to weigh in on the PHP point. Just | because it isn't the coolest/hottest language around, doesn't | make PHP any less suitable for a project like this. Laravel in | particular has been a game changer for modern PHP-based | backends and sites, and the language itself has been steadily | evolving and improving. It may not get the column inches of the | likes of Phoenix or Remix, but it is stable, battle hardened | and fully suitable for the majority of use cases in 2022. | u2077 wrote: | I actually bookmarked the repo a few months ago but never got | around to using it. Seems like a great product. | | As someone who is building a small project for personal use (and | has been frustrated with Firebase in the past) how does this | compare? Will it be easy to switch an existing project over? | Also, what is the plan for pricing on the hosted option? | EgeAytin wrote: | Great work, I just cant see authorization feature. How does | Appwrite handles this key concept right now ? | christyjacob4 wrote: | API keys are used by Server SDKs ( or Admin SDKs in the | Firebase world ) to authenticate and perform more crucial | server side tasks using the API https://appwrite.io/docs/keys | cercatrova wrote: | Any comparison with Supabase, which is also a backend-as-a- | service? [0] | | [0] https://supabase.com/ | spankalee wrote: | Supabase uses Postgres instead of a Firestore like database, so | it's not really a clone of Firebase. | cercatrova wrote: | Postgres supports jsonb which I've used with Supabase to act | as a Firebase analog. I just pushed all data into a JSON blob | rather than setting up tables, it worked well, pretty much | the same as how I used Firebase. | christyjacob4 wrote: | I'm trying to be as objective as I can, but building the | entire ecosystem around a single product like Postgres ( even | though tried and tested ) comes with its own downsides... | stnguyen90 wrote: | Couple of points here: https://medium.com/geekculture/appwrite- | frequently-asked-que... | eldad_fux wrote: | Both products are great, at Appwrite we created the majority of | the product from scratch in aim to have tailored made dev- | experience which was a big reason for starting the project from | the first place. | kiru_io wrote: | Seems pretty cool! One question, how do you finance the | development? | eldad_fux wrote: | Appwrite started as an open-source project 2 years ago. Last | year we started a company and got a $10m seed from top VCs like | Bessemer and Flybridge (ex-Firebase investors) to help us grow | the community and speed product development. | tr3ntg wrote: | Congratulations. That's incredible news. | christyjacob4 wrote: | Our amazing open source community keeps us going | vincentge wrote: | Thank you! | pan69 wrote: | Just out of curiosity. Why would a VC invest $10m in an Open | Source project? I'd like to understand more about this model. | You must have some path to a commercial offering I assume? | sauwan wrote: | I'd assume the Redhat model, but who knows. | eldad_fux wrote: | Yes. Luckily a lot of amazing open-source companies like | RedHat, Gitlab, Sentry, MongoDB and Elastic have already | demonstrated multiple ways to build successful open- | source business models, this is one area we don't need to | reinvent the wheel at. | cercatrova wrote: | They have a cloud offering. Personally I'd rather pay for | someone else to manage devops than myself. | spankalee wrote: | This is the first "Firebase clone" I've seen that attempts to | implement the Firestore database model. Neat! | eldad_fux wrote: | Thank you! Actually the Firebase has done an amazing job on | making the DB scalable, and we got to appreciate their work | even more when working on our implementation. | yeldarb wrote: | Is there a compatibility layer or migration guide for people | looking to switch? | christyjacob4 wrote: | Hi, at this point the process is not so straight forward and | you'll need to use the Admin SDK from Firebase and the Server | SDK from Appwrite to manually copy your data over. We do plan | on making this easier in the future. | robertlagrant wrote: | I'm pretty wary of this sort of thing, but I've got to say, what | you've produced looks awesome, and I will be thinking of a | product to try it on! | | I know it sounds silly to say this, but the polish and content of | your website really helps. Very, very impressed. | eldad_fux wrote: | Thank you | christyjacob4 wrote: | This is some really heart warming feedback! Thank you from the | entire Appwrite team | christyjacob4 wrote: | Over the past few months we've been trying hard to make Appwrite | as simple to setup and use as possible. Your candid feedback has | been crucial in shaping the project and it would be great if you | can share some features you'd like to see in the project going | forward. | | What is Appwrite ? In simplest terms, Appwrite is an open source | Backend As A Service (aka BaaS). Appwrite is an all in one | solution with all the essentials you need like Authentication, | User Management, Realtime Databases, Webhooks, Storage, Cloud | Functions, SDKs for your favourite language and it's light | weight. Appwrite even runs on a Raspberry Pi. Most importantly, | Appwrite is self-hosted which means you own your data and prevent | any vendor lock-ins. | | Talking about Appwrite's features - Realtime Databases and events | ( Recent benchmarks have showed a single server handling 1M+ | concurrent connections ) | | - SDKs for iOS, Android, Flutter, Web ( React, Angular, Vue, | Svelte etc.) Python, PHP, Node, Deno, Kotlin and more | | - Bring your own Database - Use your choice of SQL or MySQL | databases ( MariaDB, MySQL, MongoDB and more ) | | - Database permissions for finer tuned access control | | - Storage API with built in encryption, compression and antivirus | | - Bring your own Storage - Use your choice of the local | filesystem, DigitalOcean Spaces, S3 or an any other storage | provider of your choice | | - Cloud functions with support for over 20 runtimes | | - Webhooks to connect with 3rd party APIs and services | | - User Management and Authentication | | - Multiple authentication methods - email, 25+ OAuth providers, | JWT, API Keys | | - Completely stateless and extensible architecture allowing easy | integration with your existing backend | | - A Dashboard, CLI and VSCode extensions to manage your server | and many more... | qbasic_forever wrote: | Wow, that's an impressive set of features! I remember kicking | the tires on the service a year ago and liked it but didn't | have a big need for it. It looks like a lot of great stuff has | been added in the time since then. | eldad_fux wrote: | Thank you so much! We've been working very hard the last | year, and looking back - yeh we did add a lot of stuff :) | lfkdev wrote: | Godot support would be awesome | eldad_fux wrote: | Something like this? https://github.com/GodotNuts/appwrite- | sdk | | :) | vincentmarle wrote: | I was about to throw in the towel after evaluating Firebase / | Supabase last week for a new project I'm working on and revert | back to good o'l Laravel, but Appwrite looks _very_ interesting | and could potentially solve my problem so I 'll definitely | check it out! | | Just one question: is there also Postgres support? | eldad_fux wrote: | Not yet, but it's coming soon. Appwrite is not coupled to any | database or other under the hood technology. | kiwicopple wrote: | I'm curious why Supabase didn't suit your needs, especially | since you're looking for Postgres support? | | (Disclosure: supabase ceo) | kpennell wrote: | For me, if I want to move quickly, there's just so many | great example React + Firebase projects out there. It's so | easy to get started, even if I would prefer to work with | postgres over nosql. I could have just missed it in the | docs or elsewhere, but I couldn't seem to find a really | easy to follow todo or chat app or something like that. I | created a database I think and then just had little idea | how I'd tie it all together with my front-end. So I went | back to firebase for an MVP. | kiwicopple wrote: | Thanks for the feedback. We have these - | | Examples: https://supabase.com/docs/guides/examples | | React: https://supabase.com/docs/guides/with-react | | Is this the type of thing you're looking for? Perhaps | they could be more prominent | vincentmarle wrote: | Basically the lack of cloud functions (need a place | somewhere to run my backend code ) and the Hook Events | being in alpha. I know you're working on it but for my | project these features are critical. | | When Supabase Functions are live and Hooks are stable then | it will definitely work for the app I'm working on. | ctxc wrote: | Hi, when are Supabase Functions expected to be released? | | I'm quickly reaching a point in my project where direct DB | calls don't cut it and I don't want to muck about with PG | functions especially since I'm familiar with other | programming languages. :( | | Some suggestions: Using Supabase took me 5x the amount of | time it should have taken me, honestly. 1. There needs to | be more official snippets, PG especially. Create view, | modify table, change constraints, and so on. If I'm your | target demographic, it pays to watch issues raised/FAQs and | integrate it in the UI. For example, I'm not very familiar | with SQL and PG features. I had to learn the hard way that | RLS does not apply to views. Basic for someone who knows | DBs? Maybe. But I'm someone who wants to ship my product | and my expertise is elsewhere. Would have loved to see this | info in the UI. | | 2. Some things are just so hard to find! I spent a lot of | time looking for something so simple. I think it was views? | And also something under user authentication, I don't | remember. Maybe you would benefit from user research - get | a dev who hasn't used Supabase before, watch them build | something with this and then address pain points. | kiwicopple wrote: | Thanks for the feedback. Extra snippets are a great idea, | especially with Row Level Security which is a bit harder | to google for. | | > when are Supabase Functions expected to be released? | | We're doing another Launch Week starting on Monday next | week. You will enjoy Thursday's launch | johnhenry wrote: | Supabase Functions launching Thursday, March 31st, 2022! | Magodo wrote: | Thank you so much for Appwrite! The community on Discord is | very helpful and the self hosting guide is great. Very unlike | my terrible experience with Supabase who seem to do their best | to cripple the self hosted option | tr3ntg wrote: | I was hoping someone here would compare the two. I might have | to give Appwrite a try after all. Supabase's self-hosted | option was wack when I tried it a few months ago. | vincentge wrote: | My honest two cents, which is biased, so take liberal | amounts of salt. | | I think Supabase is verbose. You get to dig around the | PostgreSQL instance, write SQL, etc. I know people that | live and die by SQL, so if that sounds like you, Supabase | is great. | | Appwrite is more about simplicity. Our SDKs are simple, our | UI is simple, our Documentation is simple, heck we even | have a 1 line deploy: docker run -it --rm \ --volume | /var/run/docker.sock:/var/run/docker.sock \ --volume | "$(pwd)"/appwrite:/usr/src/code/appwrite:rw \ | --entrypoint="install" \ appwrite/appwrite:latest | | Use a part of Appwrite, or all of it. Heck, go dig in our | code or checkout our open sourced Functions runtime. We | don't care, we just want you to do more while writing less | code. | | Both have their audience, both are great, see which one | suits your needs better :) | eldad_fux wrote: | Our self-hosted solution was designed to be easy to setup | in both development and production. I hope you'll enjoy our | single command installation. | | Also, self-hosting is at the core of what we do and once | our cloud solution is out, we don't plan to add weird | disabilities to it. | 20220322-beans wrote: | What are the issues with self hosting Supabase? | nicoburns wrote: | I put this on Supabase's launch post too, but would you | consider supporting a more traditional compute model? i.e. the | ability to run an always-on docker container that runs a web | server or similar (similar to dokku or heroku). I realise | functions are the new hotness, but as far as I can see for non | hobby projects they mainly have downsides any very little | upside. | vincentmarle wrote: | From their readme it looks like you can host it however you | want: | | > Appwrite backend server is designed to run in a container | environment. Running your server is as easy as running one | command from your terminal. You can either run Appwrite on | your localhost using docker-compose or on any other container | orchestration tool like Kubernetes, Docker Swarm, or Rancher. | nicoburns wrote: | Hmm... I think I'm not quite the target market. For me the | whole point of a tool like this is that I don't need to | worry about maintaining this kind of thing. All the guff | around auth and functions is just stuff I have to put up | with to get that hosted niceness. | vincentge wrote: | There's two ways to address this if you don't wanna | maintain/host. | | There will be a hosted Appwrite Cloud option => | https://appwrite.io/cloud | | There is a way to do 1 click deployment on Digital Ocean | Marketplace: | https://marketplace.digitalocean.com/apps/appwrite | | With these options, you can put off the whole mess with | devops, infra, and hosting to someone else :') | eldad_fux wrote: | Yes, this is something we would consider in the long run. | Functions are great, but not for every use case. | turtlebacon wrote: | Love seeing open source projects evolve like this. Great work | guys! | eldad_fux wrote: | Thank you so much! The community support has been such a major | part of our journey! | vinibrito wrote: | Sounds too good to be true. Are you saying that I, as a web | developer, will be able to not touch devops stuff? | | Does it work out of the box with everything included? | | Because I really like only writing business logic. | eldad_fux wrote: | Our aim is to try and reduce the friction during development as | much as possible, but still leave developers max flexibility to | build any products they like without limiting their creativity. | peppertree wrote: | What's the pricing model for cloud. | brandonroberts wrote: | We'll share the pricing for Appwrite Cloud shortly, which will | be transparent and simple. The open source version of Appwrite | will be free, forever. | fareesh wrote: | What would be great is an agnostic layer that's just the real- | time sync that you can plug your existing stack into. Sending | json up and down your websockets to sync things and handling | offline etc is tedious and slow. | eldad_fux wrote: | That is exactly our plan! We like to decouple the different | Appwrite components. This allows us to offer max flexibility | for developers and let everyone use the server the way they | like to. Using the REST API, Realtime or GraphQL with or | without offline support - your call. | peppertree wrote: | Maybe I'm looking in the right place but I couldn't find docs on | scaling. How does Appwrite scale up WS connection pool, workers, | cloud functions. | eldad_fux wrote: | All of the Appwrite containers were designed to be stateless | and easy to scale with replication, scaling the under the hood | database is as easy as connecting it to a managed cloud | solution. | leros wrote: | Do you have any plans to support relational database | functionality like joins? | christyjacob4 wrote: | Yes we do plan to add support got joins, transactions, atomic | operations and geo queries soon | bikamonki wrote: | Strictly speaking, if I spin up a droplet on DO and install | Appwrite on it, it won't be a BAAS anymore, correct? | | Sorry but "self-host your own BAAS" is an oxymoron. | | IMO, developers who chose Firebase do not want to manage servers. | eldad_fux wrote: | 100% right, we are working on a cloud edition that we hope to | release soon. That said, their are a lot of use cases for self- | hosting, and its also very cool to be able to deploy something | as massive as this on your own localhost with a single command. | bikamonki wrote: | Awesome, I look forward to try your managed service. | aerovistae wrote: | Before I even look into it, I'll tell you this: the headline was | enough to grab my attention on its own. I strongly feel this is a | badly underserved niche and I've had major issues with Firebase's | limitations. You definitely have a winning idea here in this | user's opinion. | christyjacob4 wrote: | That's great feedback and more validation to the problem we're | solving. Glad to hear that. Would love to hear if there are any | specific pain points with Firebase that you'd like to be | addressed. Being an open source project thats the biggest | advantage we have over Firebase. The community! | aerovistae wrote: | For me the most painful part was latency, and especially | cloud function latency. I wanted to create an entire API | through cloud functions and rapidly discovered that they have | major issues with "cold startup". A lot of people have had | this issue~ | https://stackoverflow.com/questions/42726870/firebase- | cloud-... | | I found a lame workaround by setting up a cronjob to ping the | API regularly, but there was still bad latency for cloud | functions that were interacting with the database. It was | 1-2s of latency, which was a total nonstarter for my realtime | collaboration code. I had to go write a socket.io server by | hand instead. | | Also, there are extremely limited tools for | observability/monitoring/logging of cloud functions, as well | as for plain API interactions with firestore. I could see | that trying to track down issues through that toolset was | going to be nightmarish. In my opinion, for any app that | scales beyond a small personal project, it is an absolute | must to have good tools for inspecting logs with error rate | graphs and stacktraces and so on. | christyjacob4 wrote: | Thanks a lot for taking the time to type this. Really | appreciate this. | | If I understood everything correctly, may I ask why you | were using a cloud function to build the a realtime | application rather than relying on their realtime database | directly ? | aerovistae wrote: | It was because I needed to run validation over the inputs | sent to the server, and then update other data which the | user themself did not have authorization to access. | christyjacob4 wrote: | Thanks a lot for clarifying . Makes sense :) | combyn8tor wrote: | You can validate the data with Firebase rules. The other | data can be updated with Firebase functions. They listen | for state changes on the relevant data and then update | the data that the user does not have access to. | aerovistae wrote: | I'm sure it's technically possible, but things were | starting to feel hackier and hackier and already the | latency was a no-go, so the value proposition was | becoming less convincing. I'm still using it for user | auth though, that seems to work well so far. | rectang wrote: | I'd consider myself fortunate if I never have to deal with | Firebase again. | | Firebase simply did not behave as documented. Whole features | shipped that were just wishful thinking. | | It reeked of high-level management applying pressure to ship- | now-no-matter-how-broken. | wfme wrote: | My experience is quite different to this. I'd be interested | to know which features behaved differently to their | documentation? | rectang wrote: | I most vividly recall unit testing, storage emulator, auth. | For example: | | https://github.com/firebase/firebase-js-sdk/issues/5086 | | > _Steps to reproduce:_ | | > _Step 1: Read the documentation for setting up cloud | storage unit tests | at:https://firebase.google.com/docs/rules/unit- | tests#storage_ | | > _Step 2: Attempt to write unit tests following the | examples in the documentation_ | | The reporter describes _five_ problems which will thwart | you when you try to write code according to the official | documentation. | | How did these docs ship? Did nobody ever try the sample | code and verify that the features worked as advertised? Did | nobody write any tests to validate that the features | actually worked? Are there no policies in place (e.g. "new | features require tests" or perhaps code review) to prevent | such mishaps? | vincentge wrote: | Firebase is great for Hackathons =D | fiznool wrote: | I was about to ask how you manage to support so many different | language bindings, then I noticed that you've built an 'SDK | generator' [1]. Very cool! I've not come across this concept | before - how does it work? | | [1] https://github.com/appwrite/sdk-generator | eldad_fux wrote: | We use twig templating syntax as an agnostic language that | allow contributors from different coding backgrounds to help us | build the SDK templates. Then we use our API spec file to auto- | generate the source code and push the relevant code to the SDK | repos and package manager, it works really well and help us | maintain a big amount of SDKs with little overhead after the | core templates are done. We actually plan to have a talk about, | it's really cool! ___________________________________________________________________ (page generated 2022-03-22 23:00 UTC)