The Web
You may have heard of this thing called the Internet, it’s getting rather popular. Web development is a giant ecosystem and while it’d be cool to have mastered all of it, that’s not possible, not even close. Our Web development practice falls into a couple of areas:
Application Development
Front-end
With React or Angular.io we can build robust web applications. React is more commonplace, but we do work with Angular 2+ as well. Common libraries used are:
- Redux
- When should you use redux? Redux is a powerful state management tool, but that comes at the cost of introducing additional indirection and reducing readability. Make that tradeoff wisely. If an app can function fine with React’s built-in state mechanics, use those. If a global state needs to exist, or if you find yourself traversing the state tree through many levels, consider using Redux.
- React Router
- Saga or Thunk
- Bluebird for better Promise performance.
- NGRX Store
- Since NGRX Store is similar to Redux, the same caveats of its use apply here too.
- And many more depending on the need of the particular project.
These applications are generally built by WebPack and written with ECMAScript 6, 7, or TypeScript.
Back-end
Our preferred platform for writing APIs and integrating with other platforms is node.js, specifically Hapi and its surrounding ecosystem. Hapi’s approach to development is incredibly well thought out and allows for full-control over the http request/response lifecycle, as well as enabling the developer to write succinct and well designed code.
Hapi by itself is not terribly interesting, but its power really comes through when it is used with the other libraries in its oeuvre:
- Joi for object & schema validation.
- Boom for quick error codes.
- Glue a rather poorly documented, but incredibly powerful library for declaratively defining a server configuration.
- Confidence when paired with Glue allows for filtering and switching in Glue configurations.
- Nes is the best websockets library out there.
- Wreck a great way to perform http requests.
Databases:
- PostgreSQL is preferred for relational data
- Mongo is a great database for document based data.
- Redis for caching and/or key/value storage.