{"id":15792670,"url":"https://github.com/nfour/rram-ts","last_synced_at":"2025-03-31T18:50:48.038Z","repository":{"id":149654854,"uuid":"87632814","full_name":"nfour/rram-ts","owner":"nfour","description":"rram but in ts","archived":false,"fork":false,"pushed_at":"2017-04-08T13:07:04.000Z","size":8047,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-10-11T23:14:10.991Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nfour.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-04-08T12:37:52.000Z","updated_at":"2017-04-08T13:07:05.000Z","dependencies_parsed_at":null,"dependency_job_id":"0c3d1a7a-2d8e-4232-8df8-3244f1fd4867","html_url":"https://github.com/nfour/rram-ts","commit_stats":{"total_commits":259,"total_committers":5,"mean_commits":51.8,"dds":"0.10810810810810811","last_synced_commit":"dc87e5f2c9aaf458bbfb6bbffcd8e5a1b38f6127"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nfour%2Frram-ts","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nfour%2Frram-ts/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nfour%2Frram-ts/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nfour%2Frram-ts/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nfour","download_url":"https://codeload.github.com/nfour/rram-ts/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246523896,"owners_count":20791444,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-04T23:02:41.366Z","updated_at":"2025-03-31T18:50:48.010Z","avatar_url":"https://github.com/nfour.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ca href=\"https://travis-ci.org/nfour/rram\"\u003e\n  \u003cimg src=\"https://travis-ci.org/nfour/rram.svg?branch=master\" /\u003e\n\u003c/a\u003e\n\u0026nbsp;\n\u003ca href=\"https://codecov.io/gh/nfour/rram\"\u003e\n  \u003cimg src=\"https://codecov.io/gh/nfour/rram/branch/master/graph/badge.svg\" alt=\"Codecov\" /\u003e\n\u003c/a\u003e\n\u0026nbsp;\n\u003ca href=\"https://david-dm.org/nfour/rram\" title=\"dependencies status\"\u003e\u003cimg src=\"https://david-dm.org/nfour/rram/status.svg\"/\u003e\u003c/a\u003e\n\u0026nbsp;\n\u003ca href=\"https://codeclimate.com/github/nfour/rram\"\u003e\u003cimg src=\"https://codeclimate.com/github/nfour/rram/badges/gpa.svg\" /\u003e\u003c/a\u003e\n\n\u003cimg src=\"http://i.imgur.com/3XyJbkW.png\" /\u003e\n\n\n**_~630 kb_** of RRAM ought to be enough for anyone *(as of 2016-12-18)*.\n\nA project boilerplate \\\n **React**, **Redux**, **Airbnb** linted, **Modular** by design\n\n---\n\n- [Install](#install)\n- [Usage](#usage)\n- [Layout](#layout)\n- [Layout Convention](#layout-convention)\n- [Render Flow](#render-flow)\n- [Build System](#build-system)\n\n---\n\n## Install\n\n```bash\ngit clone https://github.com/nfour/rram \u0026\u0026 cd rram \u0026\u0026 yarn\n```\n\n## Usage\n\n- `yarn start`\n    - Starts up a `webpack-dev-server` on `http://localhost:8080/webpack-dev-server/`\n- `yarn run dash`\n    - Just like `yarn start`, but uses `webpack-dashboard`. This shows useful build info.\n- `yarn run build`\n    - Build to `./dist`\n- `NODE_ENV=production yarn run build`\n    - Production build to `./dist`\n\n---\n\n- `yarn test`\n    - Uses `jest`, runs unit tests\n- `yarn run test:unit`\n    - Same as `yarn test`\n    - Only runs `*.test.jsx?` files, not integration tests\n    - `yarn run test:unit -- --watch` to watch\n- `yarn run test:integration`\n    - Only runs `*.int.test.jsx?` files\n    - `yarn run test:integration -- --watch` to watch\n\n## Layout\n\n```js\n  `/index.jsx` // Routing, initialization \u0026 store creation\n  `/components/` // View related logic ONLY\n      `/${Component}/`\n          `/${Component}.jsx`\n          `/${Component}.scss`\n          `/${Component}.test.jsx`\n          `/SomeSubComponent.jsx`\n  `/containers/`\n      `/${Container}.js` // State assignment logic ONLY\n  `/store/` // Redux store management\n      `/${storeName}/` // This should map to store[storeName]\n          `/actions` // Redux actions\n          `/reducer` // Redux Reducers\n          `/sources` // (Optional) This is where you would pull in external data\n```\n\n## Layout Convention\n\n- Components:\n    - Should be entirely contained within its respective folder\n    - Should have all data passed in as props\n    - Should always be a stateless component\n        - Unless `class` features are needed, such as `state` and `componentDidMount`\n        - Should be wrapped in `pure` from `recompose`\n            - This will change as react matures to support this by default (also _fiber_)\n- Component naming:\n    - Use PascalCase\n    - If exporting `MyComponent`, the file would be `MyComponent.jsx`\n    - The component folder would be `MyComponent` as well\n    - For collections, use lowercase:\n        - ✓ `/components/pages/MyPage/MyPage.jsx`\n        - ✓ `/components/pages/index.js`\n- Do not abuse `index` files to make collection imports pretty\n    - This can induce race conditions when components rely on each other\n    - ✗ `/components/index.js` would be bad, as components can rely on each other\n    - ✓ `/components/pages/index.js` may be fine, as pages may be exclusive of each other\n    - ✓ `/components/errors.jsx` would be fine\n\n## Render Flow\n\nThe example below describes the flow of a typical render.\n\n```md\n| /index.jsx\n|___\n    | /store/index.js\n    |___\n        | /store/Example/reducer.js\n        | - Resolve reducers to state\n     ___|\n    |\n    | - Routes matched\n    |\n    | /components/Root/Root.jsx\n    |___\n        | /containers/Page.js\n        |___\n            | /components/Page/Page.jsx\n            | - Wraps children in a page layout component\n            |___\n                | /containers/Example.js\n                |___\n                    |\n                    | - Assign state to props\n                    | - Retrieve actions\n                    |___\n                        |\n                        | /store/Example/actions.js\n                     ___|\n                    |\n                    | - Bind dispatch to actions \u0026 assign to props\n                    |\n                    | /components/Example/Example.jsx\n                    |___\n                        |\n                        | - Renders\n                        |\n                        +\n```\n\n## Build System\n\nThe build system leverages `webpack` and `webpack-dev-server` exclusively\nand all build steps should be done through the npm scripts.\n\nThere are 3 build related files:\n- `webpack.config.js` The base config, used by `webpack` directly\n- `webpack.config.dev.js` Development related options\n- `webpack.config.prod.js` Production related options\n\nFor a custom build process:\n- Edit these files or create variants\n- Wire them up with `npm` scripts\n- Invoke `bash` scripts from a `./scripts/` folder\n\nThere is currently only one entry point, `./src/index.jsx`. \\\nA bit of tweaking to the `webpack.config.js` will yield multiple entries.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnfour%2Frram-ts","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnfour%2Frram-ts","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnfour%2Frram-ts/lists"}