# grasshopper-framework

## This is in alpha release currently

The Grasshopper Framework aims to be a convenient way to build websites backed by RESTful apis. It is built on top
of the Grasshopper DMS and Express.

A general guide is located [here](https://github.com/Solid-Interactive/grasshopper-framework/wiki).

Deving instructions [are here](https://github.com/Solid-Interactive/grasshopper-framework/wiki/contributing).

https://github.com/vvo/selenium-standalone

### TODO:

* Built in integration test runner
* Built in unit test runner
* Scaffolding / generator tool

### ISSUES:

* How do you control order controllers are attached
* Is it necessary to include file name in path? Should there be an opt out (e.g. start with _ opts out)

### Feature Set

* Make gh core query and add the results of the query to the local vars of a view (jade/pug template)
* Connect to db and have authed gh.query based on env dependent configs
* Create custom api endpoints
* Create custom admin pages
* Add middleware to a route
* Add middleware to the entire app
* Create front end js file for view
* Create css (via sass) for view
* local dev
* staging / production deploys
* cache busting in the deploy
* authorization / authentication
* Create api that does CRUD on gh model (content type)
* write unit test on middleware or util
* write integration test

### Sample app

* Home page informed by gh
* Category hierarchy build with grasshopper (category page)

### Dev Path

1. General file organization should be components / pods based
1. Create an api for ghf with which all of the above can be done manually.
1. Create convention based flow which allows you to remove the boiler plate for the api, while still running the api after conventions are set in order to override things.
    1. Load app into tree / array before it is actually started. This will allow to initially create array based on conventions and 
