42 ms·
The Epic Stack
- bovermyer 3y agoUnfortunately, the decision documents are limited to just Typescript and Mailgun. I would have liked to see more of them.
- marban 3y agoSubjectively epic, objectively complex.
- _heimdall 3y agoI was a little surprised by the list of tools and services included after first reading the principles for the stack (limit third-party services and only include the most common use cases)
- solatic 3y agoI have mixed opinions seeing Tailwind on that list. If you're not a designer, it takes a non-trivial amount of time to add the utility classes you need to get something that looks passable. Quite simply, it gives you too much control over something that just doesn't matter for an MVP. There are great component libraries out there (I'm a fan of Chakra) that give you sane defaults so that you can get something off the ground, while not focusing on something that doesn't matter at the MVP stage. Maybe Tailwind + Radix makes more sense after you raise funding...?
- tmorton 3y agoThat's the niche for https://tailwindui.com https://tailwindui.com - which is how the Tailwind creators make money. If you're convinced by the overall Tailwind philosophy, it's a steal at the price they charge.
- doctor_eval 3y agoCouldn’t agree more. Tailwind css is great, but TailwindUI is where the wins are. I love using it and despite being crap at design, I’ve managed to put some stuff together that I think is not half bad. (And I remain mighty impressed with their business plan, too!)
- maxcan 3y agoPersonally I feel like TailwindUI is a missed opportunity. Their opposition to abstracted utility classes means that anything you want to do has incredibly long, unreadable classes. Its quite a bit of work to abstract away the bits that you want. https://daisyui.com https://daisyui.com is my absolute sweet spot for abstraction. Its a bit limited, especially compared to TwUI and flowbite but its developer experience is a joy.
- ohduran 3y agoOh man this is wonderful, thanks for the recommendation!
- mattgreenrocks 3y agoDaisyUI looks great. Thanks for the rec!
- listenallyall 3y agoDisagree -- tailwind is likely the fastest way to get a barely-passable design. (Certainly faster than using an external component library then realizing ones you need are only available under the paid, "premium" collection). And to say that design "just doesn't matter" while you're in fundraising mode, i think is also incorrect. You don't need perfect design, but it has to look pretty decent. It's in people's nature to be turned off by ugly/obsolete looking web pages.
- _heimdall 3y agoOpenProps is on par with the developer experience of Tailwind in my opinion. The choice between the two more comes down to preference, class names as inline styles or a collection of Css variables
- listenallyall 3y ago> 100% agree, I've always been impressed by what the projects and courses Kent puts out. this ^^ was you, right? pardon me if I don't hold your opinion in high regard
- _heimdall 3y agoCare to explain? There's not really much here for me to go on.
- Colex 3y agoI believe a framework like Bootstrap might be a faster approach at the beginning (honestly, it's a fair approach for the whole lifecycle of a project). You get all the building blocks to get a consistent UI working fairly quick with little to no CSS knowledge. Some times removing the unnecessary flexibility may be a boost to get things out there. But, at the end of day, the best option will be the one you're most comfortable with.
- WorldMaker 3y agoAlso, Bootstrap gives you plenty of copy-and-paste ready examples, including accessibility enhancements. Accessibility can be an after-thought to not just devs, but many designers, but Bootstrap helps put it right up front for the lazy developer. Anecdotally, I've sometimes seen better quality websites for a lot of the little "polish" things like accessibility (which isn't really "polish", is it?) from the laziest "just use Bootstrap" developers than from the most hardworking Tailwind developer+designer combos.
- madeofpalk 3y agoTailwind exists at a different part of the... stack. Tailwind is not a component library, it's a styling language as an alternative to CSS.
- replwoacause 3y agoI don’t use frameworks like React or Vue because my apps are small and mostly just for me, so I wish there were component libraries out there like Chakra that didn’t require npm, yarn, or some other package manager to install, and then a framework to use. I just want to slap a CDN link in my HEAD tag of my vanilla HTML page and start using class names to create components. Ideally, these components would have behavior functionality as well so I don’t have to use another library like HTMX or Alpine.js to add it. It seems to me something like this _should_ be possible.
- jlarky2012 3y agoit is possible! I've been playing with Astro and shoelace library downloaded from CDN for a use case like that.
- jlarky2012 3y agodeployed version https://b2b-saaskit.vercel.app/setup https://b2b-saaskit.vercel.app/setup source code https://github.com/fogbender/b2b-saaskit/blob/44ae552d6093a90f2b706951c24ed271363d3957/src/pages/setup/index.astro#L64 https://github.com/fogbender/b2b-saaskit/blob/44ae552d6093a9...
- replwoacause 3y agoSuper helpful, taking a look now to see how you worked with Astro and Shoelace. This is very encouraging…!
- replwoacause 3y agoShoelace looks great! Thanks for sharing it. Can't wait to give it a whirl.
- danpalmer 3y agoThe benefits of naming stacks like LAMP and MEAN/MERN was coupling technologies that intrinsically work well together, where swapping out one would meaningfully change the whole system. LAMP without PHP would be unrecognisable, MEAN without MongoDB would feel completely different to develop for. There’s almost nothing about the Epic stack from what I can see that wouldn’t feel roughly the same if replaced. Swap Tailwind for a different CSS framework and… it’s basically the same. Use a different validation library and it’s still the same. There are pairings within the list that complement each other relatively well, but none that are make or break in the same way as LAMP/MEAN/etc. These stacks were useful in understanding values in an acronym, but here that requires a full blog post to lay out principles making it less memorable and, I suspect, less impactful as a result.
- themosaad 3y agoThe name "Stack" here means a starter template for the Remix framework e.g. Remix Stacks https://remix.run/docs/en/main/pages/stacks https://remix.run/docs/en/main/pages/stacks
- listenallyall 3y agoNothing "epic" about any of this
- methodical 3y agoEpic in complexity and setup time perhaps?
- 0xblinq 3y agoEpic in dollars of selling courses about this stack.
- julianeon 3y agoI would describe myself as someone 'in the trenches' of web dev as a consultant and I wanted to say that I respect this more knowing it's from Kent C. Dodds. I considered buying his React course, though I haven't, but I respect his knowledge and opinions; and for what it's worth, if Kent C. Dodds considers this to be an excellent stack, I would give it serious consideration. If you consider yourself to be an indie hacker, or follow people who do, then this deserves your consideration too, as Dodds is essentially coming from that background.
- shanebellone 3y ago"I would give it serious consideration" There are 18 components listed. This stack is thick.
- ponyous 3y agoSo what? It covers a lot of things. Things that are often needed on the web. Almost always to be honest. You can go with "express.js" only and then figure out 10 other missing pieces yourself.
- shanebellone 3y ago"So what?" At what point do you become a user?
- _heimdall 3y ago100% agree, I've always been impressed by what the projects and courses Kent puts out. I'd love to hear a podcast episode with him really diving into the choices behind everything in this stack.
- jatins 3y ago"It's time to just ship" Lists 10 tools to start with. Also, had the displeasure of using Prisma a while back. Extremely slow type generation, and complex to work with its client-server architecture. When your library requires a separate process you know you messed up. If you want to just ship, pick up Next.js, or whatever you already know and add dependencies when you need them. Let thought leaders thought lead.
- ohthatsnotright 3y agoIt also does code generation into its own module, so good luck with hoisting in a monorepo where you want multiple independent prisma schemas. MikroORM[1] is a much better alternative to Prisma in my opinion but any ORM carries some form of baggage. [1] https://mikro-orm.io/ https://mikro-orm.io/
- _heimdall 3y agoI really do appreciate Prisma's developer experience though. Recently I've been testing out Prisma for migrations and Kysely as the actual ORM. Prisma is generating the Kysely type definitions automatically so it is still pretty hands off without the production overhead of prisma server/client.
- hu3 3y agoInteresting. Have you tried https://github.com/kysely-org/kysely https://github.com/kysely-org/kysely ? I know Prisma is an ORM and kysely is a "type-safe typescript SQL query builder" but I just wanted to know if you had the opportunity to try it and your opinion about it. I'm searching for SQL typescript tooling for my next project.
- norman784 3y agoI would recommend to use just good old database client and send your queries as text, nothing it's easier than that, every orm struggles when you want to do some relatively complex query, I struggled to do something like this with kysely `LEFT JOIN table2 ON (table1.id = tabl2.id AND table2.status = 1` was insane how complicated it was, sure you can pass raw sql, but what's the point of the orm then.
- woile 3y agoHow's remix compared to nextjs? NextJs is quite well established, does Remix offer something better on top? Under which circumstances one would choose remix over nextjs?
- mvf4z7 3y agoI think one of those circumstances is when you previously worked for the company behind Remix. He is probably just really comfortable with the framework, so it makes sense for him to use it. https://www.linkedin.com/in/kentcdodds/ https://www.linkedin.com/in/kentcdodds/
- DangitBobby 3y agoRemix is _really_ great if you want a traditional web application. In the tutorial they (used to?) do a bait and switch on you where at one point you realize no client side JavaScript has been running the entire time because the tutorial hadn't even talked you through how to bundle in the client side js! The idea is pretty much, use the platform. Of course, I'm building a web app on top of it, so I want a lot of features that "the platform" doesn't necessarily support very well without client-side js to facilitate everything. And I did make an honest go of it. To me, the biggest pain point is still forms and form validation, which is notoriously painful in React land. I'm ultimately using react-hook-form and running the same schema validator client-side and server-side, which means I'm not really "using the platform" in that respect. I'd love to see an official react-hook-form type solution added to Remix. Still, the framework has some really great, sticky conventions and it feels like they thought of almost everything. For example, the "action" and "loader" convention is awesome, nested layouts are the bomb, they encourage filenames like .server.ts to differentiate between things that can't be run client-side, heavily encourage the use of a bunch of goodies from react-router (which most people probably don't know exist) because Remix's routing is built on top of react-router... And so on. Having used both Next.js and Remix a few times, it's difficult for me to recommend one definitively over the other; if you aren't experienced with them either one will be a learning curve. In general, I think Remix is the better framework but some shortcomings in the documentation (e.g. I found out about some new routing conventions because the old ones weren't working for me and it was confusing because the tutorial and docs seemed to use the old ones) and the relative dearth of resources online can lead to frustration. This should pretty much be a non-issue if you start a new project with one of the "stacks" that someone has developed, the blessed ones of which give you a base project that already has database, authentication, tailwinds etc configured with example routes and components. Next is already taking some of the good ideas from Remix (nested layouts still in beta I think), and has a pretty extensive and mature ecosystem with lots of answers on SO and blogs at this point. For example, if you want free social auth you're pretty much just going to install next-auth. Still don't know exactly what I'd do in Remix for that.
- integricho 3y ago[flagged]
- have_faith 3y agoNothing against most of the individual tech chooses but this is a phat stack. I can’t imagine using something with so much stuff baked in, is it pluggable in any way? I guess the whole point is it’s not.
- TN1ck 3y agoHad to laugh when I clicked on LiteFS and saw: > LiteFS is currently in beta and is not recommended for production use yet. Kind of JS dev in a nutshell, always bleeding edge.
- _heimdall 3y agoYeah I got a kick out of that one too. I like what LiteFS is going for but it's interesting to see in a stack focused on minimizing dependencies and avoiding painful updates.
- grammarxcore 3y agoThat’s been my experience with DevOps/SRE tooling as well. I think things are beginning to get a bit better (or the projects I’ve been using for a few years are finally getting stable). After getting burned multiple times by HashiCorp I am super non-1.X+-averse when it comes to picking anything.
- macNchz 3y ago> It’s time to just ship With “just shipping” as the stated goal, I am a big believer in using the tools you know, even if they’re not absolutely perfect or new or sexy enough to blog about. Using things you know like the back of your hand will smooth over innumerable little snags that you’d run into if everything were new to you, and let you focus on the actual problem your software is supposed to solve. I can get a toy app live in an hour with the tools I know best, but I’m confident there’s at least one thing in this stack that I’d get stuck on for half a day, just because it’s unfamiliar. Working with a team? Everyone throws their best-known tools in the pot and one person is directly responsible for selecting among them.
- tobr 3y agoLooking at the logo wall, happily surprised that it doesn’t include React! …then looking a bit closer to discover that once again, I’m running in to a React dev who assumes that everyone assumes that everyone uses React, thus you don’t even need to mention that a boilerplate built on React is built on React.
- methodical 3y agoCurious what alternative you believe is a better option for building applications in this day and age... Angular is basically dead and Vue abstracts too much (imo), unless you think vanilla JS is the way?
- tobr 3y agoPersonally, Svelte when I get to choose. But that’s not really what my comment is about.
- simonbarker87 3y agoIsn’t Remix filling that role in his logo wall?
- shados 3y agoTo be fair, they're not assuming anything, and Remix is like the first thing in the list, which is one of the major React frameworks right now. The name is not as descriptive obviously but its like someone saying SvelteKit and not mentioning Svelte proper.
- uqimerioni 3y agoMajor? I am just curious how many vacancies are there for remix right now?
- jacknews 3y agoI'm grateful for the opportunity to learn about so many technologies I'd never heard of before. Maybe.
- asciii 3y agoThe photo in the article does a good job of conveying the galactic challenge with setting up a simple JS stack
- docandrew 3y agoI don’t know why cloud providers haven’t jumped on RAD technologies. They could give devs a stack where all the engineers need to worry about is front-end presentation and business logic. Everything else from persistent storage, deployment, testing, scaling, disaster recovery is baked-in already.
- lucasyvas 3y agoWithout fail, every article from Kent C. Dodds shows what appears to be total inexperience despite claims of the contrary. The advice is, at this point, almost meme worthy. There's an infamous post from 2021 (that he may have been roasted for here): https://kentcdodds.com/blog/how-i-built-a-modern-website-in-2021 https://kentcdodds.com/blog/how-i-built-a-modern-website-in-... Almost every single piece of advice is wildly overcomplicated and ridiculous. I do like some of the technologies proposed, but you can host this stuff on a single VM without any of the fancy frameworks, tools, or hosting options. Kent is the only blogger that I've felt compelled to tell all my less experienced colleagues to completely ignore, and I feel entirely justified doing so whenever they bring him up. The proliferation of his perspective has, quite literally, been a pain in my ass daily trying to re-teach misguided fundamentals. I really don't understand who the intended audience is. The expert beginner, maybe? I'm sure he's probably a wonderful human being, however.
- rufius 3y agoI agree. The article reads like satire. I can’t tell if he’s making fun of the hoops you have to jump through to make a “modern web app”.
- MentallyRetired 3y agoI also agree. I thought it was a joke. Once I got to the logos I was sure it was a joke.
- djfobbz 3y agoHis article is the epic antithesis of the KISS principle. Imagine being a beginner wanting to get into web app development and then finding out that the most "Epic Stack" requires you to learn 26 different pieces of technology, each with its own millions of nuances. SMH!
- ponyous 3y agoWhat advice is meme worthy? Can you be more specific? You are just saying it's not good, that you would not advise to follow him, etc... > The proliferation of his perspective has, quite literally, been a pain in my ass daily trying to re-teach misguided fundamentals Again can you give an example? I feel like he gives sound advice, but I just recently discovered him.
- ZephyrBlu 3y agoKent seems like a nice guy, but every piece of his writing seems to be a massive beginner trap. Experienced developers are not setting up brand new projects like this because it's massive overkill at the jump, but newbie devs who don't know better might try to.
- noahtallen 3y agoI don’t know if I agree. For a toy project, sure, you don’t need anything at all except a static file host. However, many experienced devs aren’t going to sacrifice tools they know improve codebases when working on new projects at work, or starting something they think could turn into something bigger. It’s so much easier to have some of these tools available from the start, especially if this requires no extra work to setup (which seems to be the point of this anyways). IMO that includes linting/formatting, type safety, unit tests, observability with a dashboard and analytics, and at least very basic CI/CD. Things that I’d find hard to give up working in other code bases :) Obviously there is going to be a huge amount of bike-shedding about what to use for X or if it’s useful; it’s basically impossible to avoid in this community. So I don’t know if that really detracts from the concept of having a stack with some solid defaults out of the box. Personally, I might avoid the database/auth/payments related stuff at first, since that feels more subjective. However, tools like typescript, eslint, and prettier are practically industry standards. It is still a pain in the ass to get a lot of the basics set up for different projects, so it’s nice to see some opinionated approaches to automating this. Compare to other languages like Rust, and the test runner, formatter, linter, dependency manager, and type safety are all built into the language tool chain. It’s so pleasant to not have to do any work to set that up, and I wish JS was more like that.
- 0xblinq 3y agoWell, the business is to sell courses and consulting once you make a mess. It’s understandable.
- T3RMINATED 3y ago[dead]
- devmor 3y agoA "stack" that requires 18 different services to bootstrap. I'm trying to find the punchline.
- thdespou 3y agoIt's a Ratatouille.
- methodical 3y agoIt will never cease to amaze me how people can overcomplicate simple applications in such a fashion, particularly in JS land. I have never, and likely will never, understand the need for the addition of these bloated libraries on top of barebones React or JS which can achieve the same functionality at a fraction of the bundle size if you're a halfway competent software engineer.
- Freebytes 3y agoHello, Beginners! Try out an entire ecosystem of tools and then discover that you made a mistake... Or just install Visual Studio and create a C# web application using the recommendations in the IDE and a 20 minute video on YouTube. This article might be some kind of parody, though. I really cannot tell.
- pelagicAustral 3y agoIt honestly took me to the conclusion to realize this was not a piece of satire.
- ponyous 3y agoKent presented the stack at remix conf yesterday. It starts 30min into this stream: https://www.youtube.com/watch?v=qVkRyjSrhXs https://www.youtube.com/watch?v=qVkRyjSrhXs
- nullandvoid 3y agoDon't mean to add 1 more to the list, but I would say tRPC is a must have for side projects for me now where I'm not requiring a publicly facing API. The ability to just define a function on the backend, and it be callable in my frontend, with responses automatically typed is a game changer for building fast. For me that means https://create.t3.gg/ https://create.t3.gg/ is the current go-to for starting a new project, but it's definitely missing some pieces this stack has.
- jlarky2012 3y agoremix loaders are similar to trpc procedures and provide type safety, but you have to have a bit of a boilerplate there (15 extra characters) when you use it: const data = useLoaderData<typeof loader>()
- web3-is-a-scam 3y agoI’ll stick to rails, batteries included everything with easy to follow conventions. “It’s time to just ship” and proceeds to list like 15 different things, just lol. JavaScript must cause brain damage or something. Hell, even LAMP is a better “just ship” than this monstrosity.
- rhymeswithjazz 3y agoI thought I'd run through this just because I like Remix. It confirmed my prejudices against Fly. I've never gotten an app to deploy on Fly on the first try. There's always some error that I've got to debug and fix. I can't imagine recommending Fly as easy. Contrast to Vercel where everything just seems to work on the first try.
- impulser_ 3y agoWe already have multiple "Epic Stacks". They are Rails, Laravel, Phoenix and Django. They give you everything listed straight out of the box and you don't have to deal with the trash that is the JS ecosystem. That's what makes them Epic :)
- darkhorse13 3y agoMore like epic complexity.
- steve_adams_86 3y agoThe further I get into my career the less "stuff" I want to throw at solving problems. This is the antithesis of that attitude. It would take ages to learns the ins and outs of these dependencies, and some of them come with immense sets of complex dependencies. I'm all for pragmatism and not reinventing wheels, but this stack looks like a juggernaut of eventual misery.
- thdespou 3y agoApparently they have a Repo: https://github.com/epicweb-dev/epic-stack https://github.com/epicweb-dev/epic-stack
- deleted 3y ago[deleted]
- 0xblinq 3y agoI’ve been a JavaScript developer for the last 7 years or so. Before that I was working on traditional MVC Django apps. This year I was moved to work on a Ruby On Rails project, given I had experience with Django (and some Laravel on the side) I was the best my company had at hand for that project. I was reticent at first and even considered looking for a new job, but I wanted to give it a try first. HOLLY SHIT. I’m fascinated by the amount of stuff I’ve been able to do, and how simple things are. And that I can search for other Rails projects in GitHub and learn from them because they’re all using the same tools and structure. I do think we’re wasting a lot of our companies money when using this kind of hipster bullshit edge stuff which is not necessary at all like in 98% of what we usually do.
- unmole 3y agoWould you say RoR is significantly different from Django?
- 0xblinq 3y agoThis should have been posted on April 1st