👋 Hey Product Hunt, Heiki here, Co-Founder at Acapela.
The Problem
Fetching and updating data is the core of every modern web app. Managing the global state of an app while updating every individual component on data changes isn’t easy. Yet it’s a necessary part of building an interactive and bug-free app.
The industry has suggested lots of solutions on the last few decades: REST, GraphQL, Soap, gRPC etc. All of these are powerful, but come with the burden of both server side and client side implementations to serve and fetch data.
In response, many modern solutions have sprung up that simplify the task of implementing server-side code: Firebase, Mongo Realm Web SDK, Prisma for backend solutions, Hasura for creating a GraphQL server etc. We considered all of these solutions while building our product Acapela. But we couldn’t find a perfect fit for our needs. So we built our own…and we’re open sourcing it :)
The Solution
clientdb is an in-memory database, that takes care of syncing updates to the cloud, and every other connected client, out-of-the-box. It allows engineers to build real-time apps without having to think about writing server-side data code again.
Every data update happens optimistically on the client before sending it to the cloud. That means every interaction happens in 50ms, which feels instant for your users.
An automatically generated database client means fewer bugs, more features, faster shipping.
And one really cool aspect - it allows you to build web apps that work offline too. Our client-side database means your app works even when a user has limited, unstable or no internet connection at all.
______________
This is just the very first version of clientdb. Many more features will follow to make it the best solution for building high-scalable, secure and real-time web applications. Our mission is to make it the go-to tool for building the cutting edge products.
If you are excited about what we are building, try out the framework on your own project and star us on GitHub to stay up to date with future updates!
@heiki_riesenkampf congrats, looks interesting. Do I understand correctly that is pure in-memory db? So no Localstorage or Indexeddb used under the hood?
Hey @mattheslington 👋🏼
Clientdb is quite different from redis. Redis mostly works as a temporary cache on the server side, typically used to avoid unnecessary API calls or database queries. Clientdb is a persisted database (using IndexedDB), that lives on the client side and simplifies how you interact with your existing database. All the data that lives in your cloud DB is fetched and accessible to the client side.
Does that answer your question?
@heiki_riesenkampf I am a huge fan of the ORMs from simpler use cases and getting stuff off the ground. Say, if am using Django, Django ORM would be my go-to vs raw SQL. For more complex DB tasks, SQLAlchemy does the trick.
Report
"It allows engineers to build real-time apps without having to think about writing server-side data code again"
How is this possible? The risk of client-side code is that it runs on *not your computer* so it can be executed arbitrarily. How do authentication and authorization work here?
A quick comments on the screenshots of the post: the framework was actually published under "@clientdb/core"
When implementing, make sure to follow the docs here: https://docs.clientdb.dev/
Sorry for the confusion 🙇🏼♂️
@heiki_riesenkampf
NOTE: Query object can be way more advanced than shown in this example. Check out API reference to more informations, where is this API reference available? Do I need to go through the code?
clientdb
CloudDevs - Hire Developers
clientdb
Morgen
ReactStartupKit
clientdb
Presbot
clientdb
Presbot
AppLogger by PLG Works
clientdb
clientdb
clientdb
clientdb