Flutter, GraphQL, GoLang, Docker | Technologies for fast development.

Najy Fannoun
4 min readApr 16, 2021

--

Developing fast will save you time and make your hourly pay rate higher, in this article I will show you great technologies, frameworks, and programming languages that big tech companies use. And it’s highly recommended to learn.

Flutter

Flutter is a great toolkit from Google to develop applications for Android, iOS, Linux, Mac, Windows, Google Fuchsia, and the web from a single codebase. I have been working with Flutter since June 2019 and I developed games, streaming, and educational apps with it.

All my work was using the Reactive Programming concept and I used rxdart package for that purpose, it helps for creating readable clean code using BloC pattern. I saw some repositories on GitHub that use the flutter bloc package to create files and maintain streams which I see as boilerplate code and over-engineering that makes some features are not possible to implement in that way.

Why should you learn Flutter?

  • Easy to learn, easy to develop with.
  • One code, many platforms.
  • Native apps with really beautiful UI.
  • High performance and smooth animation.

GoLang

Since I started programming using C++ at college to solve problems, Go was my C++ to write cloud functions, it makes backend development fun.

I used Go to handle database events like sending notifications when a new record has been inserted, authentication and authorization using JWTokens. In addition, to control some apps/games functionalities.

Note: Firebase was my tool for notifications and JWTokens.

Why should you learn Go?

  • Simplicity: code is elegant, maintainable, easier to understand and test.
  • Fast, high performance.
  • One binary file after compiling your code.
  • It’s a great choice for microservices.
Hello World Go web application

GraphQL

GraphQL is a query language and we can call it “a technology”. GraphQL lets you bring what you want in a single query (request) which means you don’t need to create different APIs for that purpose. in that way you gonna save tons of hours working on developing APIs, whatever your data source is you can use GraphQL to GET, INSERT, UPDATE, DELETE and listen to data changes without writing a line of code to create APIs for that purpose.

You will have three types of queries:

  1. Query for reading data.
  2. Mutation for writing data.
  3. Subscription for receiving real-time data.

To make things easier to implement I will introduce so-called Hasura GraphQL Engine which gives you instant GraphQL APIs on your data sources.

Hasura GraphQL Engine

I have used this solution in many projects which one of them handles more than 100 thousand users, it saves my time of not creating APIs for each feature, you can do whatever you want with one GraphQL query. In addition, Hasura has features like:

  • Flexible GraphQL API.
  • Creating different types of events and triggers over your data.
  • Authentication and authorization are easy to implement.
Hasura events section

Why should you use GraphQL?

  • Request for what you want in a single query.
  • Querying databases from client-side applications so no need for APIs.
  • Good for microservices.
  • Subscription queries make “real-time data” features easy to implement in your applications.
subscription {
messages {
content
from_id
to_id
timestamp
}
}

Docker

Everything is a container. Docker is a software platform for building applications based on containers.

I used docker to host all my back-end section on a VPS such as GoLang cloud functions, Hasura GraphQL Engine, databases, and websites and each of these is a container.

Why should you use Docker?

  • Faster software delivery, especially when it comes to delivering new features into production.
  • Efficient use of system resources.
  • Docker is cross-platform.
  • Each container can be a microservice.

Note: you can use a tool called Portainer for managing your containers which is also a container on your Docker.

Conclusion

What makes all of the previous technology stacks great that it helps you deliver your application faster to your customer, in addition to that you build an elegant, fast, maintainable, growable application.

To learn more about the Author, visit his pages on GitHub and LinkedIn.

--

--