Whatever the project you are working on, whatever the programming language, using a Makefile to handle common tasks is a great idea.
Makefiles are great at :
Mask the complexity of a task;
Handle multiple tasks;
Help contributors to start with your project;
Manage configuration using env var;
Define a common interface / standard between projects;
Abstract the underlying technology.
For all those reasons, make is a perfect fit with any CI/CD chain. Using a Makefile helps you define a simple and common interface usable whatever the CI/CD chain you plan to use. The only thing you will have to worry about is that your CI/CD chain tool will call the right target.
And the job is done. It could be done with Travis. It could be done with Jenkins. The only thing that matters is the interface defined by your targets.
Recently, I've been working with AWS in order to experience how it is to build a MVP really quickly. The goal I've been trying to achieve is to use as much AWS tools as possible to get a working product in production the fastest.
To do that, I choose to rely on :
Lambda for back-end code
API-Gateway for REST API
DynamoDB as a database
Cognito to manage Singnin / Singup and authenticated calls to the API.
Dialogflow (previously known as api.ai) is a conversational agent manager. Basically, you can see Dialogflow as a back-office were to manage an NLP engine.
As an admin, you can create intents that represent a suite of similar “user says”. Under the hood, Dialogflow provide an AI (Natural Language Processing) that learns to match user inputs (called “user says”) with intents depending on the context, in order to provide the more logical/appropriate response. It could be an actual answer, called a “speech”, as it can be an action. For example : starting a job, running a command, etc.
Form handling is a huge web development topic. There are almost only 2 ways to deal with form, depending on the lib / the framework you choose to use and depending on the side you are trying to handle your form (client vs server) :