Stack Upgrade: What is your favourite development stack and why?
Probably we all have our favorite, toolkits that we prefer to work with all the time. It includes libraries, frameworks, prog languages, editors, boilerplates, tools, and everything else involved in the creative process.
The only way we can upgrade it to a higher level is by sharing and listening to what others are using. Life is short and we probably want to be as productive as possible. So let's share what works best for you.
I will start.
For web development:
- React - I tried few frameworks and so far React works best for me. I decided to be master of it rather than have shallow knowledge of many.
- Next.js - boilerplate of choice for everything that used to spend most of the time while working with React: webpack, lazy loading, PWA, static pages etc. :sick
- Sass - I understand CSS well, and Sass is the best CSS generator I know
- modular CSS
- Chrome - devel tools, lighthouse
- Cloudflare - free CDN, DNS, cache
Testing:
- Jest - everything in single framework, good for React and Node
- Enzyme
For mobile development:
- React Native - I know React so this is the obvious choice, very straight forward
- Frappe - I don't remember what it does but it used to be helpful
Backend development
- Node + Express - fast to set up and minimal
- MongoDB - fast to setup, flexible schema, good support on Node.js
- Insomnia - REST client, the simplest and user friendly I know
- pm2 - clustering for Node.js without crazy configs
- SQLDeveloper - best free UI to work with SQL DBs
Hosting:
- plain VPS with Debian - the simplest, basic, and available everywhere
- Firebase - the fastest and easiest backend to setup
- Github pages - it's free, and I already know how to do it
For design:
- Figma - wireframing
- Canva - logos and graphics
- Google Fonts - for selecting fonts
- Twitter Bootstrap (ideas) - plenty of components ready to be copied
- Material Design (ideas) - the same as above
- pen & A4 blank paper - wireframing, algorithms design, pseudo coding
Other tools:
- Emacs - development, note-taking, tasks management, accounting, sftp, rss, and more. I use it for more than 16 years now, nothing match this OS.
- SublimeText - quick drafts, scrap pad
- FileZilla - ssh,ftp client
- Gimp - the only one I know well and it's free
- Vim - editor for a terminal while ssh, fast, great navigation, available everywhere
- Linux command line - a secure way to manage apps backend without opening ports
- Macbook Pro 13' 2018 - I tried everything, nothing beats Macbooks and macOS be means of quality and usability all around
My preferences:
- Rails or Phoenix, full-stack with Stimulus.js or React (if I have to bring a heavy-weight gun). I pretty much always use PostgreSQL (it can be used for anything almost).
- Fedora or CentOS for servers on Digital Ocean (I prefer DNF/RPM plus it's the only real choice if you want SELinux).
- Sublime Text 3 as editor (I always try VS Code and return for speed :D)
@strzibnyj Nice. I just realized Stimulus.js is made by 37Signals, it means that it's probably very easy to use it with Rails.
Did you found creating schema upfront for PostgreSQL time consuming?
Does Phoenix have any advantage on Rails? How you make your choice to use one before the other?
I'm currently using:
- Macbook Pro 13, 2015 (old, but gold!)
- FE: React + TS
- BE: Node + Express/Koa
- DB: PostgreSQL
- Editor: nvim
- Other tools: Chrome, iTerm, Figma, etc.etc…
- Notebook: I really appreciate the power and flexibility of pen and paper and always have one nerby More or less that's it 🤘
@Brslv Awesome! I like you mention pen and paper, nothing beats blank A4 😎 Did you find TypeScript slowing you down? Personally I try not to use it if I don't have to, it slows down the process for me. Interesting editor choice 🤓
@farynaio actually, it's exactly the opposite - typescript makes development a lot faster for me. Yes, at the beginning when I was still a beginner with it, it was a bit slowing me down, but not for a very long time. Once I got the hang of it (2 days, basically), it began to pay off. The overhead of types is insignificant, compared to the huge benefits I get when refactoring, the luxury of smart auto-completion (using the LSP), etc. etc. One thing that I've definitely experienced myself is that the code I write is much more compact and simplistic written in TS (maybe I'm biased already? :)). Actually, i'm having a lot more fun developing with typescript compared to vanilla. At the end of the day it's a matter of personal preferences :)
About vim - yes, I'm in the vim team. Always have wanted to learn Emacs, but never had the patience and the time to do it :D
@Brslv Interesting. I found TypeScript quite hard for me to be as productive as when I type in vanilla JS, even though I have Java background with it's Generics.
LSP works for me well with vanilla JS.
@farynaio idk, I just love the confidence in development types give me and most of the time it's saving me hours of debugging. There are so many nasty bugs that could happen when you expect an object with a particular prop but get a completely different one…and you could even not notice it at all…I've had that pain so many times that I'm thankful for TS. But still, vanilla is completely fine. I still use vanilla for small stuff, but if i'm working on something big i've gotten to the point where TS is my default choice.
@lori maybe, so far I enjoy typing less code and get similar effects. It was always a problem for me satisfy TT when I worked with Angular 2. Find a typing for everything, learn what typings put where. Other then that development in A2 was smooth. The same with Express.js it's just so simple to code it with pure JS. TT makes me spend most of the time on typings. The type errors in vanilla this days are marginal for me, and sometimes when not, I just ask chrome Debugger what is it. Simple.
FE: Last projects I used Vue, now I'm back after leaving at v0.14 to React BE: Go, Chi Router DB: ArangoDB IDE: IntelliJ IDEA Ultimate
@altafino I used to upgrade my IDE from Eclipse to IDEA when I worked with Java. But I was always more productive with Eclipse - probably I just know it better. Do you have Java background?
OS
- Windows
- Linux
Editors
- Sublime Text (https://www.sublimetext.com)
- Visual Studio Code (https://code.visualstudio.com)
Git
- GitHub (https://github.com)
- Fork (https://git-fork.com)
- Sublime Merge (https://www.sublimemerge.com)
Design
- Figma (https://www.figma.com)
- Affinity Designer (https://affinity.serif.com)
Frontend
Frameworks/Languages
- Vue (https://vuejs.org)
- Svelte (https://svelte.dev)
- TypeScript (https://www.typescriptlang.org)
Tooling
- Snowpack (https://www.snowpack.dev)
- Rollup (https://www.rollupjs.org)
- Storybook (https://storybook.js.org)
Testing
- Jest (https://jestjs.io)
- Cypress (https://www.cypress.io)
Backend
Database
- FaunaDB (https://fauna.com)
- MariaDB (https://mariadb.org)
Frameworks/Languages
- Node (https://nodejs.org)
- Express (http://expressjs.com)
- Rust (https://www.rust-lang.org)
- TypeScript (https://www.typescriptlang.org)
Testing
- Jest (https://jestjs.io)
- Insomnia (https://insomnia.rest)
Changed various parts of the stack over time but in general:
OS Windows + WSL2 with Docker
Coding
- PHPStorm as my IDE
- Tailwind (CSS Frontend)
- Alpine JS (JS Frontend)
- Laravel (PHP Backend)
- Livewire (Backend+Frontend)
- Bitbucket & Github (git)
- MySQL + Navicat (DB)
- Figma (Design)
- Digitalocean & AWS (hosting)
There's so much more when it comes to tooling and services but it really depends on the project. Jumped between npm & yarn a few times. Testing stack (mostly backend) changes every now and then.
I tend to follow and try new tools coming from the Laravel ecosystem. Because most of the time I see how they improve the developer experience. So, a lot of the changes in tooling stem from there.
The only 3 things that have been constant for almost 10 years are: Laravel, MySQL & PHPStorm 😄
OS
Windows
Linux
Editors
Sublime Text (https://www.sublimetext.com )
Git
BitBucket (https://bitbucket.org/ )
Frontend
Frameworks/Languages
Vue (https://vuejs.org )
NuxtJS (https://nuxtjs.org/)
Testing
Jest (https://jestjs.io )
Cypress (https://www.cypress.io )
Backend
Database
- MySQL (https://www.mysql.com/)
- MongoDB (https://www.mongodb.com/3)
Cache
Redis (https://redis.io/)
Frameworks/Languages
Node (https://nodejs.org )
Express (http://expressjs.com )
PHP (https://www.php.net/)
Laravel ( https://laravel.com/)
My setup is very minimal, works equally good on any machine, and is surprisingly powerful:
IDE: vim+tmux+zsh Backend: DigitalOcean, Go, PostgreSQL, Docker if needed Frontend: Preact or vanilla JS, plain CSS Design: pen and paper, sometimes Figma
@farynaio It's my "goto" language in the last few years, so I use it pretty much for everything - backend, other system services, quick utility prototypes etc. Even my frontend bundler is in Go (esbuild). But I should say for the mid-size backends it's the best. Simple, performant, very stable.
This is my go-to stack for any personal/client projects.
IDE: VSCode Frontend: NextJS, GatsbyJS Backend: Express, NestJS Deployment: AWS (ECS/EKS - Production), Digitalocean (Testing), Vercel Database: Postgres, MongoDB Testing: Cypress, Jest (sometimes) Other Tools: Docker, GitHub, Notion, Figma, Stripe Other Libraries: ChakraUI, Emotion, React Query, Apollo Graphql, Tailwind
Please sign in to leave a comment.