Opinionated Starting Tech Stack + Providers + Short Important Rules List

Xyz Zyx
3 min readJun 26, 2020
there’s a lot of tech stack out there

The total cost of the below proposals, combined is around $20–$30 per months. How can this be ? well AWS, GCP have free tires that try to vendor lock you. Why not profit from them?

Buy Domain From: https://affiliate.namecheap.com/?affId=64507 (this is my affiliate link that will earn me 15% commission on your first domain, while it won’t cost you anything more)

I’ve been using namecheap.com since… forever, never had any problems with them and they offer free privacy protection nowadays, a service that costs with others

DNS: Cloudflare (also some ddos protection)

Infrastructure on: Google Cloud Platform / AWS / Digital Ocean (https://m.do.co/c/ac334ed4bb69 $100 free credit for 2 months, $25 for me)

Source Control: Github (it also has Github Actions that will be used for CI/CD)

Logging: Sentry.io (for errors) / Stackdriver (cloud functions) / Loki (blockchain & others)

Authentication: Google’s Firebase Auth (alternative Auth0.com)

Publisher Subscriber: Google’s PubSub (pub/sub messaging provides instant event notifications for distributed applications, especially those that are decoupled into smaller, independent building blocks)

Monitoring: Grafana/Prometheus (the standard for monitoring nowadays)

VMs: Digital Ocean, Compute Engine, EC2 (in the rare circumstance you need it). Contabo for Blockchain related

Serverless wherever possible: AWS Lambda, Cloud Functions

CI/CD: Github Actions

Communication API: Twilio (messages, voice, video etc)

File Hosting: Google Bucket, AWS S3

Static Web Hosting: Google Bucket, AWS S3

Database: AWS MySQL, Cloud SQL . (If MongoDB then MongoDB Atlas)

Database (analytics): BigTable

Analytics: Firebase / Data Studio

Notifications: Firebase Cloud Messaging

Transactional Emails: Sendgrid or AWS SES

iOS / Android Apps: Flutter, React Native

Frontend: React.js or Nuxt.js

Prediction & Recommendations: Google Recommendations AI

API Documentation: Published POSTMAN collection with proper explanation each endpoint what it does

Rules

Goal is to have software reuse as much as possible

Microservices using the rule: each micro-service must not take more than 2 weeks to be completely re-written by someone else, in another language

Each service should have it’s own repo with a very well written README.md file that also contains: name of the maintainer, the link to the published postman collection (if it’s a http API), overview of what is there, diagrams, example configuration files

Each service should have the GithubAction flow done with build -> test -> deploy\

You should be familiar with some design patterns and the antipatterns: https://sourcemaking.com/design_patterns

API Response Codes are the correct ones and API responses are limited to the minimum necessary.

No over-provisioning. If your service is consuming 200mb RAM there’s no point to get a 2 GB RAM Virtual Machine.

example good: just status code 201 (created)

example bad: status 200 // it should be 201 + { “status”:”success”,”data”:{“record”: “created”}}, “isSuccess”: true, “error”: false, “message:”etc etc etc}

Error Response code should be

correct status code: ex: 403 Forbidden + “{“error_code”:”FORBIDDEN_ACTION_X”,”message:”: “user doesn’t have privileges to make action x”}

Each file should not have more than 600 lines

A scrupulous management of dependencies. Use well known libraries, as little as possible

The code is commented well, the git commit messages are relevant

There is no dead code and commented code should have a comment why it’s commented

End to end integration tests are required (ex: Jest Puppeteer)

TO BE CONTINUED ….

--

--