{"id":23919208,"url":"https://github.com/simpleweb/romulus-cli","last_synced_at":"2026-03-08T21:33:49.454Z","repository":{"id":41432426,"uuid":"83542953","full_name":"simpleweb/romulus-cli","owner":"simpleweb","description":"Brings structure to your React Native apps","archived":false,"fork":false,"pushed_at":"2023-07-11T15:49:33.000Z","size":717,"stargazers_count":35,"open_issues_count":4,"forks_count":4,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-09-22T02:52:25.617Z","etag":null,"topics":["cli","open-source","react","react-native","redux","redux-saga","typescript","yeoman-generator"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/simpleweb.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2017-03-01T10:35:41.000Z","updated_at":"2024-06-13T13:03:49.000Z","dependencies_parsed_at":"2023-01-23T04:15:42.617Z","dependency_job_id":null,"html_url":"https://github.com/simpleweb/romulus-cli","commit_stats":{"total_commits":312,"total_committers":9,"mean_commits":"34.666666666666664","dds":0.5865384615384616,"last_synced_commit":"965e445f3faeb607b4a4aa97ef18456a3182f527"},"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"purl":"pkg:github/simpleweb/romulus-cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simpleweb%2Fromulus-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simpleweb%2Fromulus-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simpleweb%2Fromulus-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simpleweb%2Fromulus-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/simpleweb","download_url":"https://codeload.github.com/simpleweb/romulus-cli/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simpleweb%2Fromulus-cli/sbom","scorecard":{"id":825684,"data":{"date":"2025-08-11","repo":{"name":"github.com/simpleweb/romulus-cli","commit":"965e445f3faeb607b4a4aa97ef18456a3182f527"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.4,"checks":[{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":10,"reason":"all changesets reviewed","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/test.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:10: update your workflow using https://app.stepsecurity.io/secureworkflow/simpleweb/romulus-cli/test.yml/main?enable=pin","Warn: npmCommand not pinned by hash: .github/workflows/test.yml:15","Info:   0 out of   1 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 npmCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"19 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-968p-4wvh-cqc8","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-w573-4hg7-7wgq","Warn: Project is vulnerable to: GHSA-phwq-j96m-2c2q","Warn: Project is vulnerable to: GHSA-ghr5-ch3p-vcr6","Warn: Project is vulnerable to: GHSA-pfrx-2q88-qq97","Warn: Project is vulnerable to: GHSA-675m-85rw-j3w4","Warn: Project is vulnerable to: GHSA-6c8f-qphg-qjgp","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv","Warn: Project is vulnerable to: GHSA-f8q6-p94x-37v3","Warn: Project is vulnerable to: GHSA-vh95-rmgr-6w4m","Warn: Project is vulnerable to: GHSA-xvch-5gv4-984h","Warn: Project is vulnerable to: GHSA-9wv6-86v2-598j","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-4g88-fppr-53pp","Warn: Project is vulnerable to: GHSA-4jqc-8m5r-9rpr","Warn: Project is vulnerable to: GHSA-52f5-9888-hmc6"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-23T16:35:41.111Z","repository_id":41432426,"created_at":"2025-08-23T16:35:41.111Z","updated_at":"2025-08-23T16:35:41.111Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30274409,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-08T20:45:49.896Z","status":"ssl_error","status_checked_at":"2026-03-08T20:45:49.525Z","response_time":56,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["cli","open-source","react","react-native","redux","redux-saga","typescript","yeoman-generator"],"created_at":"2025-01-05T14:30:17.316Z","updated_at":"2026-03-08T21:33:49.436Z","avatar_url":"https://github.com/simpleweb.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ⚛️ romulus-cli \u0026middot; [![npm version](https://img.shields.io/npm/v/romulus-cli.svg)](https://www.npmjs.com/package/romulus-cli) ![GitHub Workflow Status](https://img.shields.io/github/workflow/status/simpleweb/romulus-cli/Tests) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](.github/CONTRIBUTING.md#sending-a-pull-request)\n\n`romulus` is a tool designed to **provide structure** and a **set of patterns**\nfor React Native applications.\n\nIt should help eliminate the time you spend bootstrapping each project and\ngive you consistency between your application builds.\n\nWhile this comes with some opinion, there’s no overarching framework on top of\nReact Native; it’s purely a collection of commonly used modules and some sensible\narchitecture to get you or your team off the ground.\n\n## What does it do?\n\n- [Features](#features) - adds a set of commonly required features (e.g. Redux setup,\n  offline storage, environment variables and more) by taking advantage of great\n  community driven packages\n- [Structure](#structure) - provides a sensible structure for your applications that helps bring\n  consistency within your team or just between your own applications\n- [Scaffolding](#documentation) - makes it easy to scaffold new components, reducers\n  and scenes that follow the same style and structure\n\n## Example application\n\n[View the example application](https://github.com/simpleweb/romulus-example) created with Romulus\nto get an idea of what `romulus init` does. The application is ready to be cloned down and ran\nstraight away onto a device or simulator.\n\n## Installation\n\n```\nnpm install -g romulus-cli\n```\n\n```\nyarn global add romulus-cli\n```\n\nDon’t want to install anything? You can run the commands directly using\n`npx` (available with `npm@5.2.0`).\n\n```\nnpx romulus-cli init\n```\n\n## Getting started\n\nCreate a new React Native project using their CLI tool.\n\n```\nnpx react-native init MyApp --template react-native-template-typescript\ncd MyApp\n```\n\n\u003e You need to ensure you have the correct cli installed for this command to succeed.\n\u003e\n\u003e ```\n\u003e npm uninstall -g react-native-cli\n\u003e npm i -g @react-native-community/cli\n\u003e ```\n\nOnce this is complete, simply run the main generator command. This will rework\nand add to the files that are generated by React Native and give you something\nmore akin to what you might find with `rails new`.\n\n```\nromulus init\n```\n\n## Features\n\n- A sensible `README` providing consistent instructions between projects\n- TypeScript support\n- Router using `react-navigation` (v5)\n- Redux setup (optional)\n  - Store is persisted using `redux-persist`\n  - Helpful state changes logged in the debugger using `redux-logger`\n  - Actions are prevented from being dispatched before the cache is restored\n- `react-query` setup (optional)\n  - Makes it easy to get setup with `react-query`\n  - Replaces Saga and Redux architecture\n- UI niceities\n  - CSS-in-JS support for `styled-components`\n  - Start to a styleguide to list your components\n  - Example Button component\n  - Layout component example to DRY up screen layouts\n  - Pattern to organise components and their styles\n- Helpful utilities\n  - `log` helper to output coloured logs to the debug console\n  - Visual display of your app’s environment while it’s running, this gets hidden\n    in production\n- Optional support for different locales using `react-native-i18n`\n- Environment variables available in JavaScript, Objective C and Java using\n  `react-native-config`\n- Sagas (to handle async tasks like HTTP requests) using `redux-saga` (optional, not available with `react-query`)\n- Initial setup for deep linking\n- Requests are set up to be handled with `axios` with clear logging in the\n  debugger provided\n- Automatic versioning of iOS and Android versions based on the `package.json`\n  version\n- Generic app icon that can be processed through a separate generator to handle\n  all your iOS and Android icons\n\n### Structure\n\nAfter running the `base` command, on top of the features above your application\nwill then receive this structure.\n\n```\nApp/\n├── @types/\n│   └── index.d.ts\n├── Actions/\n│   ├── App.ts\n│   └── index.ts\n├── Assets/\n│   └── AppIcon.png\n├── Components/\n│   ├── App/\n│   │   └── index.tsx\n│   ├── Button/\n│   │   ├── index.tsx\n│   │   └── styles.ts\n│   ├── Layout/\n│   │   ├── index.tsx\n│   │   └── styles.ts\n│   ├── Text/\n│   │   ├── index.tsx\n│   │   └── styles.ts\n│   ├── Utilities/\n│   │   └── Environment/\n│   │       ├── index.tsx\n│   │       └── styles.ts\n│   └── Router.tsx\n├── Config/\n│   ├── Locales/\n│   │   └── en.json\n│   └── index.ts\n├── Helpers/\n│   ├── Translations.ts\n│   └── Log.ts\n├── Reducers/\n│   ├── App.ts\n│   └── index.ts\n├── Sagas/\n│   ├── index.ts\n│   └── RequestExample.ts\n├── Screens/\n│   ├── index.ts\n│   ├── Main.tsx\n│   └── Styleguide.tsx\n├── Services/\n│   └── API/\n│       ├── index.ts\n│       └── logging.ts\n├── Store/\n│   ├── Middleware/\n│   │   ├── Buffer.ts\n│   │   ├── index.ts\n│   │   ├── Logger.ts\n│   │   └── Saga.ts\n│   └── index.ts\n├── Theme/\n│   └── index.js\n├── index.tsx\n└── Theme.ts\n```\n\n## Documentation\n\n- [Scaffolding](docs/commands.md)\n\n## Manual Notes\n\n### After `romulus init`\n\nFollow the Android version of these instructions to add automatic build numbers.\n\n[https://medium.com/@andr3wjack/versioning-react-native-apps-407469707661#.quhgn05gf](https://medium.com/@andr3wjack/versioning-react-native-apps-407469707661#.quhgn05gf)\n\n## Resources\n\n- [Introduction to Sagas](https://redux-saga.github.io/redux-saga/docs/introduction/BeginnerTutorial.html)\n- [A great simple intro to Redux Sagas](https://www.youtube.com/watch?v=msx0Qiu8NxQ\u0026list=PLw7fHewFA6OTyUnLiZ1HQvYdzjp9ARMQw)\n- [Intro to Redux](http://redux.js.org/docs/basics/Reducers.html)\n- [TypeScript](https://www.typescriptlang.org/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimpleweb%2Fromulus-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsimpleweb%2Fromulus-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimpleweb%2Fromulus-cli/lists"}