{"_id":"@clevertech.biz/create-cleverstarter","_rev":"6-d3e523c7d8a7912b5ae6d3c5b7eedf0f","name":"@clevertech.biz/create-cleverstarter","dist-tags":{"latest":"0.1.1"},"versions":{"0.0.1":{"name":"@clevertech.biz/create-cleverstarter","version":"0.0.1","description":"A Full-stack TypeScript GraphQL Project Template","main":"bin/index.js","license":"MIT","engines":{"npm":">5"},"bin":{"create-cleverstarter":"bin/index.js"},"devDependencies":{"@commitlint/cli":"^8.3.5","@commitlint/config-conventional":"^8.3.4","husky":"^4.2.3"},"husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"gitHead":"5476336afc55f5234a1c21b2555d7cdd867c3392","_id":"@clevertech.biz/create-cleverstarter@0.0.1","_nodeVersion":"14.4.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-oT5F1pjvIX7ltmPOOTUu2PiAFiKZVrLnScvV+ie5iSNn51PMOAXqZUGhQZNs06zrI25XLxivY3VBmALW4iX+SQ==","shasum":"f1bb7b4f2a56d0a13a961ac1e9c41f54e742aba5","tarball":"https://registry.npmjs.org/@clevertech.biz/create-cleverstarter/-/create-cleverstarter-0.0.1.tgz","fileCount":148,"unpackedSize":1295363,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRtyBCRA9TVsSAnZWagAAI/gP/1y8pA2eQaYauYOjbXD3\nP3R41jXQUf8H8vgd61piqZi2OF+RDcPn236riMZJaoYvZLGXREGuA/ztO2Bx\nHp2cMiNaoLIdwgTmfL9IOXMYRH1q3vpoHPTP50SVie5/o0MquTjSTJpTqZH4\n/L2ySlUS2KbtZtRDspcIQjOzzAVaUdItS91I1xHQ2s3b7V2Ce06vbGXYuyHu\nWDilRedqk9SsLpfC8yVeDdjzjKP8vu78IJX/4ekr6ogdaDAzHrG5eTkqlchU\neq918gz6lSQWW7wsjCc8/H8awu/dJ0vK+c3sjht+CE/w3wg0o8ypImqkN/k6\nnlUgifFMiAuc6gXfuZ+HCjYKbY31g1rxBfRbXtM8dOYwagOPpsTjaUcOUtj3\ngYggucCVYarHVMU6yjqRkY90PfuE4DdytZS3Yu6pff3EtvlZxR7mBdnp+l+S\n3MDDqJGKk7rk/Dzf6fIWTla4VJ7rR3hDIz6zEZhCqiOLoFPiykOG8KVuD6Ug\n3QI4SZ7pWTF8XmlurVt8FRJUKWA+zLlVm4VA40BJnz0+maqORQbkw0/sLYmf\n/FUN7n3boqM16uEAotpVo1xP15E8PnT4y6PMDNBryaoVwA0I23NVIYRLH5QL\nh6HkfU2tOwIn/CAb1exh4d26FvkhleLWgPtGNLb8uxJLGWOYBZMN5Q+drlGw\nCE4t\r\n=ji3w\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICYS+4r4VSsFhhzBgB0nbmTbBn5AI7JWA4xcAmGku698AiBE8QsxJHFWOKsF/2uDk4CemoM3bEpMz8+ybrGVG7i20A=="}]},"maintainers":[{"name":"fredamsouza","email":"fredericoamsouza@gmail.com"},{"name":"gonrial","email":"gonrial@gmail.com"},{"name":"gmotruk","email":"g@motruc.com"}],"_npmUser":{"name":"fredamsouza","email":"fredericoamsouza@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/create-cleverstarter_0.0.1_1598479488336_0.9940233980869475"},"_hasShrinkwrap":false},"0.1.0":{"name":"@clevertech.biz/create-cleverstarter","version":"0.1.0","description":"A Full-stack TypeScript GraphQL Project Template","main":"bin/index.js","license":"MIT","engines":{"npm":">5"},"bin":{"create-cleverstarter":"bin/index.js"},"devDependencies":{"@commitlint/cli":"^8.3.5","@commitlint/config-conventional":"^8.3.4","husky":"^4.2.3"},"dependencies":{"chalk":"^4.1.0","inquirer":"^7.3.3","meow":"^8.0.0","mkdirp":"^1.0.4"},"gitHead":"96fee0d9773a7f18e1f2b266e488fec32aa63936","_id":"@clevertech.biz/create-cleverstarter@0.1.0","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-eLPkQtTJ6XzNMkBJNRGcJBgrLJ8g3KfxpnkLJija+x2WMvEXDY2AYrhxGYjDmulgRMWhyWU4gNkCQj7CLQPYuw==","shasum":"e42d60537615d66713a0d3701a3da72e2ac18ec4","tarball":"https://registry.npmjs.org/@clevertech.biz/create-cleverstarter/-/create-cleverstarter-0.1.0.tgz","fileCount":204,"unpackedSize":2005196,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf1jw9CRA9TVsSAnZWagAASa4P/jAVdH4HdYvoN1jEEHCB\npVMvG2jvU6mi94OaDn3A0lsiDsTsMhm5Hw/7z8HgK93y9M8phbYUV3L+omMj\npZVfacokdQ8Wvo7+hg3sHNiT4TlNR+mJFI8v0xNsunfgGYX5xFh87kgqwolD\n/rTnqxxr5+KUkScRtf6KGFgqnkIBG9l+uKrVbtxCtCVx4Ab9okV63HehyU4c\nfmeiztnpsO/n3WnOR5Ck2pfjX/tk8EJT1pC8vD/NSfw+PsGtynN4oL7DyK+2\n4t87cjPnTh9ovm5Ck3AUkpvPgsCN3gXUySmHgfHUdVQAr36KfJb6TED+j8eI\nNQuFw/hm/f2Kkgzq/7TRCnMPLBmKPI36Atzboy6qLXE6Hf2of+iZUcPKmVqs\n1R+9PGG9bCPkmGUcz48F8F3K9xTo+0wt3uKAVhICK+uchBb1ptMjMxdP7YBZ\nN1uiKAGOulcH7kI3Cwco1XoaEJJpG4GJcXh/mSxvqLdqH8Mp5bry30nLxBfz\nSZvdPkKL+DdOYhmQ9AVNnY+kaJXqhzu5IT9u3bK8mfa5OoB33nnOhN+2/tMi\nldGvBg8UZfDjHWHRUAzZPsrdOp+PZlhqIiBwDoPCa+bCw30MpIdbx13khK98\nJk4N15A4SECk1+rQ8QHpKoGsnq8o3wjsIgQiQOl9IZ9hdbp6rt7MEZBoNYii\nB5Nh\r\n=rGwB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE3GyH8+C3SsoG6Ix8F6qH1o6CtqVYFy3KtNqeK3reZDAiEA8W38niCEtG6dqLjNCnwoIgdnj+pnTlsCrE+tomopA/U="}]},"_npmUser":{"name":"fredamsouza","email":"fredericoamsouza@gmail.com"},"directories":{},"maintainers":[{"name":"gmotruk","email":"g@motruc.com"},{"name":"gonrial","email":"gonrial@gmail.com"},{"name":"fredamsouza","email":"fredericoamsouza@gmail.com"},{"name":"jbmikk","email":"jbmikk@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/create-cleverstarter_0.1.0_1607875644861_0.3773379562326413"},"_hasShrinkwrap":false},"0.1.1":{"name":"@clevertech.biz/create-cleverstarter","version":"0.1.1","description":"A Full-stack TypeScript GraphQL Project Template","main":"bin/index.js","license":"MIT","engines":{"npm":">5"},"bin":{"create-cleverstarter":"bin/index.js"},"devDependencies":{"@commitlint/cli":"^8.3.5","@commitlint/config-conventional":"^8.3.4","husky":"^4.2.3"},"dependencies":{"chalk":"^4.1.0","fs-extra":"^9.0.1","inquirer":"^7.3.3","meow":"^8.0.0","mkdirp":"^1.0.4"},"gitHead":"2d82ebeaf05751c028808da32c5491d15c29f193","_id":"@clevertech.biz/create-cleverstarter@0.1.1","_nodeVersion":"15.3.0","_npmVersion":"7.0.14","dist":{"integrity":"sha512-o64k5YaXcRtLzIAhyXR7AZ26EOKFHPGAHDyxTU1AEEL9MggNwq+D5uB9AixwcEgLFpVlNouxB8eI48BKRxjkOA==","shasum":"cdbc2e5f288cb3b3a6aced40b94a28d52cf5a043","tarball":"https://registry.npmjs.org/@clevertech.biz/create-cleverstarter/-/create-cleverstarter-0.1.1.tgz","fileCount":204,"unpackedSize":2005222,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf1j0VCRA9TVsSAnZWagAAr7sP/RPmhnL/RXbOboObIigL\nrHXxBF5dcek0DN6jkJy85CXbqjPBDKKGUU6v1+yQY+MdcBrOBOuYOLM/5T6U\nMPd7ZKPjtMXE331JRuxkxSEUQnXD6mgz3dbBlR0iGmpGBKAafcsxxBoyela9\nv+2QcjCBAtTE1a84xLq/ZIDT7LpzfvoUZcNRzWFWhPOAbhxKgLj6btbLNDry\nlBUlrHuoZmI4RO/YnwjNjUWbXYYl2MS0tsJbQPf4ZeU7CUMkF4JRl6v2olKW\nLr7SIywEJSF/9PvVd8v1DS2sWve9yvRJVum2W7+N5Ja9Gga+33SxlmNohBPp\nk47OnASKhDyzMylN6Xe4Io8thwg3XDxyilGGwIDGvQxAKMTtPn3ThpTmoZtG\nkwH2ClVTujXnDJUvZ9foAOhqhTV/5LRmhcEXn+nLod7dIVflAY4k3aRa27Xu\nC/ykjw5HoIZtxAaZGJG4jRGZTVOmxgoowazTjuSFV8g8FagUY5PM0P7QPg7P\nx847YPiFXnG6I2HubI8ZufQyKjsnKyTLtMk5hPOY50s2QtFspkBe+JEvXblZ\n/AaRk5aDX0dp4TZX66oIfk2GDj2ryTN4uajvW4JUyEmGyGi3NyRCl88PijHG\nPh9gkZl3U8ecCwuS2oIphFVxaXxuResAlGJMSxxF1zUDTrA7zTITEdJgeIW2\ni5WY\r\n=BC/v\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCSHvHnwgRTuFJrAKMRYebdNdaGmPQVKy9gTCoXpRMo2QIhAPQ9ATDZAdk8oWEKOspzA/+q2C3Ak7Por2BgXvayqx1n"}]},"_npmUser":{"name":"fredamsouza","email":"fredericoamsouza@gmail.com"},"directories":{},"maintainers":[{"name":"gmotruk","email":"g@motruc.com"},{"name":"gonrial","email":"gonrial@gmail.com"},{"name":"fredamsouza","email":"fredericoamsouza@gmail.com"},{"name":"jbmikk","email":"jbmikk@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/create-cleverstarter_0.1.1_1607875860807_0.6189242004686737"},"_hasShrinkwrap":false}},"time":{"created":"2020-08-26T22:04:48.069Z","0.0.1":"2020-08-26T22:04:48.509Z","modified":"2022-04-04T23:17:26.946Z","0.1.0":"2020-12-13T16:07:25.146Z","0.1.1":"2020-12-13T16:11:01.145Z"},"maintainers":[{"email":"g@motruc.com","name":"gmotruk"},{"email":"gonrial@gmail.com","name":"gonrial"},{"email":"fredericoamsouza@gmail.com","name":"fredamsouza"},{"email":"jbmikk@gmail.com","name":"jbmikk"}],"description":"A Full-stack TypeScript GraphQL Project Template","license":"MIT","readme":"# Cleverstarter\n\n## A Full-stack TypeScript GraphQL Project Template\n\n1. Reduce time to MVP\n2. Reduce developer pain-points\n3. Provide a robust foundation for Enterprise scale\n\n## Quickstart\n\nEnsure you have [npm](https://www.npmjs.com/get-npm) and [git](https://github.com/git-guides/install-git).\n\nGiven the above dependencies, run the following in a terminal as a regular user:\n\n```\nnpm init @clevertech.biz/cleverstarter\nnpm start\n```\n\nFamiliarize yourself with the contents of `./<project>`\n\n## What & Why?\n\n1. **React**\n  * Why: Standard, robust, well-known client library\n  * Docs: https://reactjs.org\n  * Known Alternatives: Angular\n2. **Express**\n  * Why:  Standard, robust, well-known server library\n  * Docs: https://expressjs.com/   \n  * Known Alternatives: Koa\n3. **Apollo** Client / Server:\n  * Why: decouple the frontend from the backend: \n  * Docs: https://www.apollographql.com/docs/\n  * Known Alternatives: Postgraphile and Relay Modern\n4. **TypeScript**\n  * Why: Typed JavaScript scales better and results in less bugs\n  * Docs: https://www.typescriptlang.org/\n  * Known Alternatives: write new code in JavaScript and leave the existing TypeScript\n5. **TypeGraphQL**\n  * Why: Using decorators and classes, quickly define schema in a modular, maintainable way\n  * Docs: https://typegraphql.com/\n  * Known Alternatives: Apollo lets you build your schema by hand\n6. **TypeORM**\n  * Why: Manage Database and GraphQL schema with the same classes\n  * Docs: https://typeorm.io/\n  * Known Alternatives: Sequilize\n9. **Jest** for unit tests\n  * Why: Delightful unit testing framework, easy to mock imports for isolated unit testing\n  * Docs: https://jestjs.io\n  * Alternatives: Mocha / Jasmine / Karma\n10. **Supertest** for integration tests\n  * Why: Easily test HTTP endpoints for full integration\n  * Docs: https://github.com/visionmedia/supertest\n  * Known Alternatives: Perform integration tests on the endpoint methods with Jest\n11. **Cypress** for e2e testing\n  * Why: Professional, well-loved E2E testing framework for web applications\n  * Docs: https://cypress.io\n  * Alternatives: TestCafe\n12. **Passport** OIDC Relay Provider Strategy\n  * Why: offload most auth logic to a hosted UI (like AWS Cognito) which supports Enterprise IdP integration\n  * Docs: https://github.com/panva/node-openid-client\n  * Alternatives: SAML, Local Auth, and any other passport.js strategy\n13. **Documentation**: A detailed, helpful readme in each folder\n  * Why: Knowledge is lost unless it is written down\n  * Docs: makeareadme.com\n  * Alternatives: GitHub Pages / Wiki\n\n***Note:* Skim through as much of the above documentation as you can (skip but observe) to set yourself up for success**\n\n## Usage\n\nBecause Cleverstarter is a template, running the initializer is all you need to \"use\" the starter.\n\nFrom there, you must know your domain language and begin building out your API and client-side application.\n\nTo assist you in this process, we will describe the various components of the application\nwith README files in their respective directories\n\nSee [above](#cleverstarter) for links to the documentation of the variuos tooling we use.\n\n### Tutorials\nTutorials could be added to this section w.r.t. how to do common tasks within the starter like:\n* Logging in, logging out, and protecting new resources\n* Adding new resolvers to the schema\n* Adding new routes to the frontend\n* Querying data with Apollo\n* Handling cache updates in Apollo\n* N+1 Data Loader\n\n## Contributing\nPull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.\n\n1. Clone down the code:\n```\ngit clone git@github.com:clevertech/cleverstarter.git\n```\n\n2. Start the watchers:\n```\ncd cleverstarter\nnpm start\n```\n\n3. Then edit the files in the template folder:\n* template/api\n* template/web/apollo-react\n* template/mobile\n\n### Tests\n\nRunning `npm test` in the root of each template will verify all tests continue to pass.  \nRun `npm test` in the top-level folder of this repository to verify all tests still pass before committing.\nPlease make sure to update and add tests as appropriate.  Aim for over 80% coverage.\n\n## License\n[MIT](https://choosealicense.com/licenses/mit/)\n","readmeFilename":"README.md"}