a year ago
In Next.js, we also use TypeScript in most of the cases. It is the first time we ever worked with TypeScript but using it is a pleasure. It gives us safety on how a function is used. For case conversions, this also makes sense so we can validate that strings are actually passed. It unfolds the code a lot and gives a clear interface to everyone using the functionalities. For databases we use PostgreSQL. We decided on a relational database since that is what we are used to. PostgreSQL supports a lot of data types and is quite flexible and a super safe choice to use. In combination with Sequelize, we had a lot of success in managing our database schema. It is not complex but it just works and that is what is important to release a product.
For payments, we decided to use Stripe. Stripe is probably the most popular solution to enable a subscription within your service. It is easy to use (except webhooks) and it does its job really well. You can really feel Stripe is enabling smaller software projects to use the payments system since the documentation is top-notch and the Software Development Kits (SDKs) are really nice.
For the deployment, we used DigitalOcean basically. We set up our instance with the $10 option and just created all of the infrastructure ourselves. We just needed to do a basic server setup, setting up Node.js, setting up PostgreSQL and cloning the repository of caseconverter.pro from GitHub to the server and start the service. Everything was working perfectly. We are restarting our service with PM2 to just simply host a solution. With this setup, we are running quite well and never had problems so far.