Skip to content

Instantly share code, notes, and snippets.

@ivikash
Last active September 8, 2017 05:14
Show Gist options
  • Save ivikash/5dbe851b569cd2b5e7291e096baa4aa2 to your computer and use it in GitHub Desktop.
Save ivikash/5dbe851b569cd2b5e7291e096baa4aa2 to your computer and use it in GitHub Desktop.

Tech Stack

Type of Programming

Prefer functional, reactive and declarative programming instead of imperative programming.

Prefer Test Driven Development to ensure deterministic code base

Functional Programming

Ramda is a trusted library to write functional code. This will ensure composibility of functions and testability. Ramda gives you a lot of constructs to ensure that code is concise

Javascript vs Typescript

Prefer Typescript as it will ensure that codes are generally bug free on production and you dont get x is not defined. With react you can have tsx files for jsx

State management

Prefer redux-observables over redux so that async handling becomes a peace and state is stream based

View Management

For PWA sizes are of major concern. Evaluate Preact and Preact-compat once over react

Observables

Try to demo all the above once with RxJS. This will help to do build streams, test and handle async. Explore most.js as well

Webpack 3

Try to make a small architecture using all the above and find the bundle size. Also, for all the above Rx would be of maximum size. So try to do treeshaking for that

Service Workers

Use manifest.json and service workers to pre-fetch and cache data as much as possible. Use name spacing and versions to burst cache.

Server Side Rendering

Always! This will ensure that the page loads faster and give traction to product and make consumers happy.

PRPL

  • Push critical resources for the initial URL route.
  • Render initial route.
  • Pre-cache remaining routes.
  • Lazy-load and create remaining routes on demand. Do this since day 1

API

Use GraphQL for queries so that you don't have to write logic at client end and this will slow the performance.

Deployment

Because this will be a new project, since day 1 make continuous integration and continous delivery a part of the project so that you dont have to worry at the last moment

Keep master for production and development branch for staging-1 and UAT. Also have one more server where you can deploy any branch for testing production.

Keep staging as close to production as possible

Travis

Make this a part of build process and ensure all tests are passing before deployment else dont deploy

You can also use Jenkins for deployment and testing.

NOTE

Best way to do all this would be make a demo app with everything for a few days and then take the call. A good idea for the application would be making a sound cloud app or an youtube app.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment