Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Hasura – A Batteries-included App Development Platform (hasura.io)
84 points by mataug on May 9, 2015 | hide | past | favorite | 24 comments


These guys seem to be into the cool stuff. I'm jealous.

> Friday afternoon update: Programming in @elmlang and loving it! Will be building an modular admin app for @HasuraHQ. Hopefully in #elmlang

https://twitter.com/34_Cross/status/589052000966283265


This is very cool! I'm curious how would you compare the example given "Database (hasuradb) + Search (elasticsearch-hasura) + A Templating microservice (express + underscore)" to something like "MongoDB + Search(?) + (express + underscore) + Deploy to Heroku"?

Anyways keep up the good work!


One of the core hasura devs here. 'hasura-db' is a wrapper over postgres. The idea is to provide a very neat json api to talk to postgres with a permissions model. However, you still have the raw access to postgres. So, you can always fire up a django/rails/etc app and connect to your postgres instance and implement any custom functionality that can't be done using hasura-db's json api.

Coming to your question: Since the underlying db which actually stores your data is postgres, you get all the power of a relational database. With hasura-db you get a 'monogodb' like document api. So, hasura-db + postgres tries to capture the best of both worlds.

Since your data is (designed to be) completely normalized in postgres, 'hasura-search' integrates with elastic search to create denormalised documents for efficient full text search in a declarative way. So, hasura-search esentially listens to any changes to your data in postgres and builds denormalised documents that are inserted/updated/deleted into elasticsearch. So, your elasticsearch data stays in sync with your postgres data in real time without any effort from your side ! Deployment will be at least as easy as on Heroku.


I see, so seems like your core innovation is this new kind of db along with amazing search integration. Then why become a full platform (seems harder to gain traction)? Why not become a DB/Search company and create a software package that customers use (kinda like MongoDB) rather than having to deploy their code onto your platform (like Heroku)? Just curious, I'm sure you may have had good technical / business reasons.


Hi! Core Hasura dev here. We're trying to make hasura a place to deploy microservice style applications where hasura handles all the operational things for you (sort of like heroku) and then also wrap up a lot of great existing tech as ready-to-eat microservices that just need declarative configuration. Like wrapping over Postgres and elasticsearch. Next up on our list is file handling and cloud storage integration. Then caching.

So the idea is that a lot of things are figured out, in hopefully not idiotic ways. Built on open stuff. We're going to try to make our communication a lot more clear on that and then have a sensible demo to try it out and see the benefits of getting something super customisable setup without writing too much code.


That actually sounds brilliant and I think there's definitely a need for something like this. As a mobile developer I often use Parse as a starting point b/c it allows fast prototyping for clients, but invariably I get frustrated by limitations and then roll my own backend.

I see on your site that you guys are looking to develop iOS & Android SDKs, feel free to let me know if you would like a hand with that :) (My email is in my profile).

Good luck!


> The idea is to provide a very neat json api to talk to postgres with a permissions model.

Just today I was looking for something like this! Any chance I can use only this json API service (using Heroku Postgres) without having to use the rest of Hasura?


We have considered this. We really liked what heroku did with their postgres service, especially the 'followers' feature. Considering hasura's core principle is not to reinvent things, we really want this integration to happen. However there are few technical challenges before this becomes a realistic option.

1. hasura-db requires few custom extensions (written in c) to be installed into postgres which is not possible in heroku's postgres.

2. hasura-db also makes some assumptions about authentication which is handled by the hasura platform.


> MongoDB + Haskell.

Something I hate with passion and something I love with passion. This makes me cringe…


The platform is not only for deploying Haskell apps - it can host any web server written in any language including JS. I think the platform is simply written in Haskell.


hasura-db is built on top of postgres. It provides monogodb like document api.


Can you tell us more about the "cloud code" feature and how it works exactly? compared to Parse for instance? do I need to write hooks and deploy a an app on my own server and hooks get called over the network when an api endpoint get called or something?


Your 'cloud code' is just another microservice. You write it in whatever language you wish, package it with its dependencies as a docker image which will then be deployed onto hasura's platform and linked with the rest of your app's infrastructure.

Essentially, you don't have to deploy anything on your own server. Whatever functionality hasura's 'batteries' can't provide (yet), you write it as another microservice. At the end of the day, your app is composed of several microservices (containers running in the cloud), few hasura provided and few custom written.


Random side note: I think I should point out that Spanish-speakers will associate the name of the platform with "basura" (garbage).


The Greek Cypriot language has a similar word "Hasura" which means waste, possibly also from Spanish influences.


Oh bugger. But we came up with Hasura from: Haskell + Asura. Asura is the Hindi/Sanskrit word for Demon.


Cool that they used FP to develop this, but haven't we already learned the lesson about the BaaS stuff?


I would just like to point out that Hasura is a PaaS. More like heroku, but with some ready to use microservices to get started quickly. So with hasura-db (which is a wrapper over Postgres) you get a BaaS like thing that helps you prototype and use quickly for permission safe REST + document operations, but always let you switch to custom code-driven-database operations that we usally write for applications.


And what would be that lesson?


That it's a huge mistake to use a BaaS for anything but a demo. I think it's good to abstract out certain details that don't pertain to your application logic, and that's precisely what something like Heroku does. In my experience, a BaaS adds barely anything to that, and subtracts way more in terms of flexibility and lock-in.

The amount of administration that using a BaaS saves (as opposed to something like Heroku) is minimal; the time that you'd spend doing straightforward admin stuff is just moved over to working around limitations of the BaaS, and is often multiplied in the process. The amount of actual code that using a BaaS saves is between 100-400 lines for a web application. Awful deal.


The title suggests that Hasura is a platform for developing Haskell apps. It is not true. Hasura is language/framework agnostic. The core parts of Hasura are built using Haskell.

Edit: If the op can remove the word 'Haskell' from the title, it would be great.


We fixed the title, though unfortunately didn't see this yesterday. In the future, you or anyone is welcome to shoot us an email at hn@ycombinator.com if something needs fixing. We can't read all the threads, but we do see all the emails.


Same here.. What does this has to do with Haskell?


I was wondering why the word "haskell" didn't appear anywhere on the site (just the logo). Cheers.




Consider applying for YC's Summer 2026 batch! Applications are open till May 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: