Ask HN: What tech stack would you choose for building your next app?
Hi all,
I feel like I'm behind the trends in building apps. I see lots of new stuff-as-a-service, and need to refresh my knowledge.
Could you tell what would you choose for your next app ?
Backend / frontend does not matter.
Thanks in advance.
53 comments
[ 9.6 ms ] story [ 379 ms ] threadIf I'm paying: Wordpress, LAMP, vanilla JS, MySQL, and PHP
If I'm maintaining: Ruby on Rails, PostgreSQL, JQuery, ReactJS
If I'm building a resume: Either C# or Python, SQL, and Javascript, hosted on either AWS or Azure.
Mobile: Swift/iOS and Java/Android both.
https://learnbchs.org/
I want something that's simple, and reasonably secure by default so that if the crap I build turns out to be insecure, it's my own damn fault.
https://testdriven.io/blog/developing-a-single-page-app-with...
I like zeit/now, but Netlify is also very good. Whatever you use for hosting, it should have GitHub integration to auto-deploy branches. If you don't want to deal with a middleman at least use a framework like SAM, Serverless, or ant.codes.
The frontend should be React (preferably wrapped with a convenience layer like Create React App, or Next.js so you don't have to handle Webpack yourself). The more interesting question is how to manage state. Use something like Apollo or AWS Amplify for this because mapping REST-JSON to state is so 2014.
Redux is a waste of time.
TypeScript can die in a fire, and if you disagree you should join it.
Static typing lets me front-load the effort of making sure many different buggy cases won’t happen. The alternative is for me to think really hard proving to myself that those cases won’t happen each time I come back to the code in the future to add a feature or make a change.
This is probably a poor attempt at satire, but I'll bite. Actually yes, I'd rather disagree and jump in the fire to use TypeScript than to plod along using JavaScript with its clumsy type-system, designed by a team of clapping seals and to watch all the hell it truly brings.
If you think TypeScript should die in a fire then perhaps I'll see all companies using JavaScript in Dante's Inferno.
I dislike TS because it provides no benefit to me. I already have a type checker, it's called a browser. I dislike TS because a bunch of people who wasted their time learning Java or C# are forcing me to deal with it because they can't do their job without a compiler to tell them how.
You need types, that's your problem, not mine.
1. Accurate autocomplete.
2. Typing my domain models so they play well with autocomplete.
You know, I think I agree. Commenting on this site is a huge waste of time.
Also, can you please not post unsubstantive comments like https://news.ycombinator.com/item?id=21822655? We're trying for more thoughtful conversation here. If you wouldn't mind reviewing https://news.ycombinator.com/newsguidelines.html and taking the spirit of this site to heart, we'd be grateful.
Btw, I tend to agree with you on https://news.ycombinator.com/item?id=21810266 and thought that was well put.
Firebase coz cbf backends
Vue (if necessary)
But the short version is that I would (and do) favor Clojure for personal projects. These are cases where I have limited time to invest, a high desire for tangible results, and no other developers to worry about. For that set of tradeoffs (and my skillset), this has generally been the best way for me to achieve my goals. (I also have some code that abstract out some patterns I find useful or importatn.)
In these sorts of projects, if I need client side code, I'll tend to favor straight JavaScript (with markup rendered by Hiccup) if I can get away with it, and ClojureScript/Reagent if I have a requirement that implies a need for client side logic. (Tolerance of lost network connections, incremental page update, and the like.)
For more commercial projects, I'd be thinking TypeScript/React with a Java (JVM?) backend for starters. I'd also be open to Node or Python for the back end, but it really depends on the skillset of the team and where the best libraries are.
And all of this would be done with an eye towards the exit. Any codebase that has a reasonable life expectancy will likely have to at least interoperate with other language ecosystems, if not incorporate them bodily. Being mindful of how that might happen is important. (Which practically speaking, means decent interface definitions, testing, and the like.)
No SPA. I use server side templates and just call the vue components in them as needed.
users.page.tmpl (in Golang):
Then I have a Users.vue that does the heavy lifting with API calls on loading existing data when component mounts etc.Using this, I can use server side routing as needed and no need for client side routers or SPA etc.
Backend: Flask -> MySQL -> Docker -> Digital Ocean
Frontend: Vanilla JS + Bootstrap or VueJS + Template
Have yet to fail me. It makes for easy transition once things get serious and I want to migrate over to GCP/AWS
Of course, I'd use something different if the project necessitated anything in particular.
Aurelia, Mongo, HAProxy, Nginx, Express, Redis, ELK, Ansible
Depends on the dependencies, some things I need have very great implementations and support in golang (network traffic, routing).
Anything else would depend on the app's features.
- Simple, great abstractions, many enterprise grade components
Back-end = Firebase (Firestore db and Cloud Functions)
- Simple, cheap/free, scalable
For backend I’d want something either rock solid and fault tolerant like Elixir, or very speedy like Rust or even Go. Kind of depends if I’m doing this in my own or with others.
It’s been an incredible learning process, super laborious and an absolute joy to see people buying my app and emailing with questions and ideas.
I’ve had to learn React, modern JS development, semantic UI, redux, native node modules, maintaining a cross platform build system, publishing on app stores, selling direct and building my own license system using react/express/graphql/jwt not to mention auth, and other APIs, deployment to Heroku... the list goes on and on.
Check out my app at https://label.live
One of my goals is for my framework to compete with Flutter. So why not just use Flutter? Two reasons: Flutter's API is object-oriented, and Layout's is functional. I also prefer a declarative style for specifying views, but can't stand Babel's bigness/slowness, so I built a JSX transformer (https://github.com/maxharris9/jsx-layout).
For Mobile - Android ; Java, iOS - Swift
Frontend - Typescript/React + miscellaneous libraries. Maybe CSS compiler, maybe raw CSS.
Backend - I'd use C# and .NET but that is for reasons of familiarity. I would also be comfy using NodeJS but I prefer the comparative sanity of C#.NET.
For Fun:
https://safe-stack.github.io/docs/overview/