What we build with
and why

No stack is right for everything. Here is what we reach for by default, what we reach for when the default is wrong, and the reasoning in both cases.

How we choose

Four rules that decide most of it. They are why our stack looks unexciting, which is the point.

Boring where it counts

The database, the auth and the deployment path should be things thousands of people already understand. Novelty belongs in the parts of the product your customers notice.

No lock-in

Code in your repository, cloud accounts in your name, no proprietary runtime of ours in the middle. You can take any project elsewhere without asking us for anything.

Sized to the problem

A three-person business does not need Kubernetes. We pick the smallest thing that solves it, because someone has to run it after we hand over.

Built to be handed over

Documented, typed and tested to the level the project warrants — so your next developer can pick it up without a rewrite.

Everything we use in production

If something is not on this list, we either have not needed it or would not recommend it to you.

Frontend

React and Next.js for anything that has to be fast, indexable and maintainable by whoever comes after us.

  • Next.js — Default for websites and portals
  • React — Interactive dashboards and apps
  • TypeScript — On every project, no exceptions
  • Tailwind CSS — When a design system is needed fast
  • React Native — When a real mobile app is justified
  • three.js — WebGL where it earns its bundle size
Backend

Node for most services, Python where the work is data or model shaped. Both, when that is the honest answer.

  • Node.js — APIs and real-time services
  • NestJS — Larger applications that need structure
  • Python — Data pipelines and ML services
  • FastAPI — Model serving
  • Django — Admin-heavy internal tools
  • REST & GraphQL — Chosen per integration, not per fashion
Data

Postgres unless there is a specific reason not to. Most "we need NoSQL" turns out to be a schema problem.

  • PostgreSQL — Default relational database
  • MySQL — Where the existing stack requires it
  • MongoDB — Genuinely document-shaped data
  • Redis — Caching, queues, sessions
  • BigQuery — Analytics at volume
  • TimescaleDB — Sensor and time-series workloads
Machine Learning

Classical models where they win, large language models where they genuinely help. Measured against a baseline either way.

  • PyTorch — Vision and deep learning
  • scikit-learn — Forecasting and classification
  • XGBoost — Tabular problems, usually the winner
  • Hugging Face — Pretrained NLP models
  • Claude API — Document understanding, assistants
  • MLflow — Experiment tracking and registry
Cloud & DevOps

Infrastructure as code, deployments from Git, and monitoring that pages a human before a customer notices.

  • AWS — Most deployments
  • Azure — Microsoft-centric clients
  • Docker — Everything ships containerised
  • Terraform — Reproducible environments
  • GitHub Actions — CI/CD by default
  • Grafana & Prometheus — Monitoring and alerting
Integrations

The systems Indian SMEs actually run on. If the data is reachable, we have usually connected to it before.

  • Tally — Two-way sync via XML and ODBC
  • Razorpay & PayU — Payments and subscriptions
  • WhatsApp Business — Order and status notifications
  • Shiprocket — Dispatch and tracking
  • GSTN — Compliant invoicing
  • POS systems — Stock and sales sync

You own all of it

Every project ends with the code in your Git repository, the cloud accounts in your name, and no proprietary layer of ours sitting in the middle. If you decide to move to another team, nothing has to be asked of us first.

That is deliberate. We would rather keep clients because the work is good than because leaving is expensive — which is also why 98% of AMC clients renew without being locked in.

Not sure what your project needs?

Tell us the problem rather than the technology. Recommending the stack is our job.