Giter VIP home page Giter VIP logo

gomessenger's Introduction

Go + gRPC + Flutter = Awesome Chap App

Goals

I want to learn GO by building a small chat app with Go backend, Websocket or gRPC (in consideration) and React + Material UI or Flutter (in cosideration) frontend.

Why? My research suggested that Go is best for web application backend and microservices. The frontend is hence needed and a good way to transfer data is also very important.

Status

All proofs of concept have been verified and the app is ready to finalize. However, the next step is about UI design, which I, as a handsome technical boy who has very low tolerance for inelegant, find it quite troublesome since I want to make it beautiful but at the same time have no idea how it can be done. Hence I decided to spend some more time playing with Flutter and making a new personal blog post to learn about design before continuing to play with this.

Learning Goals

  • Practical and complete understanding of Mutex.
  • First experience with router and navigator.
  • Basics of the incredibly powerful gRPC.
  • Basics of Go and concurrency with Go.
  • Basics of the absolutely stunning Flutter.
  • Using Google Firebase for UI hosting.
  • Database workflow and patterns in Go.
  • Generic understanding of middlewares.
  • Dockerization of server and client.
  • Deployment to cloud.

Current Problems

  • GRPC doesn't work well for WEB -> gRPC-Web.
  • Server streaming not working for grpc/grpc_web.dart -> NEVER end stream function.
  • An absolutely free (no hidden costs or registration) simple CPU server for the backend is no where to be found :'(.

Tasks

  • Auto-generate models in Go and JS -> the pain of rewriting the same stuff in the client-side -> gRPC + protobuf 3.
  • Play with Flutter Web -> incredible but some problems with releasing.
  • Test if Go can publish a web UI -> by http.FileServer.
  • Test websocket communication -> by gorilla/websocket. (outdated)
  • Use a docker database to persist data.
  • Build a non-compromised chat UI.
  • Implement all key features.
  • Deploy to a docker image.
  • Deploy to Google Cloud.

Photos

gomessenger's People

Contributors

duckladydinh avatar winwisely268 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.