3.11.0 ā€¢ Published 4 years ago

@jsdrome/ipwa v3.11.0

Weekly downloads
-
License
ISC
Repository
github
Last release
4 years ago

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
3.11.0

4 years ago

3.10.0

4 years ago

3.9.0

4 years ago

3.8.0

4 years ago

3.7.0

4 years ago

3.6.0

4 years ago

3.4.0

4 years ago

3.3.0

4 years ago

3.2.0

4 years ago

3.1.0

4 years ago

3.5.0

4 years ago

2.86.0

4 years ago

2.85.0

4 years ago

2.84.0

4 years ago

2.83.0

4 years ago

2.82.0

4 years ago

2.81.0

4 years ago

2.80.0

4 years ago

2.79.0

4 years ago

2.78.0

4 years ago

2.77.0

4 years ago

2.76.0

4 years ago

2.75.0

4 years ago

2.74.0

4 years ago

2.73.0

4 years ago

2.72.0

4 years ago