Ionic PWA Example - Moment
An offline camera app built with PWA without any native framework.
| Onboarding | Installation | Capturing |
|---|---|---|
![]() |
![]() |
![]() |
| Photo Details | Dark Theme | I18n |
|---|---|---|
![]() |
![]() |
![]() |
- Organize the project structure by features
- Emulate native behavior on clicking Android hardware back button by
- using undocumented
NavControllerin Ionic - removing and re-adding the
iframeelement on itssrcis changed
- using undocumented
- Import common components, pipes, directives, services and modules to
SharedModule - Use mocks in test with testing injectables in DI
- Use virtual slides to greatly reduce memory usage on displaying full size images
- (WIP) use virtual scroll to reduce memory usage on displaying thumbnails
- Support offline mode after installed
- Store data locally
- Take photos in app (without using external camera app)
- Switch ALL different cameras on devices
- Collect GPS on taking photos
- Support i18n dynamically for English and Tranditional Chinese
- Localize date format dynamically
- Share photos to other apps
- Download photos to device storage
- View next/previous photo with swiping gesture
- Show EXIF of captured photos
- Show camera with device information
- View and zoom fullscreen photos with gesture
- Opt-in automatic error report
- Load thumbnail only for small size images
- Ionic Angular: front-end UI framework
- Strict template check
- ESLint for TypeScript and Angular
- RxDB: reactive database fully provide rxjs
ObservableAPIs @angular/pwa: PWA with Angular service worker- CD with GitHub Action PWA on GitHub Pages
- Transloco: support i18n and localized date format
- WebRTC: for in-app camera access and preview
- Experimental
ImageCaptureAPI: provide full resolution image capturing
- Experimental
- Web Geolocation API: provide native GPS information
- Web Share API level 2: provide native sharing APIs
- ExifReader: extract image metadata
- UAParser.js: user agent parser
- Pinch zoom for Angular: image viewer
- Swiper Angular: swiping slides
- Sentry: error report
- Compressor.js: create thumbnail
- NgRx/component: provide structural directive and pipe to handle
Observableefficiently and safely
This live-reload will not enable PWA features such as service worker.
npm run servenpm run test.cinpm run lintnpm run build.watch.pwa
lite-server --baseDir="www"





