Announcing Backlift: Deployment and Hosting for Backbone.js
backlift.com
backlift.com
There's several showstoppers for me. If you figure out how to fix them, you'll have my business:
1). Server side validation. If I can't prevent a CSRF attack, it can't be the basis of my app/website.
2). SEO. Figure out a way to serve deep links using the root index.html transparently in a way that is undetectable to the client side (search engines)
3). Build in require.js or leverage some other technology to make backbone app codebases manageable yet compressed and performant in the production environment.
If you can solve 2 and 3, you solve one of the biggest issues I have when writing backbone apps -- I'm often writing my code twice, often in two separate languages, which isn't DRY and feels like a waste of the efficiencies gained by backbone.
If you figure this out, Backbone isn't just for web apps anymore -- it's for any website.
(Hint: Don't trust clients)
Just a tiny point ... About the drawing of the triceratops, he has very mmmmm.... "developed" crotch area. Once you've seen it it's hard to not think about it every time. It's just a little detail but it's a little bit weird!
Good luck !
So now I'm ready to create a hyper-nifty Web 2.71 interface to WHOIS. So normally I'd create a simple web app that serves me my data. Where does backlift come in here, as I'm not doing CRUD all from within the app itself?
So now you just do save() and fetch() and you never worry about what happens in between.
1) Is there no index.html?
2) Can you develop locally?
3) How do you use the templates you showed?
4) Is the boilerplate you provide open sourced anywhere?
2) Not currently.
3) If you're starting a new app and you need a starting point you can do so by downloading a template. You can alternatively run "backlift init" with an existing project.
4) Not yet. We're thinking of creating a github project where devs can upload their own templates or tweak ours. Pulled templates will become available from the CLI. We don't have a specific timeline for this yet.
Shouldnt you be able to create your own index.html and then be fine as long as you dont hit Backbone.sync ?
Awesome site design as well!
Coincidentally, I'm also working on my own app using Tornado and Backbone and considering the switch to Mongo (currently using the base MySQLdb wrapper included with Tornado) - curious as to how you've found working with whatever Mongo solution you're using.
Edit: Initially forgot to include asyncmongo in that list.
Traceback (most recent call last):
File "/home/sendspree/webapps/backlift.com/lib/python2.6/site-packages/tornado/web.py", line 988, in _execute
getattr(self, self.request.method.lower())(* args, * * kwargs)
File "/home/sendspree/webapps/backlift.com/backlift/backlift/server.py", line 35, in post
raise tornado.web.HTTPError(403)
HTTPError: HTTP 403: Forbidden
Oh yeah, that was me. FUUUUUUUUUUU
What would be really cool is if instead of a python backend, this had a node backend that used the client side validation mechanism server side to allow server-side validation without needing to duplicate the code. This could theoretically be done transparently if all the classes were named by convention.
How do you handle a situation with relationships where you need to specify "give me all of the objects from collection X where parentId is YYYYY"?
Also how do you handle sort of arbitrary queries?
I was thinking about making a service like this because everyone wants to use Backbone.js.
"offer a peak" -> "offer a peek" in the bottom (dark) section.
so it should probably just be open on github.
just throw express or restify in front of mongodb with some minimal scaffolding and generators. if i get a minute i'll try to get something like that up
There are plenty of unanswered questions, but I can totally foresee this sort of thing as a viable development platform for some projects in the future.
It was a paradigm shift for me. You should try it.
Cheers.
Used to very good effect here.
I don't think you can provide this as a service though as I have my parse credentials in my js file.