So I've been toying around a bit with adding a sample skeleton that includes a server component as well.
The requirements -
- Must play nicely with Aurelia (this shouldn't be an issue, more of a DUH!)
- Must share metadata easily
- Must run on all platforms
- Must handle multiple DB types
I've been building out an electron app (which I really like) and it works very nicely. You can put any backend you want behind it. The only thing that's held me up a bit is that since it is a native app you really need to learn a lot about Electron and how their architecture is laid out in addition to a node.js server. You can't really assume someone can grab it and run with it.
So then I started from a different perspective - I want an ORM that makes the server feel 'barely there'. I love writing client-side code. I enjoy using Rails because it is so quick to get an API spun up and simply focus on building out the user experience. The only problem with Rails is that it can still quickly turn in to a nightmare for a Windows developer and thus could ruin the initial experience for a developer trying out Aurelia for the first time (this is actually true of any solution, more pieces = more complexity)
Back to breeze :)
Admittedly, I've used and loved breeze.js for a long time now. Now that I've stumbled across the node server that uses sequelize I think I've fallen in love. Right now they are verifying additional databases, but since it uses sequelize this means we can connect to PostgreSQL, MySQL, MariaDB, SQLite and MSSQL and share our metadata. The breeze adapter allows writing linq-style queries that sequelize interprets for you so the server components become super simple. I'm working with the breeze team currently to verify that the database creation and migration tools are working for other databases other than just mysql (I'm currently working on the postgres one) but I'd highly encourage anyone with advanced sequelize or node.js experience to pitch in as well if possible and help to come up with all the tools we need to get all of the pieces working together.
If this works properly this would allow everyone to have a server that is really just a bunch of boilerplate code defined in our model metadata.
Where is the code?
This blog post isn't finished. It's a living blog post. I'm asking for your help / feedback in the comments below to let me know if this is something you'd like to see implemented. If we can gather some support here we can start to make this a reality and vote accompanying feature requests up.