nor-app -- Hypermedia App Server
nor-app provides a HTTP interface in to a nor-nopg
database -- which provides noSQL features in a
PostgreSQL database server.
- Web based UI to maintain document types with JSON Schema
- Web interface to create, search, edit and delete documents
- Maintains a hypermedia JSON REST API for the data
- nopg -- Shell scripting CLI for nor-nopg
- Ubuntu Linux LTS 14.04 (other Linux systems probably work, too)
- Node.js v4.4.
- PostgreSQL 9.3 Server, with extensions:
- See other dependencies from the NPM registry
- Trello board: https://trello.com/b/MHiSILez
npm install -g nor-nopg
npm install -g nor-app
Creating a database
Create a PostgreSQL database with these extensions:
CREATE EXTENSION plv8; CREATE EXTENSION "uuid-ossp"; CREATE EXTENSION tcn; CREATE EXTENSION moddatetime;
Set your database configurations into a
PGCONFIG environment variable:
Setting name and port
Name your application (default name is
You can also change your application port (default port is
Start the server
Check the logs at
If there's any problems, just create an issue.
Create admin user
Write down the password, you need it to login :)
Installing as a dependency
You may want to use
nor-app as a dependency instead of a global command.
Create a directory for your project and initialize NPM there:
mkdir myapp cd myapp npm init npm install --save nor-nopg npm install --save nor-app
scripts section in your
./package.json to look like this:
After that, you can initialize the NoPg database with a command
npm run init instead of
nor-nopg init and start the server simply
with a command
npm start and stop it
Open your browser at http://localhost:3000 and login
... and design your database in the browser...
... and access REST interface from: http://localhost:3000/api/
If something doesn't work, check log files at
We recommend using jsonview when working in Google Chrome.
Testing API with
We also have a curl wrapper
./tools/curl which makes it easier to work with our API.
Easiest way to get a cookie is from logged in session using Google Chrome's inspector.
Copy the value of
npm config set nor-app:curl_cookie 'connect.sid=your-value-here'
Then you can use the api: