{"id":19326406,"url":"https://github.com/thisissoon/nativescript-app-demo","last_synced_at":"2026-04-16T05:33:26.740Z","repository":{"id":72802176,"uuid":"135611310","full_name":"thisissoon/nativescript-app-demo","owner":"thisissoon","description":"An example iOS and Android app built with Angular and NativeScript. This repo also includes example build and publishing workflow using CircleCI to the Google Play Store and the Apple App Store.","archived":false,"fork":false,"pushed_at":"2020-04-11T04:08:04.000Z","size":3077,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-07-12T01:31:51.046Z","etag":null,"topics":["android-application","angular","google-play","ios-app","nativescript"],"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/thisissoon.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","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":"2018-05-31T16:49:42.000Z","updated_at":"2024-05-30T17:03:03.000Z","dependencies_parsed_at":"2023-05-30T09:15:30.768Z","dependency_job_id":null,"html_url":"https://github.com/thisissoon/nativescript-app-demo","commit_stats":null,"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"purl":"pkg:github/thisissoon/nativescript-app-demo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thisissoon%2Fnativescript-app-demo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thisissoon%2Fnativescript-app-demo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thisissoon%2Fnativescript-app-demo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thisissoon%2Fnativescript-app-demo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thisissoon","download_url":"https://codeload.github.com/thisissoon/nativescript-app-demo/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thisissoon%2Fnativescript-app-demo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31872631,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-15T15:24:51.572Z","status":"online","status_checked_at":"2026-04-16T02:00:06.042Z","response_time":69,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["android-application","angular","google-play","ios-app","nativescript"],"created_at":"2024-11-10T02:13:17.888Z","updated_at":"2026-04-16T05:33:26.724Z","avatar_url":"https://github.com/thisissoon.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SOON_ Native App Demo\n\nAn example [iOS][ios] and [Android][android] app built with [Angular][angular] and [NativeScript][nativescript]. This repo also includes example build and publishing workflow using [CircleCI][circleci] to the [Google Play Store][play-store] and the [Apple App Store][app-store].\n\n## Getting Started\n\nThis guide has been mainly influenced by nativescript docs on how to publish apps to app stores. This article [here][nativescript-publish] in particular is a good guide. This [video][nativescript-video] is also useful for iOS certificates and how they work.\n\n### Clone the repository\n\nTo get you started you can simply clone the repository using [git][git] and install the dependencies\n\n```bash\ncd path/to/parent/directory\ngit clone git@github.com:thisissoon/nativescript-app-demo.git --depth 1\ncd nativescript-app-demo\n```\n\n### Installation\n\nThere are three main dependancies you will need to install on your machine first to run and build this project:\n\n* [Node.js][nodejs] - Required to run the [NativeScript CLI][nativescript] and to build the [Angular][angular] bundle.\n* [Android SDK][android-studio] - Required to build the native [Android][android] app. You can get this by installing [Android Studio][android-studio]\n* [Xcode][xcode] __(OSX only)__ - Required to run and build iOS apps.\n\nOnce you have these dependancies installed you can install the [NativeScript CLI][nativescript] globally using [npm][npm] by running:\n\n```bash\nnpm install -g nativescript@latest\n```\n\nThen install local dependancies by running:\n\n```bash\nnpm install\n```\n\n## Development\n\n### Run iOS app (OSX only)\n\n```bash\nnpm run start:ios\n```\n\nUnder the hood this simply runs `tns run android`. Nativescript will then:\n* Compile and build the iOS app\n* Start the iOS simulator\n* Install the app on the simulator and launch it\n* Watch for changes and relaunch the app\n\n### Run Android app\n\n```bash\nnpm run start:android\n```\n\nUnder the hood this simply runs `tns run android`. Nativescript will then:\n* Compile and build the Android app\n* Start the Android simulator\n* Install the app on the simulator and launch it\n* Watch for changes and relaunch the app\n\n## Deployment\n\n### Deployment to Apple AppStore\n\n__TODO__\n\n\n### Deployment to Google Play Store\n\n#### Create a private key for your app\n\nUse the `keytool` tool to create a private key to sign your application with. This key basically is used to prove that you or your company are one's building the app . *Note:* This key must be used to sign all future versions of your app and is not replacable so keep it safe and secure.\n\nCreate your key by running the below and follow the prompts:\n\n```bash\nkeytool -genkey -v -keystore {my-key.jks} -keyalg RSA -keysize 2048 -validity 10000 -alias {my-alias} -keypass {my-secret-password} -storepass {my-secret-password}\n```\n\n\n#### Build first version of your app and sign it\n\nFirst replace all references of `com.thisissoon.demo` in this project with your own app id. Then build the app and sign it too ready to be published to the play store.\n\n```bash\nnpm run build:android -- --release --key-store-path \u003cmy-key.jks\u003e  --key-store-password \u003cmy-secret-password\u003e --key-store-alias \u003cmy-alias\u003e --key-store-alias-password \u003cmy-secret-password\u003e --copy-to \u003cmy-app.apk\u003e\n```\n\n#### Create your app in the Play Store\n\nFor the first release you'll have to upload your app to the Store manually. After that this can be automated.\n\nCreate an account and application in the [Google Play Console][google-play-console]. Then go to **Release_management** \u003e **App_releases**. There you will see some tracks for **production**, **open** and **closed**. For the first release I would recommend choosing a closed track as you can specify excatly who see's your app.\n\nClick the **Manage** \u003e **Create release** and where it says **Android App Bundles and APKs to add** upload your `.apk` file. Fill in the rest of the information and click **Review** and submit your app. This may take a few hours to appear in the app store. Make sure your also fill in the **Store presence** section as that must be done before your app can be published.\n\n#### Publish app through CircleCI\n\nOnce your app has been published you can then publish updates using [CircleCI][circleci] using [git][git] tags. [CircleCI][circleci] has been configured to build and publish the app when new tags are pushed to [GitHub][github].\n\nThe [CircleCI][circleci] build uses the [Google API Node.js library][google-api-node] to create a new edit and upload and commit the edit to any track you'd like. You'll need to create a [Google developer account][google-api-console] first and create a project for your Play Store apps. Then create a service account to use to authenticate api requests in [CircleCI][circleci].\n\nTo create a service account click on *burger menu* \u003e *IAM \u0026 Admin* \u003e *Service accounts* \u003e *Create Service Account*. Fill in the fields making sure to check `Furish a new private key` and download the key. *Note:* Keep this private key secure as this will allow anyone to make requests from your Google developer account.\n\nYou'll also need to link your [Play Store account][google-play-console] and [Google developer account][google-api-console] by going to the [Google Play console][google-play-console] then click on *Developer account* \u003e *API access* and link the service account.\n\nIn [CircleCI][circleci] select your project and click *Start building*. In the project settings you'll need to put in your `key-store-alias` as `KEY_STORE_ALIAS`, `key-store-alias-password` as `KEY_STORE_ALIAS_PASSWORD` and `key-store-password` as `KEY_STORE_PASSWORD` from the private key you used to sign your app in environment variables.\n\nYou'll also need to enter your private key from the Google service account as `PLAY_STORE_JWT`. Finally run in terminal run `cat {my-key.jks} | base64` to base64 encode your app's key and enter this into environment variables in [CircleCI][circleci] as `ANDROID_KEY_BASE64`.\n\n\n#### Making Releases\n\nRun `npm run release` to create a new release. This will use [Standard Version][standard-version] to create a new release. [Standard Version][standard-version] will generate / update the changelog based on commits generated using [Commitizen CLI][commitizen], update the version number following semantic versioning rules and then commit and tag the commit for the release. Simply run `git push --follow-tags origin master` to trigger a new build in [CircleCI][circleci] and publish a new version of your app.\n\n#### Making Commits\n\nThis repo uses [Commitizen CLI][commitizen] and [Conventional Changelog][conventional-changelog] to create commits and generate changelogs. Instead of running `git commit` run `git cz` and follow the prompts. Changelogs will then be generated when creating new releases by running `npm run release`.\n\n[circleci]: https://circleci.com/\n[android]: https://www.android.com/\n[ios]: https://www.apple.com/uk/ios/ios-11/\n[angular]: https://angular.io/\n[nativescript]: https://www.nativescript.org/\n[nativescript-publish]: https://www.nativescript.org/blog/steps-to-publish-your-nativescript-app-to-the-app-stores\n[nativescript-video]: https://www.youtube.com/watch?v=5gKuR2UCOnM\n[play-store]: https://play.google.com/store\n[app-store]: https://www.apple.com/uk/ios/app-store/\n[nodejs]: https://nodejs.org/en/\n[npm]: https://www.npmjs.com/\n[android-studio]: https://developer.android.com/studio/\n[git]: http://git-scm.com/\n[xcode]: https://developer.apple.com/xcode/\n[google-play-console]: https://play.google.com/apps/publish/\n[github]: https://github.com/\n[commitizen]: http://commitizen.github.io/cz-cli/\n[commitizen-badge]: https://img.shields.io/badge/commitizen-friendly-brightgreen.svg\n[conventional-changelog]: https://github.com/conventional-changelog/conventional-changelog\n[standard-version]: https://github.com/conventional-changelog/standard-version\n[google-api-node]: https://github.com/google/google-api-nodejs-client\n[google-api-console]: https://console.developers.google.com/apis/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthisissoon%2Fnativescript-app-demo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthisissoon%2Fnativescript-app-demo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthisissoon%2Fnativescript-app-demo/lists"}