⭐️ 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 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
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.
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