# Best Ember Back End?

**URL:** https://discuss.emberjs.com/t/best-ember-back-end/7237
**Category:** Ember Data
**Created:** [February 5, 2015, 4:50pm UTC](https://discuss.emberjs.com/t/best-ember-back-end/7237 "2015-02-05T16:50:36Z")
**Posts on this page:** 18
**Page:** 1

<div class="post-metadata">

### Author: ![psotos](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.emberjs.com/psotos/32/9354_2.png) [@psotos](https://discuss.emberjs.com/u/psotos)
#### Post date: [February 5, 2015, 4:50pm UTC](https://discuss.emberjs.com/t/best-ember-back-end/7237/1 "2015-02-05T16:50:36Z")

</div>

So I currently have a Spring back end and I am basically giving up on trying to make it work with Ember Data. The problem is the JSON formatting of course. What is THE backend that everyone is using with Ember Data? I just want something that will work so I can get started with my development, and not spending a lot of time researching how to fix something. It appears to me that people are using Ruby. Does Ruby support the JSONApi format? If not, what IS everyone using?

Thanks in advance!

- Peter

---

<div class="post-metadata">

### Author: ![jyunderwood](https://avatars.discourse-cdn.com/v4/letter/j/f17d59/32.png) [@jyunderwood](https://discuss.emberjs.com/u/jyunderwood)
#### Post date: [February 5, 2015, 6:00pm UTC](https://discuss.emberjs.com/t/best-ember-back-end/7237/2 "2015-02-05T18:00:00Z")

</div>

I have tried Ember with Ruby on Rails (using [active model serializers](https://github.com/rails-api/active_model_serializers)) and Python/Django (using [django rest framework](http://www.django-rest-framework.org/)) and both played well with Ember Data.

However, if you already have a backend ready, why not try an alternative data store for your Ember app? One that looks very nice is [SoftLayer Ember Store](https://github.com/softlayer/sl-ember-store). The SoftLayer guys developed it for their legacy API, and it’s pretty flexible; however, it lacks relationship management.

If you go the Ruby on Rails route, I’d advise using the 0.8.x branch of Active Model Serializers in your Rails project and the [ActiveModelSerializer adapter](http://emberjs.com/api/data/classes/DS.ActiveModelSerializer.html) in your Ember project. Also avoid nested routes even though they can make sense and are easy in Rails, they won’t play well with Ember Data (for now).

---

<div class="post-metadata">

### Author: ![bahudso](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.emberjs.com/bahudso/32/15559_2.png) [@bahudso](https://discuss.emberjs.com/u/bahudso)
#### Post date: [February 5, 2015, 6:12pm UTC](https://discuss.emberjs.com/t/best-ember-back-end/7237/3 "2015-02-05T18:12:07Z")

</div>

I have been using Ruby on Rails for my project backends for a while now. There are tons of good resources to get you up and started.

I have a few examples on github that might help you out as well: [Ember-Rails-Project-Base](https://github.com/bahudso/ember-rails-project-base)

---

<div class="post-metadata">

### Author: ![psotos](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.emberjs.com/psotos/32/9354_2.png) [@psotos](https://discuss.emberjs.com/u/psotos)
#### Post date: [February 5, 2015, 6:12pm UTC](https://discuss.emberjs.com/t/best-ember-back-end/7237/4 "2015-02-05T18:12:54Z")

</div>

Wow this looks exciting! I didn’t realize that there were alternatives to Ember Data!

---

<div class="post-metadata">

### Author: ![doug316](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.emberjs.com/doug316/32/15507_2.png) [@doug316](https://discuss.emberjs.com/u/doug316)
#### Post date: [February 5, 2015, 7:49pm UTC](https://discuss.emberjs.com/t/best-ember-back-end/7237/5 "2015-02-05T19:49:10Z")

</div>

My backend is Rails. I began with ActiveModelSerializers but found that modifying it was difficult. I settled on [GitHub - ismasan/oat: Adapters-based API serializers with Hypermedia support for Ruby apps.](https://github.com/ismasan/oat) which supports JSON-API pretty well. I’ve had to make customizations for polymorphism, inheritance, and to prevent circular references on my [fork](https://github.com/aceofspades/oat).

---

<div class="post-metadata">

### Author: ![lfridael](https://avatars.discourse-cdn.com/v4/letter/l/7c8e57/32.png) [@lfridael](https://discuss.emberjs.com/u/lfridael)
#### Post date: [February 5, 2015, 7:53pm UTC](https://discuss.emberjs.com/t/best-ember-back-end/7237/6 "2015-02-05T19:53:16Z")

</div>

I’ve integrated a Spring backend with Ember Data recently for a client’s project and I can attest that it’s quite a chore to get running. You cannot just take an object graph and serialize it the way you do with a regular Spring MVC controller.

The major pain point using Ember Data with a Java/Spring backend is that every object must have an identity, even nested submodels. This is quite an unusual requirement if you’re working with, for example, JPA. To get around this you have to make customizations in the Jackson JSON mapping using annotations.

If you already have a Spring backend, evaluating simpler alternatives to Ember Data might be worth the effort:

[https://github.com/bustlelabs/ember-restless](https://github.com/bustlelabs/ember-restless)

[https://github.com/ebryn/ember-model](https://github.com/ebryn/ember-model)

---

<div class="post-metadata">

### Author: ![grantcupps](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.emberjs.com/grantcupps/32/10276_2.png) [@grantcupps](https://discuss.emberjs.com/u/grantcupps)
#### Post date: [February 5, 2015, 8:14pm UTC](https://discuss.emberjs.com/t/best-ember-back-end/7237/7 "2015-02-05T20:14:21Z")

</div>

I’ve had success with Firebase ([https://www.firebase.com/docs/web/libraries/ember/quickstart.html](https://www.firebase.com/docs/web/libraries/ember/quickstart.html)). It is incredibly easy to use as long as your requirements fit within their offerings.

---

<div class="post-metadata">

### Author: ![psotos](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.emberjs.com/psotos/32/9354_2.png) [@psotos](https://discuss.emberjs.com/u/psotos)
#### Post date: [February 5, 2015, 11:18pm UTC](https://discuss.emberjs.com/t/best-ember-back-end/7237/8 "2015-02-05T23:18:27Z")

</div>

I would love to see those customizations! Is that something you are willing to share? 😄

---

<div class="post-metadata">

### Author: ![Wayne\_Douglas](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.emberjs.com/wayne_douglas/32/9568_2.png) [@Wayne\_Douglas](https://discuss.emberjs.com/u/Wayne_Douglas)
#### Post date: [February 6, 2015, 9:44am UTC](https://discuss.emberjs.com/t/best-ember-back-end/7237/9 "2015-02-06T09:44:11Z")

</div>

We are using SailsJs with ember-blueprints - absolutely loving it! Was using a .NET backend but TBH I’ve gone right off .NET these days lol - the dev cycle is just too horrendously slow with very little gains - if any!

SANE ([https://github.com/artificialio/sane](https://github.com/artificialio/sane)) is good too, would definitely recommend giving that a go if you’re thinking of going the NodeJs route.

---

<div class="post-metadata">

### Author: ![lfridael](https://avatars.discourse-cdn.com/v4/letter/l/7c8e57/32.png) [@lfridael](https://discuss.emberjs.com/u/lfridael)
#### Post date: [February 6, 2015, 10:56am UTC](https://discuss.emberjs.com/t/best-ember-back-end/7237/10 "2015-02-06T10:56:57Z")

</div>

> [@psotos](#):
>
> I would love to see those customizations! Is that something you are willing to share?

Can’t share client code, but I’ve put together an example.

[https://github.com/lfridael/ember-data-spring-example](https://github.com/lfridael/ember-data-spring-example)

Java part: [https://github.com/lfridael/ember-data-spring-example/commit/8e10c70197f7e0776fd6575f156c1833874768e0](https://github.com/lfridael/ember-data-spring-example/commit/8e10c70197f7e0776fd6575f156c1833874768e0)

The code shows the Jackson annotations needed to map the output to Ember Data-compliant format.

Use of `@JsonIdentifyInfo` illustrates the need for embedded objects to have separate identity: [https://github.com/lfridael/ember-data-spring-example/blob/8e10c70197f7e0776fd6575f156c1833874768e0/src/main/java/com/github/emberdata/spring/domain/Track.java](https://github.com/lfridael/ember-data-spring-example/blob/8e10c70197f7e0776fd6575f156c1833874768e0/src/main/java/com/github/emberdata/spring/domain/Track.java)

Ember part: [https://github.com/lfridael/ember-data-spring-example/commit/af3a1d42ae90abd6796d3358b8dabb1231659ae5](https://github.com/lfridael/ember-data-spring-example/commit/af3a1d42ae90abd6796d3358b8dabb1231659ae5)

The only relevant thing here is the serializer: [https://github.com/lfridael/ember-data-spring-example/blob/af3a1d42ae90abd6796d3358b8dabb1231659ae5/ui/app/serializers/album.js](https://github.com/lfridael/ember-data-spring-example/blob/af3a1d42ae90abd6796d3358b8dabb1231659ae5/ui/app/serializers/album.js)

This example has a very simple domain model, but already illustrates the many pain points you’ll encounter. Without framework-level support for Ember Data integration, you’ll be stuck in boilerplate hell before you’re even getting started.

---

<div class="post-metadata">

### Author: ![broerse](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.emberjs.com/broerse/32/9497_2.png) [@broerse](https://discuss.emberjs.com/u/broerse)
#### Post date: [February 6, 2015, 9:39pm UTC](https://discuss.emberjs.com/t/best-ember-back-end/7237/11 "2015-02-06T21:39:22Z")

</div>

I use Ember Pouch and CouchDB. Example: [GitHub - broerse/ember-cli-blog: Tom Dale's blog example updated for the Ember CLI](https://github.com/broerse/ember-cli-blog)

---

<div class="post-metadata">

### Author: ![jean](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.emberjs.com/jean/32/9293_2.png) [@jean](https://discuss.emberjs.com/u/jean)
#### Post date: [February 7, 2015, 5:21pm UTC](https://discuss.emberjs.com/t/best-ember-back-end/7237/12 "2015-02-07T17:21:18Z")

</div>

Thank you 🙂

I am learning Rails, just to make better backends.

Besides that, here at my company we use Python+Flask. Since we started using it (June 2013) the results are being amazing and very scalable.

I just create a sample project like yours, @bahudso: [https://github.com/jeanleonino/ember-flask-project-base](https://github.com/jeanleonino/ember-flask-project-base)

---

<div class="post-metadata">

### Author: ![kylecoberly](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.emberjs.com/kylecoberly/32/15828_2.png) [@kylecoberly](https://discuss.emberjs.com/u/kylecoberly)
#### Post date: [February 9, 2015, 1:02am UTC](https://discuss.emberjs.com/t/best-ember-back-end/7237/13 "2015-02-09T01:02:27Z")

</div>

I think the lowest overhead way to get it done is to use Express and something like Mongo. Since NoSQL data stores don’t really make any assumptions about your models, you can store what Ember Data sends as-is, and with Express, you can handle server routing right in the app. You can do simple endpoints in 3 or 4 lines of boilerplate. Just override ED’s serializer to use \_id as the primary key and you’re set.

---

<div class="post-metadata">

### Author: ![yeco](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.emberjs.com/yeco/32/9707_2.png) [@yeco](https://discuss.emberjs.com/u/yeco)
#### Post date: [February 10, 2015, 3:02pm UTC](https://discuss.emberjs.com/t/best-ember-back-end/7237/14 "2015-02-10T15:02:29Z")

</div>

I think you could try this: [https://github.com/jarias/generator-jhipster-ember](https://github.com/jarias/generator-jhipster-ember)

It already implements Spring + OAuth2 + EmberJS, so might be useful for you, at least to understand how to integrate Spring and Ember Data.

---

<div class="post-metadata">

### Author: ![skhan\_di3](https://avatars.discourse-cdn.com/v4/letter/s/71c47a/32.png) [@skhan\_di3](https://discuss.emberjs.com/u/skhan_di3)
#### Post date: [February 13, 2015, 9:14am UTC](https://discuss.emberjs.com/t/best-ember-back-end/7237/15 "2015-02-13T09:14:03Z")

</div>

I second the motion to use sails with ember. Just use ember blueprints and you’ll be up and running in no time.

---

<div class="post-metadata">

### Author: ![jerel](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.emberjs.com/jerel/32/14962_2.png) [@jerel](https://discuss.emberjs.com/u/jerel)
#### Post date: [February 13, 2015, 3:29pm UTC](https://discuss.emberjs.com/t/best-ember-back-end/7237/16 "2015-02-13T15:29:52Z")

</div>

My preference is using the [Django REST Framework](https://github.com/tomchristie/django-rest-framework) with a [server side compatibility adapter](https://github.com/ngenworks/rest_framework_ember) (full disclosure: I’m one of the authors of the adapter) that makes the server use the same format as Ember Data expects. The adapter also handles snake\_case to camelCase conversion and pluralization so you can use different variable name styles in each environment.

While it may take a little to learn how Ember Data works once you do it’s very very productive.

---

<div class="post-metadata">

### Author: ![entvikas](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.emberjs.com/entvikas/32/13725_2.png) [@entvikas](https://discuss.emberjs.com/u/entvikas)
#### Post date: [March 31, 2018, 9:45am UTC](https://discuss.emberjs.com/t/best-ember-back-end/7237/18 "2018-03-31T09:45:30Z")

</div>

How was your review with sails so far is it good to use as a alternative to ruby and python

---

<div class="post-metadata">

### Author: ![alexlafroscia](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.emberjs.com/alexlafroscia/32/10701_2.png) [@alexlafroscia](https://discuss.emberjs.com/u/alexlafroscia)
#### Post date: [April 3, 2018, 7:39pm UTC](https://discuss.emberjs.com/t/best-ember-back-end/7237/19 "2018-04-03T19:39:25Z")

</div>

At Netflix, we pair Ember with Ruby on Rails. To help with serialization, we built (and open-sourced) [fast\_jsonapi](https://github.com/Netflix/fast_jsonapi) to speed up the serialization process quite a bit.
