What is your Product Stack?
What is your usual product stack for any idea/product you want to build or currently building?
I like to call my stack futurestack: I set it up every year, trying to maximize familiarity to ship products fast. It's not always the shiniest, but it works well.
github.com/matteing/futurestack
This year's stack:
- NextJS + Apollo
- Django REST Framework + Graphene
I have been with Python/Django for about 5 years, then switched to (currently) micro frameworks in Python + SQLAlchemy since 2016. So thin backends and then React JS for 4 years now.
This is my current stack:
- Python 3.6+
- Starlette
- Async Pg/My/… + SQLAlchemy (can use encode Databases library)
- Pydantic for validation (new for me)
- React
- React Router
- Redux, Thunk
- Bulma
- Ansible, DO
- If needed, RabbitMQ
Prefer Starlette and Databases mainly because it is from Tom Christie, the creator of Django Rest Framework - his switch to async. He is creating an entire async stack.
I'm trying out full stack javascript frameworks (think Rails-esque but with JS) at the moment, which are essentially JAMStack + Serverless. I like JAMStack for its speed, security and I think to pair it with serverless is the future for me.
@menjilx oh hell no! haha i wish i was at that level, but i'm nowhere near there. I'm just building stuff with it, in the chat groups and hoping to contribute somewhere where I can.
Also I should put a disclaimer that the two frameworks I mentioned are not production-ready, but trying to build stuff with them are not discouraged.
I'm a minimalist when it comes to choosing my stack.
NextJS + ExpressJS + MongoDB
My current outdated stack (of 5 years!)
LEMP Stack Redis for object caching
We use WooCommerce
Am using this lockdown to learn and quickly redo the whole thing in: Next.JS Apollo GraphQL Yoga or Apollo GraphQL Prisma.
Going to connect this with a headless version of our existing WooCommerce store.
BE
- Ruby on Rails
- Nginx
- Redis
- PostgreSQL
FE
- jQuery
- Bootstrap 4
My coding environment looks like
- Vagrant env that mirrors my server setup
- Self-hosted Gitlab
- Self-hosted Sandstorm to quickly setup Rocket Chat, Kanban boards etc for each project
- Netbeans IDE (although I like the speed and small RAM footprint of Visual Studio or just plain Sublime I'm most familiar and fastest with Netbeans)
- Sequel Pro (best tool for SQL managing IMO)
Tech stack for Trufflepiggy:
- Symfony 3.4 LTS (PHP framework)
- Plain JS
- SASS
- PHP 7.4 with APC + OPC Caching
- Magallanes for complete automated SSH deployments with local and server side tasks like cache clearing, imageoptim, etc… One full deployment takes usually between 18 - 30 seconds + rollback options
- Gulp via NPM to run local tasks
- shell scripts to auto-build my browser extensions for all 4 platforms.
I try and use the stack I know well while considering what is best based on the problem and requirements.
I usually end up using:
- Ruby on Rails
- React
- React Native
- PostgresQL
- Redis
With various workers, depending on the task using either:
- ruby
- python
- go
Have started dockerizing everything too. 🙌
@sergio It's so nice when you have a bunch of projects with their own versions of everything. I have different projects on different versions of Ruby and it was a pain having to switch my machine's Ruby version to run each project (and manage separate databases). Now, I can pull anything down from my repo onto my mac or linux machine and it just works.
Backend
- Python Flask as the web framework
- Flask Smorest for implementing REST APIs
- Flask RQ2 for handling jobs
- SQLAlchemy as the ORM
- Postgres as the DB
- Everything hosted on Heroku
Frontend
- Vue.js
- Vuex REST API for consuming the backend API
- Buefy Bulma components
- Gridsome for generating static pages (usually for the marketing component of a product)
@sergio some years ago I was choosing between Django and Flask for a small project and after trying out Django it was too much for me.
The tutorial asked me to learn a lot of concepts all at once, whereas Flask had a a few lines of code to create a hello world
web server.
I was sold on Flask's simplicity!
After that, it is just about familiarity. Haven't really checked out Django again since then, although I'm sure it is a perfectly fine framework.
@gabriel4649 hm, interesting… I found the opposite - i like kitchen sink frameworks bc it helps me ship faster, especially with the orm :)
For backend, always Django, though I did build one project with Node+Express.
MySQL or PostgreSQL.
Nginx or Apache.
As I hardly ever need a swanky front-end, I use vanilla JS or sometimes Vue (used to be jQuery).
Running Firebase, Angular, Tailwind CSS and Tailwind UI at the moment. Got lots of experience in Ionic Framework but wanted to go web first for #jonga and didn't want to fight the Ionic styles to do it.
Here's mine:
- The main application is in Angular, with each route being a different library in an Nx monorepo
- The shared components library is written with StencilJS. Wonderfully small bundles - which for my app are crucial for success
- Backend is Firebase written with NestJS
- Use Google Cloud Tasks for async tasks processing
- A few plain Typescript scripts for the product SDK that uses Rollup for bundling
I am starting a new project with this bad boys.
FE
- React
- NextJS + Apollo Client
- ChakraUI
BE
- Apollo Server
- Prisma.io 2
- Postgres
Old, boring, and reliable: Ruby on Rails + PostgreSQL, deployed on Heroku. :)
I have tried not to wonder to far in what we use for products, that way a lot of code is re-useable.
- DotNetCore (C#) / JS / SignalR
- Azure App Services
- MSSQL Server (Azure)
- Blob Storage (Azure)
- Stripe
- Bootstrap
- Google Analytics
- SendGrid
- Mailchimp
I'm currently using a custom framework that I built and improved on every new project since 3 years ago based on Express.js and Sequelize, and for the frontend I'm using React.js + Redux.
It's nothing fancy but I don't care. I don't want to use the latest library/framework just because it's cool, I want to use something that ships and that I'm confident about using in production.
Please sign in to leave a comment.