Phoenix and project organization

Hello everyone!

Actually I have a medium-big project in mind, it’s my first web project like this (I’ve come from c# building large private game servers) and I want some recommendations, tips etc… to build this project. Firstly I want describe a bit the features of the project ^^:

  • The server will run GCP (Google Cloud Platform) with load balancing (I want availability/performance for all continents)
  • It’s a kind of Social Network, so it will contains things like notifications, chats, feeds, recommendations, follow users etc…
  • I will use a lot of json on database, for user editing lang
  • Multilanguage support
  • I have in mind offer multiplatform service (smarthphones, webapp)
  • At long time add a streaming service

What I need are some recommendations to start well the project, things like what tools to use, books to learn, desing patterns etc… I know you learn from mistakes, but it’s better know them before start a project. For example I have the following questions:

  • It’s a big project, do I need use Umbrella flag to keep it simple?
  • I wan’t to add a ML (Machine Learning) implementation for recommendations, I just know python (tensorflow) for that, so in desing patterns I can do a single server api for ML and phoenix call this api and return to the user? Or exist a better aproach?
  • I have seen GraphQL for api request, is worth use it?
  • I cannot decide what frontend framework use, in general I don’t like a lot javascript, so I found Elm, but Elm have some missing features like handle easy handle css and browser css. So what do you think? Use Elm or a Javascript framework, have something to recommend?
  • Postgre works good for this situation? knowing that is a social network can be too heavy for it? Another solution of database?
  • Queues usefull here?
  • Handling Authentication?

For the moment I work in this project alone, I don’t found someone to help me and for the moment I don’t have money to pay a good dev, so I ask here for good recommendations to achieve this idea by my self (And in the process learn a lot).

Hope can help me ^^


PD: I’m not english native, sorry if my english is not proficient, if I have any error feel free to tell me