
Hasura – A Batteries-included App Development Platform - mataug
http://hasura.io/
======
sridca
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](https://twitter.com/34_Cross/status/589052000966283265)

------
supster
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!

~~~
arkhamist
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.

~~~
supster
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.

~~~
tango12
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.

~~~
supster
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!

------
aikah
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?

~~~
arkhamist
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.

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

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

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

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

~~~
graffitici
And what would be that lesson?

~~~
jonsterling
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.

------
arkhamist
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.

~~~
dang
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.

