⭐️ Star us on GitHub — it helps!
iPWA
Create isomorphic progressive web/native app monorepos which you can deploy in the cloud with ease.
Salient Features
- Frontend in React
- Backend in Node
- Native in Expo
- Isomorphic Web Apps
- Progressive Web Apps
- Unit testing using Jest
- Code coverage reports using Codecov
- Regression testing using Cypress, Puppeteer & Percy
- Docker containers
- Helm charts deployable in a Kubernetes Cluster
- Fully automated pipeline using Github actions
- Deployable in Dockerhub and Github Container Registry
- Deployable in Google Container Registry using Terraform(WIP)
- Deployable in npm and Github Package Register as npm package.
- Integrated with Google Analytics
- Integrated with Sentry
How this works
All you need to do is spin up a new project, sign up to a few providers, set the tokens and secrets correctly and the rest is all magic. When you push code to master, it will just be deployed everywhere in 10 minutes after a series of checks.
Setup Project
- Install ipwa
npm i -g ipwa
- Spawn a new ipwa app.
ipwa my-app
- Create new firebase project and set
FIREBASE_APP_NAME
and FIREBASE_TOKEN
secrets - Create new heroku app and set
HEROKU_APP_NAME
and HEROKU_API_KEY
secrets - Integrate project with Codecov and set
CODECOV_TOKEN
secret - Sign up to Docker and set
DOCKER_USER
, DOCKER_IMAGE_NAME
and DOCKER_PASS
secrets - Run npm run test:cypress:open, create a new project and set
CYPRESS_PROJECT_ID
and CYPRESS_TOKEN
secrets - Integrate project with Percy and set
PERCY_TOKEN
env variable - Sign up to npm and set
NPM_TOKEN
- create new Github project and push
Detailed Instructions
Run locally normally
Make sure npm dependencies are installed.
npm run dev
in one shell,
npm run nodemon
in another.
Run locally as a docker container
- Set the following environment variables locally.
npm run build-docker
Run locally as a helm app
Make sure minikube and helm are installed.
Set HELM_APP_NAME
environment variable.
Run locally:
npm run build:helm
npm run build:helm:uninstall
Run unit tests locally
npm run test
Setup Github actions
Set up the secrets given in the sections below.
Setup Codecov
- Sign up in Codecov and integrate it with your project.
- Set the following environment secrets.
Run locally:
npm run test:codecov
Run in CI: See workflow file.
Setup Cypress
- Sign up in Cypress and integrate it with your project.
- Set the following environment secrets.
CYPRESS_PROJECT_ID
CYPRESS_TOKEN
Run locally:
npm run test:cypress:run
Run in CI: See workflow file.
Setup Percy
- Sign up in Percy and integrate it with your project.
- Set the following environment secrets.
Run locally:
npm run test:percy
Run in CI: See workflow file.
Setup Puppeteer
Run locally:
npm run test:puppeteer
Run in CI: See workflow file.
Setup Heroku Deployment
Run locally:
npm run release:heroku
Run in CI: See workflow file.
Setup Firebase deployment
- Sign up in Firebase and integrate it with your project.
- Set the following environment variables locally.
Run locally:
npm run release:firebase
Run in CI: See workflow file.
Setup Github Container Registry release
Run locally: -
Run in CI: See workflow file.
Setup Dockerhub Container Registry release
Run locally: -
Run in CI: See workflow file.
Setup npm publishing
- Sign up in npm and integrate it with your project.
- Set the following environment secret.
Run locally: -
Run in CI: See workflow file.
Setup Expo
Run locally:
expo:start
expo:android
expo:ios
expo:web
expo:eject