Shared publicly  - 
Introducing Yeoman: Express Stack - A Full Stack Experiment

This weekend, I and a few other developers started hacking on +Yeoman to see if we could bake in Express support. Developers have been asking for both back-end support and back-end generators for a while, so we thought we'd see what we could come up with.

The result of our efforts is Yeoman: Express Stack, a proof of concept branch which includes:

* A custom version of Yeoman with support for Express middleware
* CRUD generators for both Express and +AngularJS 
* LiveReload watch (server), build supported out of the box
* Demo application using Angular

You can get and play with our experimental branch here:

The idea is that you have a directory in your application for your Express code (server) and another for your client-side code (app) - everything else just works.

This branch is based on Yeoman 0.9.6 and we expect better support for back-end integration to be possible in Yeoman 1.0. For the time being, feel free to try out the stack and let us know what you think :)
Julia Jacobs's profile photoRibhararnus Pracutiar's profile photoNicholas Jallan's profile photoCharles Wiese's profile photo
Mother of god... /headsplodes
That sounds fantastic!
can we swap out angular.js for backbone.js or anothermv*.js
The server/ and app/ divide is interesting. What if some of my JavaScript code could be used on both sides of the fence?

Maybe add support for a shared/ dir in the future?
I look forward to looking at this.  I have played with Angular, and have looked at Express.  This is where I was heading anyway.  Thanks!!
+Dom Barker You could, but at present this experiment is focusing on CRUD with Angular and Express.

+Eric Ferraiuolo That's certainly a valid consideration. We might try investigating a setup that would support shared code after 1.0 is out :)
Very nice! Glad to see +Jake Mumm's CRUD generator being put to such good use.
+Brian Ford Jake's work on the generators was amazing. Came in so useful for this!
This really exciting stuff ... turning into a RoR for JavaScript! I've built Express apps but haven't yet played with Angular.js - maybe I'll give it a whirl now.

I agree that the ability to swap mvc client framework will be important but for this experiment getting them all working with yeoman is bad ass
That looks very cool. You guys are putting lots of effort on this tool! Congrats.
We've got a long way to go on this, and I wish I had more time to work on this, but thanks +Brian Ford  and +Addy Osmani. You guys are the best.

Yeoman really does have huge potential. Like +Rob Levin says, it's like the RoR for JavaScript, or, in my case, it's filling the gap of the Yii Framework (PHP). But we're no where near the scaffolding capabilities of RoR or Yii.

Especially for Angular, I'd really like to see model-based CRUD generation. But Angular needs something for data models that we can use to attempt scaffolding forms and views based on model properties. Perhaps something like a $resourceProvider but for local storage? We need something like that to really get into CRUD generation. 
+Jake Mumm The model layer is hard, because everyone's data is different, people have different needs for their data, and so it's not easy (or even a good idea, perhaps) to generalize that layer too much. I find myself taking different approaches for different apps, but I really dig PouchDB + CouchDB these days. With Couch, you can drop the Node.js layer altogether for DB requests.
robi b
interesting stuff.  I was wondering when yeoman was going to become opinionated about server side code.  Glad to see some competition to something like Meteor.
+Brian Ford One of the core things about RoR and these model-aware frameworks is the ORM layer and how it enables auto-generation of CRUD code based on the properties of models. I know Yeoman is intended for use in a somewhat new paradigm of web development, but I still see this functionality being extremely useful.
@Jake Sure the no ORM model-aware point is true (although I'm not always crazy about ORM). I'm sure ORM in node.js is/will be available but that takes us a bit off topic; guess my point is really that it's getting more and more feasible to build end to end apps using JavaScript only.
ORM is useful for relational stores, but I don't find them useful for document-based datastores (like couch), which are becoming increasingly awesome. But I agree ORM has its place and would be a useful tool for many cases.
+Rob Levin  +Brian Ford   I'm sorry this is edging off topic. I guess I'm not as concerned about datastores as I am about just the ability to auto-generate forms and views. This functionality has helped me get apps off the ground very quickly, not to mention the fact that building CRUD for a whole bunch of entities in your app is exceedingly tedious and repetitive. Should we just look at having the Yeoman angular:crud command take an optional field list as a parameter or something like below? (ignore the way it's written. i'm not sure how to do the field list as a parameter. i'm just trying to get the point across)

yeoman init angular:crud post { post_id: "int", title: "text", body: "textarea" }
robi b
it would be nice to have the crud calls wrapped and wired up in the front end nicely to the data models available in the backend.  Even if it just gives you the raw elements already hooked and wired so that you can just build and prettify around that.

I'm seeing yeoman as a nice way to kickstart anything tedious, so the more it can do, the better, even if it needs some cleanup after it generates things for me.
+Daniel Steigerwald I hadn't considered it, but it's certainly a variant others could experiment with once we have something stable.
There was some small issue and now it's fixed. Thx +Addy Osmani . So for those who checked out a bit too early, you may want to pull the latest changes (your installation should work just fine so no need to run `grunt install` again). Also great work on those generators, +Jake Mumm ! They are awesome.
Thank you, +Brian Lai, +Jake Mumm and +Mickael Daniel for your work that was a part of this. I'm so glad we have something functional now that works against Yeoman.current and agree, there's a great deal we can do to make this better.
Really interesting! Last summer i had a similar idea (with backbone.js, cause i didn't still know angularjs), but i hadn't the time to build it. If it can be of interest for you there is a github repository where i put the little that the free time let me to build:
Almost missed your question, +Jake Mumm "Should we just look at having the Yeoman angular:crud command take an optional field list as a parameter or something like below?" I think that would be very useful. 

Because this project is effectively a test of how we can push the limits on stack development, I'd love for us to get this in. +Brian Ford would you be interested in getting involved with express stack too? Your Angular insight could definitely be helpful!
Looks promising, I was considering using Yeoman with an expressjs app, I guess this is perfect timing :)
Keep up the good work!
Really great work, you are all amazing :). In last month I also think how to integrate Yii (crud based on model attributes) with angular in way like +Jake Mumm suggest... I will be great to see this happen
Just curious what the difference between this new express-stack generator (outside of Express) and the current yeoman-generators branch that seems slightly more up to date?
When do these back end generators show up in yo ? :)
After installing I get "Error: Cannot find module 'colors'". I run down the path and install of the decencies that come up and then I finally hit "Error: Cannot find module 'yeoman-generators'" and am stuck at that point. Is there any way to get this to work?
Awesome! Thanks for the info!
+Addy Osmani This is so cool. When can we expect a production version of express-stack?
I would imagine within the next month. ExpressStack is still (officially) an experiment but I am going to work with our contributors to update it to the latest versions of yo and grunt so that you can use it once again.
OK.. So when does:

1) yeoman support Google App Engine ?


2) App Engine support Node/Express ?
can't believe I'm starting to memorize people's names!
For the life of me I can't seem to get any yeoman+express+angular.js stack to run on heroku.  Will this help?  Will anything help? 
I saw this: but the problem is I'm posting data from an express route and writing it to a file in a folder on the server.  Grrrr.  I think I might have to ditch yeoman . . .
This is a good question : angular 1.2.1 is here, and it comes with some breaking changes … This stack is very close to be a MEAN stack and i pray to have a generator for MEAN that is up-to-date :) (MEAN stands for Mongo Express Angular Node)
How about Yeoman for Ember/Express/Mongoose?
Add a comment...