{"_id":"carthage","_rev":"9-42527b0c51145e8aef59ece059c3075b","name":"carthage","description":"An API Server and Framework with scaffold functions for node.js","dist-tags":{"latest":"1.0.6"},"versions":{"1.0.0":{"name":"carthage","version":"1.0.0","description":"An API Server and Framework with scaffold functions for node.js","keywords":["framework","api","application","branding","server","modular","carthage"],"author":{"name":"Slim Ben Nasrallah"},"main":"core/module.js","dependencies":{"api-res":"~0.0.4","async":"~1.5.2","cmnd":"~0.1.0","colors":"~1.1.0","cross-spawn-async":"~2.1.6","deep-equal":"~1.0.1","dot":"~1.0.3","dotenv":"^2.0.0","fs-extra":"~0.26.4","fxn":"~0.0.2","i":"~0.3.4","inquirer":"~0.11.3","mime-types":"~2.1.9","pg":"~4.5.5"},"devDependencies":{"chai":"~3.5.0","mocha":"~2.4.5"},"scripts":{"test":"mocha ./test/runner.js","docs":"documentation build core/module.js -o docs -f html"},"repository":{"type":"git","url":"git+https://github.com/SlimBN/carthagejs.git"},"license":"MIT","bin":{"carthage":"cli/bin.js"},"gitHead":"6cee1a447820c9360f0cefb0d0cba8ae98440835","bugs":{"url":"https://github.com/SlimBN/carthagejs/issues"},"homepage":"https://github.com/SlimBN/carthagejs#readme","_id":"carthage@1.0.0","_shasum":"8785b0e8f885b01445ae7837d02e2939edda47f2","_from":".","_npmVersion":"4.0.5","_nodeVersion":"7.2.1","_npmUser":{"name":"slimbn","email":"slim@devagnos.com"},"maintainers":[{"name":"slimbn","email":"slim@devagnos.com"}],"dist":{"shasum":"8785b0e8f885b01445ae7837d02e2939edda47f2","tarball":"https://registry.npmjs.org/carthage/-/carthage-1.0.0.tgz","integrity":"sha512-PjistpTgGeaHwIyZ+9LqWCeE0eSxPQuNme0Uch8NPoKKqTcevcBmovoFbNnWIdf3vOpI4yNe21GsFmVI6FZ5hw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHp/Y8AErRZYICT1d0RxSSpv0VHLg8yXd8/qu3uL/OXUAiEA+fH349b/ADvbCel4TMWFIGFp0mgbQUaPj7Pty2m0cGg="}]},"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/carthage-1.0.0.tgz_1482867579741_0.4440072951838374"}},"1.0.1":{"name":"carthage","version":"1.0.1","description":"An API Server and Framework with scaffold functions for node.js","keywords":["framework","api","application","branding","server","modular","carthage"],"author":{"name":"Slim Ben Nasrallah"},"main":"core/module.js","dependencies":{"api-res":"~0.0.4","async":"~1.5.2","cmnd":"~0.1.0","colors":"~1.1.0","cross-spawn-async":"~2.1.6","deep-equal":"~1.0.1","dot":"~1.0.3","dotenv":"^2.0.0","fs-extra":"~0.26.4","fxn":"~0.0.2","i":"~0.3.4","inquirer":"~0.11.3","mime-types":"~2.1.9","pg":"~4.5.5"},"devDependencies":{"chai":"~3.5.0","mocha":"~2.4.5"},"scripts":{"test":"mocha ./test/runner.js","docs":"documentation build core/module.js -o docs -f html"},"repository":{"type":"git","url":"git+https://github.com/SlimBN/carthagejs.git"},"license":"MIT","bin":{"carthage":"cli/bin.js"},"gitHead":"751120c9c8244d4a9ed8fedd3110c4e1c73dcf2f","bugs":{"url":"https://github.com/SlimBN/carthagejs/issues"},"homepage":"https://github.com/SlimBN/carthagejs#readme","_id":"carthage@1.0.1","_shasum":"fafad1fa0e068b4a6af59a1d649cea5ca8f96d8e","_from":".","_npmVersion":"4.0.5","_nodeVersion":"7.2.1","_npmUser":{"name":"slimbn","email":"slim@devagnos.com"},"maintainers":[{"name":"slimbn","email":"slim@devagnos.com"}],"dist":{"shasum":"fafad1fa0e068b4a6af59a1d649cea5ca8f96d8e","tarball":"https://registry.npmjs.org/carthage/-/carthage-1.0.1.tgz","integrity":"sha512-n2ExusQiYVcvKT0jbv2eSKJEyxYWLfvCrwvsB4LdyczKlRm2rZSlQ2cax08gAml/8VYlBHzOCbeZIxLZMRJMxw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCCG4tfiuvtsIC2LPQSD3a6uHC1iUWcmJDoZmrZqw7cAAIgDSUiy+aD66+AME22wxiRStqzdcxPBAao15Rfw9GjnMk="}]},"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/carthage-1.0.1.tgz_1483229363330_0.663069291273132"}},"1.0.2":{"name":"carthage","version":"1.0.2","description":"An API Server and Framework with scaffold functions for node.js","keywords":["framework","api","application","branding","server","modular","carthage"],"author":{"name":"Slim Ben Nasrallah"},"main":"core/module.js","dependencies":{"api-res":"~0.0.4","async":"~1.5.2","cmnd":"~0.1.0","colors":"~1.1.0","cross-spawn-async":"~2.1.6","deep-equal":"~1.0.1","dot":"~1.0.3","dotenv":"^2.0.0","fs-extra":"~0.26.4","fxn":"~0.0.2","i":"~0.3.4","inquirer":"~0.11.3","mime-types":"~2.1.9","pg":"~4.5.5"},"devDependencies":{"chai":"~3.5.0","mocha":"~2.4.5"},"scripts":{"test":"mocha ./test/runner.js","docs":"documentation build core/module.js -o docs -f html"},"repository":{"type":"git","url":"git+https://github.com/SlimBN/carthagejs.git"},"license":"MIT","bin":{"carthage":"cli/bin.js"},"gitHead":"07af74e668a445afcc49ec17bc4bb2edc48deaa6","bugs":{"url":"https://github.com/SlimBN/carthagejs/issues"},"homepage":"https://github.com/SlimBN/carthagejs#readme","_id":"carthage@1.0.2","_shasum":"ce525430b7054f1240b29f854261734e97d8a2e2","_from":".","_npmVersion":"4.0.5","_nodeVersion":"7.2.1","_npmUser":{"name":"slimbn","email":"slim@devagnos.com"},"maintainers":[{"name":"slimbn","email":"slim@devagnos.com"}],"dist":{"shasum":"ce525430b7054f1240b29f854261734e97d8a2e2","tarball":"https://registry.npmjs.org/carthage/-/carthage-1.0.2.tgz","integrity":"sha512-LA4Z6xvdj9hAraSMV4U3eSVAObHHXr/GW63vyvL2/p1ZvoWEpJ06ZKUdKSuMM9xpW4ueq3OpNfsBDnJ7QZdoWQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDzGD2H4rHqtasgBpMs1qefMhr+DXJ4I8J0DaApFQN9WAIgcNMV53GkIteglXDfTj0DQz6Ywzev8uOoqSYj8Sqik2E="}]},"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/carthage-1.0.2.tgz_1483569009520_0.04791373084299266"}},"1.0.3":{"name":"carthage","version":"1.0.3","description":"An API Server and Framework with scaffold functions for node.js","keywords":["framework","api","application","branding","server","modular","carthage"],"author":{"name":"Slim Ben Nasrallah"},"main":"core/module.js","dependencies":{"api-res":"~0.0.4","async":"~1.5.2","cmnd":"~0.1.0","colors":"~1.1.0","cross-spawn-async":"~2.1.6","deep-equal":"~1.0.1","dot":"~1.0.3","dotenv":"^2.0.0","fs-extra":"~0.26.4","fxn":"~0.0.2","i":"~0.3.4","inquirer":"~0.11.3","mime-types":"~2.1.9","pg":"~4.5.5"},"devDependencies":{"chai":"~3.5.0","mocha":"~2.4.5"},"scripts":{"test":"mocha ./test/runner.js","docs":"documentation build core/module.js -o docs -f html"},"repository":{"type":"git","url":"git+https://github.com/SlimBN/carthagejs.git"},"license":"MIT","bin":{"carthage":"cli/bin.js"},"gitHead":"026169a8e05858abd1eecf47ff34f47cce35896e","bugs":{"url":"https://github.com/SlimBN/carthagejs/issues"},"homepage":"https://github.com/SlimBN/carthagejs#readme","_id":"carthage@1.0.3","_shasum":"f2f922524c7e43253a506d402ddc47c669a8e969","_from":".","_npmVersion":"4.0.5","_nodeVersion":"7.2.1","_npmUser":{"name":"slimbn","email":"slim@devagnos.com"},"maintainers":[{"name":"slimbn","email":"slim@devagnos.com"}],"dist":{"shasum":"f2f922524c7e43253a506d402ddc47c669a8e969","tarball":"https://registry.npmjs.org/carthage/-/carthage-1.0.3.tgz","integrity":"sha512-21t9n11BllPzUZMh8H5hxeqhTYsfENv7l+2rWukj+n77GLHmk9F5yHs+A3Kje1pEzb5zLazQbcl5OX8qaFHS6A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDOcHHW/ld9DwLMmvC8CJb334jz/sKQNMs0T8Ip4bRaEAiEA3v3JcgsQ71gqe83XbfIc75c9yH3OYvEtrP1zhQTsZC4="}]},"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/carthage-1.0.3.tgz_1483594826641_0.43184287659823895"}},"1.0.4":{"name":"carthage","version":"1.0.4","description":"An API Server and Framework with scaffold functions for node.js","keywords":["framework","api","application","branding","server","modular","carthage"],"author":{"name":"Slim Ben Nasrallah"},"main":"core/module.js","dependencies":{"api-res":"~0.0.4","async":"~1.5.2","cmnd":"~0.1.0","colors":"~1.1.0","cross-spawn-async":"~2.1.6","deep-equal":"~1.0.1","dot":"~1.0.3","dotenv":"^2.0.0","fs-extra":"~0.26.4","fxn":"~0.0.2","i":"~0.3.4","inquirer":"~0.11.3","mime-types":"~2.1.9","pg":"~4.5.5"},"devDependencies":{"chai":"~3.5.0","mocha":"~2.4.5"},"scripts":{"test":"mocha ./test/runner.js","docs":"documentation build core/module.js -o docs -f html"},"repository":{"type":"git","url":"git+https://github.com/SlimBN/carthagejs.git"},"license":"MIT","bin":{"carthage":"cli/bin.js"},"gitHead":"db5c3fc628ba806ed295b5d8ff59a09485f5e0d7","bugs":{"url":"https://github.com/SlimBN/carthagejs/issues"},"homepage":"https://github.com/SlimBN/carthagejs#readme","_id":"carthage@1.0.4","_shasum":"bc244b1d090800f0bbea0bae36f20f0391fe8c11","_from":".","_npmVersion":"4.0.5","_nodeVersion":"7.2.1","_npmUser":{"name":"slimbn","email":"slim@devagnos.com"},"maintainers":[{"name":"slimbn","email":"slim@devagnos.com"}],"dist":{"shasum":"bc244b1d090800f0bbea0bae36f20f0391fe8c11","tarball":"https://registry.npmjs.org/carthage/-/carthage-1.0.4.tgz","integrity":"sha512-oA3yZTr3Va2IQIfDp6upvmy90iypalx/3dZ7SvwopLrHksvpk3ROsBSay4hSIdYYyPVEP+qoyd+qGUu1FPvFlQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF5F05Jb5IDRqgo58aBD4tbA9jbf3F543k+Hu1B2JS1XAiEA4eG2YSarSy806Uxj7i9pClFx9YRqFBNncCR3AgwERUE="}]},"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/carthage-1.0.4.tgz_1483594912457_0.6635499629192054"}},"1.0.5":{"name":"carthage","version":"1.0.5","description":"An API Server and Framework with scaffold functions for node.js","keywords":["framework","api","application","branding","server","modular","carthage"],"author":{"name":"Slim Ben Nasrallah"},"main":"core/module.js","dependencies":{"api-res":"~0.0.4","async":"~1.5.2","cmnd":"~0.1.0","colors":"~1.1.0","cross-spawn-async":"~2.1.6","deep-equal":"~1.0.1","dot":"~1.0.3","dotenv":"^2.0.0","fs-extra":"~0.26.4","fxn":"~0.0.2","i":"~0.3.4","inquirer":"~0.11.3","mime-types":"~2.1.9","pg":"~4.5.5"},"devDependencies":{"chai":"~3.5.0","mocha":"~2.4.5"},"scripts":{"test":"mocha ./test/runner.js","docs":"documentation build core/module.js -o docs -f html"},"repository":{"type":"git","url":"git+https://github.com/SlimBN/carthagejs.git"},"license":"MIT","bin":{"carthage":"cli/bin.js"},"gitHead":"73f10e59cd638d1e53854aa40adf2b0f0ae19e72","bugs":{"url":"https://github.com/SlimBN/carthagejs/issues"},"homepage":"https://github.com/SlimBN/carthagejs#readme","_id":"carthage@1.0.5","_shasum":"ff8c06c924a8d3cb8a4e476cf449a2a4bf2df999","_from":".","_npmVersion":"4.0.5","_nodeVersion":"7.2.1","_npmUser":{"name":"slimbn","email":"slim@devagnos.com"},"maintainers":[{"name":"slimbn","email":"slim@devagnos.com"}],"dist":{"shasum":"ff8c06c924a8d3cb8a4e476cf449a2a4bf2df999","tarball":"https://registry.npmjs.org/carthage/-/carthage-1.0.5.tgz","integrity":"sha512-NM9Gw6jiok1fy2CD3FRCxBOlWEbMlc1KEelvRTq0OhgsjPNsMO2M3wOgcATyccfURjYBbeiL9uV713jndBwmLQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCs1tATowT1L6R00/9CKOpsTdrReB00QX5/4HfvKzg9OQIhALaTWLWtEdtcSMQbK8eXB58EgweyAyDuu6UCxKxbJZty"}]},"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/carthage-1.0.5.tgz_1483596041765_0.622649397701025"}},"1.0.6":{"name":"carthage","version":"1.0.6","description":"An API Server and Framework with scaffold functions for node.js","keywords":["framework","api","application","branding","server","modular","carthage"],"author":{"name":"Slim Ben Nasrallah"},"main":"core/module.js","dependencies":{"api-res":"~0.0.4","async":"~1.5.2","cmnd":"~0.1.0","colors":"~1.1.0","cross-spawn-async":"~2.1.6","deep-equal":"~1.0.1","dot":"~1.0.3","dotenv":"^2.0.0","fs-extra":"~0.26.4","fxn":"~0.0.2","i":"~0.3.4","inquirer":"~0.11.3","mime-types":"~2.1.9","pg":"~4.5.5"},"devDependencies":{"chai":"~3.5.0","mocha":"~2.4.5"},"scripts":{"test":"mocha ./test/runner.js","docs":"documentation build core/module.js -o docs -f html"},"repository":{"type":"git","url":"git+https://github.com/SlimBN/carthagejs.git"},"license":"MIT","bin":{"carthage":"cli/bin.js"},"gitHead":"ab139c6698747e94bc9b9090fae9e0491315c924","bugs":{"url":"https://github.com/SlimBN/carthagejs/issues"},"homepage":"https://github.com/SlimBN/carthagejs#readme","_id":"carthage@1.0.6","_shasum":"c54393a2cb4eaa6e8d7171f135e76f5f56c2b628","_from":".","_npmVersion":"4.0.5","_nodeVersion":"7.2.1","_npmUser":{"name":"slimbn","email":"slim@devagnos.com"},"maintainers":[{"name":"slimbn","email":"slim@devagnos.com"}],"dist":{"shasum":"c54393a2cb4eaa6e8d7171f135e76f5f56c2b628","tarball":"https://registry.npmjs.org/carthage/-/carthage-1.0.6.tgz","integrity":"sha512-qFr/vMEq9cd8QlPHn2hdnRYYYzxLJIKPIwTcZ3ayOVXNc+2ExqkONEOzL+dka3MP9pEm/tT043RNUaAYyr6O2Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDN+Z3Cec+NQpy+fdWHLPEYY+wvN6tzRNQUFsAKldH02AIhAN9fZBX5m+aeHZPTEUR3kfBkB/Byh6vLnqF87UiO3ckj"}]},"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/carthage-1.0.6.tgz_1483596113844_0.535376900807023"}}},"readme":"# Carthage\n## API Services Made Easy with Node.js\n\nView the website at [carthagejs.com](http://carthagejs.com).\n\nCarthage is a web server and opinionated framework for building\ndata manipulation-centric (Create Read Update Destroy) API services in Node.js for\nweb, mobile or IoT apps.\n\n## Why Carthage?\n\nCarthage is built upon an ideology of a robust, scalable architecture for\ndata storage and retrieval APIs.\n\nCarthage servers are not meant to be monoliths. They're *stateless* and *distributed*\n\nRemember: **one input, one output**. Side effects dealing with model state\nshould be managed via your Database. Carthage should not be used for streaming\n(long poll) requests and the HTTP request and response objects are intentionally\nobfuscated.\n\nThis also means you *can not rely on socket connections*. If you need to\nincorporate realtime functionality in your application, there should be a\nseparate server responsible for this. It can interface with your Carthage API\nserver and even receive events from it, but your API server should never have\na stateful (prolonged) connection with any client.\n\n## Getting Started\n\nGetting started with Carthage is easy.\n\n1. Download and install the newest Node 6.x version from [nodejs.org](https://nodejs.org)\n2. In Terminal: type `npm install carthage -g`.\n(If you get an error, run `sudo npm install carthage -g` or fix permissions permanently by\n  [following these directions](https://docs.npmjs.com/getting-started/fixing-npm-permissions)\n3. Again in Terminal, visit your projects folder. Perhaps with `cd ~`.\n4. Run `carthage new`.\n5. Follow the on screen instructions, enter your new project directory and type `carthage s`.\n\nThat's it! Your Carthage webserver is up and running.\n\n## Hooking Up Your Database\n\nOnce Carthage is up and running, it's likely that you'll want to connect your project\nto a database. Carthage comes packaged with Migrations, a Query Composer and full\nPostgreSQL integration.\n\nFirst you'll need to install PostgreSQL.\n\nOnce you've installed Postgres, make sure to run:\n\n```\n$ createuser postgres -s\n```\n\nTo create a default postgres superuser with no password. (Default for Carthage's\nconfiguration.)\n\nFirst step then:\n\n```\n$ carthage db:create\n```\n\nTo create the database and then,\n\n```\n$ carthage db:prepare\n```\n\nTo prepare for migrations.\n\nFrom here, `carthage db:migrate` runs all pending migrations and `carthage db:rollback`\nwill roll back migrations, one at a time by default.\n\n## Server Types\n\nCarthage works best when you follow its ideology, and that means creating a new\nservice to solve specific *Problem Domains* of your application and business.\n\nThe main three suggestions are **Branding Server**, **API Server** and **Application Server**.\n\n### API Server\n\nCreate an API server using Carthage's Models, PostgreSQL integration, built-in JSON\nAPI formatting, and Query Composer (ORM). Bi-directional migrations are packaged\nwith Carthage, meaning you can maintain the integrity of your data.\nUser (including password) and OAuth AccessToken models and controllers are\npre-built for you and can be added easily to your project.\n\nPackaged with Carthage are workers, scheduling modules, and much more for all of\nyour data needs.\n\nWe can look at what an API Controller might look like for, say, blog posts:\n\n```javascript\nclass BlogPostsController extends Carthage.Controller {\n\n  index() {\n\n    BlogPost.query()\n      .join('user')\n      .join('comments')\n      .where(this.params.query)\n      .end((err, blogPosts) => {\n\n        this.respond(err || blogPosts);\n\n      });\n\n  }\n\n  show() {\n\n    BlogPost.find(this.params.route.id, (err, blogPost) => this.respond(err || blogPost));\n\n  }\n\n  create() {\n\n    BlogPost.create(params.body, (err, blogPost) => this.respond(err || blogPost));\n\n  }\n\n  update() {\n\n    BlogPost.update(this.params.route.id, params.body, (err, blogPost) => this.respond(err || blogPost));\n\n  }\n\n  destroy() {\n\n    BlogPost.destroy(this.params.route.id, (err, blogPost) => this.respond(err || blogPost));\n\n  }\n\n}\n```\n\n\nFollow me on Twitter, [@hatchvenom](http://twitter.com/hatchvenom)\n\nFork me on GitHub, [SlimBN](http://github.com/SlimBN)\n\n","maintainers":[{"name":"slimbn","email":"slim@devagnos.com"}],"time":{"modified":"2022-06-13T05:37:51.487Z","created":"2016-12-27T19:39:42.044Z","1.0.0":"2016-12-27T19:39:42.044Z","1.0.1":"2017-01-01T00:09:23.836Z","1.0.2":"2017-01-04T22:30:11.753Z","1.0.3":"2017-01-05T05:40:27.326Z","1.0.4":"2017-01-05T05:41:54.516Z","1.0.5":"2017-01-05T06:00:43.964Z","1.0.6":"2017-01-05T06:01:54.597Z"},"homepage":"https://github.com/SlimBN/carthagejs#readme","keywords":["framework","api","application","branding","server","modular","carthage"],"repository":{"type":"git","url":"git+https://github.com/SlimBN/carthagejs.git"},"author":{"name":"Slim Ben Nasrallah"},"bugs":{"url":"https://github.com/SlimBN/carthagejs/issues"},"license":"MIT","readmeFilename":"README.md"}