Show HN: EasyDB – A One-Click Ephemeral Database
easydb.io
easydb.io
db.Put('myKey', {some: 'data'}, (value, err) => {})
It annoys me that it reverses the standard (err, value) callback convention that everyone else uses.An advantage of the standard is that you might have 0, or 2 or more value arguments to the callback. So you can return (err) or (err, value) or (err, value, optionalExtraValue) and it's fairly consistent.
Can definitely fix that one. Will bump to 2.0.0 when I get home.
Thanks for all the feedback y'all!
1. Your Python library (easydbio) doesn't have the correct requirements listed. It depends on 'requests' being installed, add this to the setup.py install_requires call.
2. Make the DB class accept arguments instead of a dictionary. Just do `DB(database, token)`
3. The API is just a really simple CRUD to a single endpoint, why not include curl/httpie samples in the homepage?
4. The repository link for the Python SDK 404's (or is private). People often look at the repositories for dependencies they choose to install, not having it available is not a good signal.
3&4. Going home to open-source the JS and Python clients. cURL is a good idea, will add that too.
Out of curiosity, can you elaborate on the the technologies you used for this (lang, frameworks, hosting services)? I've been trying to learn design patterns for larger software like this, so your insight would be great.
We used NextJS for the UI, and Node + LevelDB on the backend.
That SQLite plus SQLAlchemy makes hackathon code so easy to port to another RDBMS after finishing the initial PoC.
Also makes it super easy to run unittests; just load data into sqlite with the memory connector and go!
"We used NextJS for the UI, and Node + LevelDB on the backend."
Just to add: Both the frontend and backend use TypeScript.
Each DB is a full new instance (with a mutex for read/write and open/close). Your data isn't shared between any other DB.
It offers read-your-writes consistency since there's no sharding/duplication ATM.
Hopefully that covers it. Otherwise happy to clarify.
One note is that the python repl.it fails on an import error upon just hitting 'run', but it does work locally as expected.
Edit: Was able to get it working in repl.it by updating pyproject.toml like so:
[tool.poetry.dependencies]
python = "^3.7"
easydbio = "*"Thanks for flagging it!
Super awesome project and it could be great for our users as well. I just posted to our community https://repl.it/talk/announcements/EasyDBio-one-click-databa...
I also wonder what a plain ole RESTful API would look like. Why does everything need an SDK/library?
Ex:
import requests //wish this was built in
token = '07a3e79a-c34c-4603-9a87-3fa47678d37c'
db = '51e71cb3-a40d-46bc-af3a-7bb77fde04a9'
key = 'myKey'
r = requests.get(f'https://easydb.io/{db}/{key}', auth=(token, ''))I'm also writing up a cURL section to throw on the main page. If you want to implement a client, have at err!
I'll even put a bounty of $5 (Paid in Stellar) for each client implemented.
Mine was more of a general rant on why every API seems to think it needs its own client. Simply passing JSON back and forth. What could be simpler? What do the clients do?
I looked through the pages... Tried a few times to find out what happens if I decide to use your tool after the 24H. I looked for a pricing page and failed. Makes sense if this is just your POC/demo.
So yeah, the ambiguity of all this makes it highly unattractive to even evaluate. It doesn't offer any value that a terraform RDS script or even docker-compose script that renders a template to give you the copypasta database init blocks.
The target demographic is for demo/small projects ATM since it is our POC.
Terraform/docker compose is definitely the way to go for any project with substantial mass. I just got really tired of writing all that when I just wanted a JSON store.
Thanks for the feedback! It's much appreciated :D.
This choice was largely made to not hammer the boxes from the CDN.
Happy to open-source the clients and ingest them into the landing page if people want to write their own for their favorite lang.
I've also created a Golang repository (http. https://github.com/EasyDB-io/Golang-Client) just for you. If you're really gungho, feel free to implement the 4 http requests using Go. In fact, If you do, I'll send you $5 via Stellar.
Otherwise I'll have to do it whenever I have a free 20m, but no promises on timeline.
I just want some damn state for my lambdas without spinning up Firebase...again.
So true, we have 2 firebase servers (dev & prod) and it took ages to setup them up even with scripts. Some of it; like backing up and restoring users isn't even possible to script!
Fast creation of database instances is a huge benefit in testing