Skip to content

REST JSONP server for <angular/> using mojolicious and CouchDB

Notifications You must be signed in to change notification settings

dpavlin/angular-mojolicious

Repository files navigation

REST JSONP server using mojolicious for <angular/>


<angular/>: Complex web apps made simple
http://angularjs.org/


mojolicious: the web in the box!
http://mojolicious.org/


This is my attempt to implement REST API described at:

http://docs.getangular.com/REST.Basic

using CouchDB HTTP view API

http://wiki.apache.org/couchdb/HTTP_view_API

to provide storage for experimenting with local datasets using angular $resource API.
You can also query CouchDB views $xhr("JSON", ...) in angular through angular-server.pl


At it's current stage it provides support for angular $resource get, query and $save

http://angularjs.org/Service:$resource


Data can also be serve static json files stored in:

	public/json/:database/:entity/:key

which can be used to provide data using external stand-alone scripts.



Replication of data between instances using angular REST API can be done with:

	# create local CouchDB database
	$ curl -X PUT http://localhost:5984/demo
	{"ok":true}

	$ ./angular-replicate.pl \
		http://dpavlin.getangular.com/data/conference \
		http://localhost:3000/data/demo

Replication is currently good only for initial import of data since it doesn't
support incremental replication and dies if data is allready present.


Installation:

	$ git submodule init
	$ git submodule update

Optionally build angular to get single file download

	$ cd public/angular
	$ rake compile
	$ cd -

Start it with:

	$ ./angular-server.pl daemon --reload  


Angular examples available:

- template/Cookbook - examples from wiki working against github version of angular
- template/conferece - conference submission example using mojolicious REST API server
- public/app/conference - new application layout with latest example confernce submission

	$ curl -X PUT http://localhost:5984/conference/_design/symposium \
		-d @public/app/conference/_design/symposium



CouchDB examples:

	couchdb-changes.pl - simple _changes feed watcher using Mojo::UserAgent documented at

		http://wiki.apache.org/couchdb/HTTP_database_API#Changes


	couchdb-trigger.pl - FSM document with hook for user-defiend triggers

		trigger/shell.pm - execute shell commands
		trigger/email.pm - skeleton for sending e-email
		trigger/KinoSearch.pm - full-text search

	$ curl -X PUT http://localhost:5984/demo
	{"ok":true}

	$ ./couchdb-trigger.pl http://localhost:5984/demo trigger/shell.pm

	$ curl -X POST http://localhost:5984/demo/ -H 'Content-type:application/json' -d \
		'{"trigger":{"command":"notify-send \"CouchDB trigger notify example\""}}'


	couchdb-external-kinosearch.pl - external searcher for KinoSearch indexes
		(configuration for CouchDB is included at end of file)

	$ ./couchdb-trigger.pl http://localhost:5984/demo trigger/KinoSearch.pm

	$ curl -X PUT http://localhost:5984/demo/text -d '{"text":"foobar bla bla"}'
	{"ok":true,"id":"text","rev":"1-cf9bb608f93af7f4e5e40656a6e50096"}

	$ curl 'http://localhost:5984/demo/_kinosearch?include_docs=true;q=foobar'



Roadmap:

+ implement angular-server.pl which implements REST API supported by $resource in angular
+ persistency to local CouchDB, and use views to query data
+ implement CouchDB _changes and FSM inside document as base for queue or triggers
- tests

About

REST JSONP server for <angular/> using mojolicious and CouchDB

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published