@jsdrome/ipwa

3.11.0 • Public • Published

Pipeline

⭐️ Star us on GitHub — it helps!

iPWA

🔥 Isomorphic progressive web native cloud monorepo generator with a codebase with only code.

How this works

Usually, when a product grows, it becomes inevitable that there are 2 apps - for web and for native. You will then need a web frontend team, native frontend team, a design team, a backend team, a devops team and QA. This repository aims to abstract most of those things so that you can focus on only one thing - creating stuff.

iPWA's purpose is to spin up a new project with everything setup. All you need to do is set the configurations and the rest is magic.

Features

  • React, Redux (Web)
  • React-native, Expo (Native)
  • Node JS, Express (Backend)
  • Docker, Helm, Terraform (Infra)
  • Heroku, Firebase (Deployment)
  • Jest, Cypress, Puppeteer, Percy (Tests)

Demo

How we use it

When code is merged to master, we perform the following:

  • Sanity Check - Builing, linting, unit tests.
  • Staging in Heroku - Build a docker image and deploy it in Heroku.
  • Regression tests - Run unit tests, Cypress tests, Puppeteer tests and Percy tests and upload the reports.
  • Release docker image - Build and publish docker image to Dockerhub or GCR.
  • Release Firebase - Deploy the isomorphic progressive web app into Firebase.
  • Expo publish - Deploy the native app as OTA update.

Install

Install ipwa globally

npm i -g @jsdrome/ipwa

Create a new ipwa app

ipwa my-app install

This will create a new project called my-app in the current directory and install npm dependencies.

Setup

Set these runtime env vars in .env.

config_secrets__linkedin__clientId
config_secrets__linkedin__clientSecret
config_secrets__github__clientId
config_secrets__github__clientSecret
const config_secrets__sendInBlue__user
const config_secrets__sendInBlue__pass
config_secrets_ipwa_encryptKey
config_props__gtmId

Set these build time env vars (also in Github secrets)

IMAGE_NAME
HEROKU_APP_NAME
HEROKU_API_KEY
CYPRESS_TOKEN
CYPRESS_PROJECT_ID
PERCY_TOKEN
DOCKER_USER
DOCKER_PASS
FIREBASE_APP_NAME
FIREBASE_TOKEN
EXPO_CLI_USERNAME
EXPO_CLI_PASSWORD
config_props__url

Change defaults in .configrc as necessary.

Development

Run app locally

npm run build:dev
npm run start:dev

Run app as docker container

Set IMAGE_NAME env variable in .env

npm run build:docker

Run unit tests

npm run test

Run cypress tests

npm run test:cypress

Run puppeteer tests

npm run test:puppeteer

Package Sidebar

Install

npm i @jsdrome/ipwa

Weekly Downloads

0

Version

3.11.0

License

ISC

Unpacked Size

6.79 kB

Total Files

3

Last publish

Collaborators

  • sreerampr