Lattice

The premium Ionic 4 and Firebase/Google Cloud starter

Spend more time building customer and business value. Waste less time on technical issues and manual process.

Save yourself months of effort by leveraging our years of experience building Ionic and Google Cloud based apps.

You need more than a code template...

A successful software project is much more than code for a few screens and plugins. High performance software teams use modern, essential software engineering practices such as DevOps, automated testing and continuous integration.

Greetings! Let me quickly introduce myself... I'm a software engineer/architect with 15 years of commercial experience. In that time I've worked on multi-million dollar projects for the largest investment and retail banks, insurance, defence and telecommunication companies in Australia.

For the last 4 years I've developed Ionic apps, from version 1 beta up to the new version 4, on the Google Cloud. Some of the apps I've help co-found, such as Verona and Just A Baby have even been featured in the mainstream media.

Lattice distills all that experience into a starter project which will save you countless hours and dollars developing and running your app. While you might not have the $10,000 spare to hire me for a month to build a solid foundation for your app project, this gives you the actual code I build my own apps on at a tiny fraction of the price of building it from scratch.

Lattice is the only Ionic starter project which integrates everything you need for the whole software development lifecycle. From continuous integration builds to production monitoring through integrations with GitLab and the Google Cloud Platform.

And all the essential plugins/libraries/SDKs are integrated in a way that supports multiple project/environment configurations, along with essential screens such as admin pages, profile page, etc

Secure by design

Enterprise mobile security firm Appthority released a report in 2018 that thousands of mobile apps have exposed over 113 gigabytes of data from 2,300 unsecured Firebase databases.
Security can't be an after thought in your app. Best practices are baked into the project setup, configuration and tests from the beginning to minimize the risk of a data or account breach.

Continuous Integration

Lattice comes with the scripts to run a continuous integration (CI) build pipeline using GitLab CI, running unit and integration tests.
Consistent builds and the automated test execution minimizes the risk of bugs being introduced to your production system from regression bugs and manual procedures. It also saves you time and money from automating essential test, build and deployment tasks.

GitOps

GitOps takes CI builds to the next level with specific branches handling deploying the code and configuration to App Engine and Firebase, and deploying your automated Android build to the Play store.
Most importantly it handles multiple environments. Commits to regular branches will be built and testing using a CI project, while merges to the QA or production branch will build and deploy to those environments.
This gives you more certainty and traceability to whats in your production and other environments. And makes rolling back a change as easy as reversing a commit in Git.

Performance analytics

Integration with the Google Cloud Stackdriver Trace service gives you insight into how your app is performing
Trace makes it easy to check how new versions of your server software are performing, and identify slow API calls so you can easily improve the experience for your customers.

Error reporting

How do you monitor errors in the native or web apps? The integrated Angular error reporting service in the app sends any client errors to the server so you can view them in the logs.
Integration with the Google Cloud Stackdriver Error Reporting service gives you actionable insight into any application errors.
The Error Reporting service groups the same errors together, and can notify you about new errors so you can quickly take action when application or service errors occur.

Automation

  • Advanced, but simple to use, project setup supports multiple environments eg, dev, QA, continuous integration and production.
  • NPM scripts refined over the years make routine tasks, such as deploying to the app stores, a single time saving command.
  • Integration with GitLab and Google Cloud to provide the full software development lifecyle of continuous integration, performance analytics, consolidated logging and error reporting in production.

Ionic Framework

Lattice is built using the Ionic version 4 release candidate with the Angular module. Integrated are all the nice-to-haves such as lazy loaded sub-modules, PWA support, and our utils and services refined over the last few years such login sequence management, unit test support, user/profile management and more.


Google Cloud Platform Support

Lattice comes with first-class support for running the Node.js server application on the Google App Engine, and serverless functions.

App Engine

App Engine project using the Node.js 10 standard environment, providing 28 free hours/month. Koa 2 web app with Firebase Auth integrations and common route functionality

Cloud functions

Firebase functions provide integrations to Auth, Firestore and HTTP functions for the admin functionality. Multi-environment support and support for local HTTP functions in development.

Firestore

Access to Firestore is

FCM (Push)

Firebase Cloud Messaging integration for both native and web/PWA, with multi-environment support.

Authentication

Email and Facebook authentication intially supported, with phone and more coming soon.

Cloud SQL

Optional Cloud SQL integration provided for relational data (coming soon).


A sample of the functionality in the starter project includes:

  • .gitignore file configured to exclude all the generated files which shouldn't be committed to source control
  • New users are copied into Firestore and registered into a MailChimp email list
  • Facebook authentication, which copies profile data from Facebook
  • Login service to encapsulate the logic which which screens to go to in the login sequence (e.g. location setup, accept terms & conditions, profile setup, then home page or another if opened from a push notification)
  • Contact page and social sharing
  • Page Objects in the end-to-end protractor tests for good test code design
  • Protractor and Karma configuration automatically choose the appropriate Chrome configuration running tests in a development or headless environment
  • TestUtils class with all the required services provided or mocked for easy test development
  • AngularFireModule module initialised using the values from the environment specific generated values
  • Internationalisation using ngx-translate, initialised with the custom factory to make it work on the native builds
  • Service worker for Firebase web push notifications configured for the selected backend environment
  • App debug functionality to send a test push notification and submit app details and error logs
  • Jest used for App Engine and Firebase functions unit and E2E testing
  • Koa 2 used in the Firebase HTTP function and App Engine. Native async/await support provides more elegant code than Express
  • Koa 2 middleware for protecting API routes which require authentication or admin role.
  • Firebase/Google Cloud modules auto-configure to use the default credentials when running in AppEngine/Cloud Functions, otherwise look for a key file in a specific format
  • NPM script for adding the Facebook plugin and enabling CORS in cloud storage - all driven from the centralised configuration file
  • NPM scripts to automate building, testing and deploying to App Engine, Firebase for multiple environments
  • NPM scripts to automate building and deploying the native app to the Play and iOS store
Admin functionality
  • View all admins
  • Add/remove admin role to other users
  • Search for users by id or email
  • View reported content
  • Remove reported content
  • Ban a user

High Quality TypeScript

Don't waste your time with low-quality starter code!
Lattice uses the strictest Typescript compiler settings to minimize potential bugs. Language features such as partial types used where possible to enable more static type checking, minimizing bugs and increasing your confidence to refactor.
The frameworks, file structure and design has all been thought out to make the code base as clean as possible.

Centralised data model typings

The AppEngine, Firebase and app projects are configured to share the same TypeScript data model interfaces. So you can ensure strong typing throughout your projects, minimizing type errors.


Simplified Configuration and Deployment
with multiple environment support

Lattice supports building and deploying your app to multiple backend environments, such as development, QA and production, and automatically configuring the appropriate API keys etc for the other services integrated.
Follow the step-by-step documentation to populate the centralised configuration file. Then the provided NPM scripts make building, testing and deploying for each environment a single command.

Setup

The development environment initialisation scripts use the configuration file to simplify the project setup.

Build

Scripts are provided which auto-configure from the configuration file to run the server and to build the mobile apps locally

Deployment

The simple scripts which deploy the server module and deploy the app builds to the Apple and Play store also use the configuration file to make it simpler, reduce errors and allow automation.


It's the little things that count

Just like the centralised configuration file, its all the small improvements which add up over time. You benefit from the improvements implemented from feedback by customers running real production apps.

Internationalisation

nxg-translate plugin integrated to make it easy to support multiple languages.


PWA Support

Generate the environment specific Service Worker for Firebase messaging, and the required integration to prompt to install

Client log submitter

Errors from the mobile apps are posted to the server logs for analysis.

Multi-environment support

All the code and scripts integrated to support dev, CI, QA and production environments from a single code base.

Optimised to reduce your runtime costs

Use of both the App Engine standard environment and Cloud Functions gives you a generous free-tier for your multiple environments.

Up-to-date

Updated to work with the latest releases of iOS and Android.

Cloud native

Integration with Google App Engine and Cloud Platform to easily monitor resources and scale as your app grows.

Rapid

Cross-platform scripts to quickly test, build and deploy your app to the app stores.

And more...


Open Source - Available on GitLab.com

https://gitlab.com/apporchestra/lattice