
Show HN: AdminJS, the Backend-Agnostic Administration Framework - ghempton
http://adminjs.com
======
mr_luc
I'd say that the JS world does need one of these.

There haven't really been any admin panels in the javascript world to my
knowledge that are far beyond the "weekend project" phase. (Please note that I
phrased that strongly, because I would love to find out I was simply
overlooking a capable contender).

For a wide swath of jobs where one might be tasked with providing minimum
necessary cms/admin functionality, the Rails ecosystem excels, with
ActiveAdmin[1] and more recently RailsAdmin[2] both strong contenders. Both
offer out-of-the-box integration with authentication/authorization frameworks
like Devise and CanCan, image/file upload, etc.

I want that in Javascript.

Not because I think that admin panels are such a great thing, but just because
especially doing lots of contracting and agency work -- you're going to need
them sometimes. You just are.

If you were making a product, maybe you'd turn your nose up at an admin panel
(suspect security, not performant), but they're a force multiplier when you
have very limited 'I need to be able to manage data X' requirements for a
project, and don't want to limit your future options or get bogged down
building interfaces only two humans will ever see.

I very specifically want great Javascript admin panels to proliferate, because
I want to be able to do some of those quick projects in node.js, and admin
panels are such a selling point of Rails at most agencies. :)

\---- [1] [http://www.activeadmin.info/](http://www.activeadmin.info/) [2]
[https://github.com/sferik/rails_admin](https://github.com/sferik/rails_admin)

~~~
TheHydroImpulse
I believe one of the reasons why there haven't been any for JavaScript or
Node.js is because nothing is standardized, apart from possibly express and
connect.

Authentication and authorization is yet to be standardized. This is the big
part of an admin backend. Also, because there's no standard ORM, data store,
or even schema, it's really hard to get something completely agnostic. You'd
have to present a boat load of configurations for it to work, but then you
wouldn't achieve "working right out-of-the-box."

~~~
mr_luc
Yeah -- I was expressly comparing to Rails, which has had a kind of de facto
standardizing effect.

And in addition to not having an ActiveRecord-style de facto standard
interface for CRUD, and having a much wilder profusion of datastores than the
SQL/almost-first-class-citizen-Mongo in much of RailsLand, the node.js
community is pulled in a lot of different directions because of Real-Time.

What's the future of ORMs in a real-time world? Projects like Derby/Racer are
a fascinating/messy glimpse into what kinds of forces are shaping the data
layer.

Look at how much harder simple things like validation/authorization are when
you're dealing with an OT engine that doesn't understand schemas, and which do
its job necessarily lives half in Redis and half in Mongo, using the ShareDB
api ...

Node.js has a lot of wonderful excuses not to have an admin panel; most of
them are related to why node is awesome.

That being said, I hope we get some admin panels. :) Passport.js is a decent
Devise standin, for instance, and there are a lot more ORM/ODM options now
than there were two years ago.

------
zachrose
This is the perfect case for hypermedia in the RESTful sense.

Rich Hickey recently gave one of his talks[1] where at one point he
offhandedly mentioned that hypermedia (which gives URIs for related HTTP
resources, with some link-like metadata) doesn't make sense for APIs because
APIs don't have human "drivers" that can read the link text and make
meaningful sense of what relations actually mean in the domain model.

I think the genius of RESTful hypermedia, though, could really come through in
a system like this. How else do you show relations? Last time I checked,
RailsAdmin can't do much for you here except provide the resource ID as a link
to that resource's table and row.

As a benign example, imagine a guest-party admin page. What today would look
like "Guest: 'Pitt, Brad', Party: '43'", tomorrow could be be "Guest: 'Pitt,
Brad', Party: 'Pitt-Jolie'" with a link to '/parties/43'.

I sense that developers (or at least Crockford[2]?) don't want JSON to become
overloaded with XML equivalents like XML schemas and metaschemas and
XSLT...but think of what we could do!

[1]
[http://www.youtube.com/watch?v=ROor6_NGIWU](http://www.youtube.com/watch?v=ROor6_NGIWU)

[2] [http://www.infoq.com/presentations/Heretical-Open-
Source](http://www.infoq.com/presentations/Heretical-Open-Source) ?

~~~
vbsteven
Json-ld takes this even further, it also supports linking data across multiple
domains.

[http://json-ld.org/](http://json-ld.org/)

~~~
zachrose
I'll also mention HAL, which is spec'd in both JSON and XML and has been
serving me quite well.

[http://stateless.co/hal_specification.html](http://stateless.co/hal_specification.html)

------
busterc
I can't browse the site on my iphone(news.yc, chrome & safari), it locks up
during render.

~~~
M4v3R
Same on iPad, though after a minute or two (!) or so it finally begins to
work. It has probably something to do with that 100000 row table on the
landing page.

------
kenster07
It's a bit sad for the front-end JS community that despite using one of the
most comprehensive client frameworks in Ember.js, the author of this admin
panel still felt the need to swap in a non-native data plugin
([http://epf.io/](http://epf.io/)).

~~~
machty
What does non-native mean here? All of the persistence options for Ember
(Ember Data, Ember Model, EPF) very intentionally don't come bundled in Ember
core. Not sure what you're trying to point out here.

------
jmickey
[http://www.jtable.org/](http://www.jtable.org/) is another similar product we
have used before.

------
geuis
Don't visit this site on a mobile device. Something is terribly, terribly
wrong. I just spent 10 minutes trying to get my phone back into a usable
state. The page loads about a tenth then causes the browser to be
unresponsive. Killing Safari multiple times didn't help and I even had to
force restart 2x.

~~~
whather
Thanks for the heads up, we're looking into it

~~~
geuis
Awesome. I'm taking a look at the framework from a regular machine now. Looks
interesting.

------
stevep98
You don't have _any_ description on what this actually _is_ , other than "The
Backend-Agnostic Administration Framework".

Can you please at least describe the features before you get into
installation?

------
sprobertson
For a second I thought your "new" view was broken, but I realized it was
because I had scrolled over in the table before clicking new. Looks like you
need a scrollLeft(0) somewhere in there.

------
hbc
it's boring to implement the ORM again in the client side

------
skore
Two things: When I click on an ID in the example, I can't get back except for
using the browser back button. Also, the EPF link tries to send me to epif.io.

------
machty
Congrats to the badasses at GroupTalent. This looks great!

------
Legend
Great work if it is what I think it is though I'm not totally sure what this
is. Can you please elaborate? Any usecases would be awesome!

------
cpursley
Beyond the fact that this is super useful, it's also a great example of how to
build and structure an Ember app.

------
ivanbrussik
very cool - would love to see an actual implementation of this. might just use
it for my own CRM

------
taf2
looks great seems to crash safari on iphone 4

~~~
whather
I noticed that too, we're looking into it

