Why?
🚜
Why does this exist?
Section titled “Why does this exist?”I’ve been around a long time, and I’ve tried SO many Frameworks and CMS’s over there years…and they ALL felt cumbersome and unwieldy.
The last thing I wanted to do was build a framework, and I’ve given up on this ideas THOUSANDS of times over the years, but I keep coming back to it because nothing quite scratches my itch.
Web development doesn’t need to be so hard! Sure there’s some level of complexity involved, but it doesn’t need to be nearly difficult and complex as people make it.
The majority of development problems are already solved, and a clean system that combines (the basic funcitonality) will take care of 80% of the problems, letting you spend your energy on the things that matter most.
The real value of DW (and any framework) is that all the big decisions are made for you, and you don’t have to spend time deciding which tech to use. I’ve thought long and hard about these solutions (and gone through the pain of integrating them together) and settled on good pragmatic decisions made with a few key principles in mind:
- keep architecture as simple as possible
- keep the workflow simple too
- make boring decisions (avoid being overly clever)
fw written by (and for) someone who writes apps … i’m not “a framework developer” (although i do plenty of thinking along these lines), at the end of the day, i’m an application developer and i care about solving the problems people pay me to solve Tried a lot of shit I hated, know what works best for me, know the kind of workflow I want)
Focus on development speed, build something reliable
Section titled “Focus on development speed, build something reliable”- don’t want to get lost in the weeds solving problems i don’t need/want to solve
- don’t want to fuck with infra or security AT ALL
- want “table stakes” functionality that i don’t have to “invent”
- 2fa, image uploads, job queues, email service, etc
- focus on building complex features fast & shipping, building the “normal” kinds of apps everyone expects these days
Why would I use it?
Section titled “Why would I use it?”If you’ve bemoaned the amount of time and effort it’s taken to set up and configure auth, this is for you. If you’ve thrown objects across the room in frustration while trying to get photo uploads to work (with cropping), this is for you. If a client has asked you to build a bespoke back office system that does…literally anything…this is for you.
This is especially for you if you want to build something that’s well-though-out and reliable WITHOUT having to think about it!!!
dw components / auth/ boilerplate - you don’t want to write this stuff yourself, but you don’t want to use just anyone’s stuff. you want something that is carefully constructed and thought-out. the problem i’ve run into over the years is that i DONT want to build all (really any) of this stuff, but the experience of trying to use someone else’s stuff is maddening…and there’s no guarantee that it’s actually good. (ex, a lot of people make components, some of them are nice, a lot of them are shitty) (other people make something as a proof of concept or engagement bait and move on to their next project when they get bored with their partially-baked solutions). i want to use something that i didn’t write, but i want it to be made by someone who’s smarter than me, understands the problem, and has dedicated a lot of time and thought to solving the problem. i’m not saying that i’m necessarily smarter than you, but i am reasonably intelligent and i’ve thought long and hard about these problems. i’m offering my solutions as a benefit, saving you from going down the various rabbit holes while still providing a nice (reliable, polished, efficient, rugged) product
(follow-up question) why not just use ”____”? (radix/shad, react, postgres, drizzle, blah blah) … i don’t like them. you’re welcome to use anything, of course, but if this is your line of thinking, this is not going to be a good fit for you. fortunately there are like a million other options, and you can always put your own solution together. you can just do things!
Why did you choose this technology?
Section titled “Why did you choose this technology?”Why have we made the decisions we’ve made? Why choose these specific tools & libraries?
I’m so glad you asked:
Why Astro?
Section titled “Why Astro?”why astro? it’s fucking easy
- you want react components? You got it!
- vue? svelte?
- use anything you want!
- easy dev workflow, easy (enough) deployment story
Why Astro?
CRUD apps with Astro? Don’t mind if I do!
Clean organization & workflow, easy to understand , easy enough to make it what you need to be
Omg these components!
Astro components are great, super easy
Use anything else too! It works with everything! IT WORKS WITH EVERYTHING!!!!!
it’s a little heavier than it used to be (php put the files on your server & run the install script) (lot more files now) … but it’s worth it! this functionality can be pretty complex and this is the best way (imo) to manage it
here’s a more specific breakdown - https://strapi.io/blog/building-faster-content-driven-sites-with-astro same vibes here - https://developeraryan.in/blogs/astro-for-react-devs/
astro / dw advantages (over laravel, rails)
- jsx components!
- plug & play w/ any framework components (can use react, vue, svelte)
- easier deployment w/ modern platforms (and relatively easy vps setup, depending on your vps)
- normal file based routing and (relatively) sane app org
- tailwind integrated
Why Node?
Section titled “Why Node?”Why node? It’s everywhere! (So many people have built integrations w services, easy pkg integration) Why node More secure on a vps (than php apps for sure) it’s easy to set up on your local env, everyone has it anyway also, re: node, we’re specifically using npm (cli) because it’s the “normal” way to do this. fuck using pnpm or yarn or whatever else.
Why TypeScript?
Section titled “Why TypeScript?”First, I want to be clear that I don’t like TypeScript. If TS has 1 hater it’s me. If TS has 0 haters, I’m dead.
why js/ts/node?
- ecosystem is HUGE, tons of people building stuff i can use for free
- it’s easier than it used to be (not ideal, but it works pretty well these days)
- fast enough processing, reliable architecture etc
- easy(-ish) turn-key functionality
for like 10 years DW was written with php and it was great. i hate typescript and swore i would NEVER use it, but here i am, using typescript for new apps…and loving it!
this toolkit was previously built on php (focusing on ease of deployment & dev workflow, but now node is really easy, MUCH easier to deploy w/ modern platforms, and older platforms [vps w/ hetzner, kh, do, linode, etc] is easy enough to set up too…modify for your needs)
TS is GREAT for AI
- you can write apps with this stack SO FREAKING FAST with claude & cursor
“Hey bro, you tryna fuckin do drugs and fuckin write code? Like, welcome, it’s JavaScript baby!”
- Daniel colborne, nptm “back and better than ever”
IDEs LOVE typescript, you got type definitions, click following function references (idk what they’re called) (not ts-specific, but ts works great in this context)
Why Flyon?
Section titled “Why Flyon?”why flyon?
-
did a brief exploration of an implementation w/ just daisyui (because it’s lighter and “simpler” and the “normal” go-to choice for a lot of devs)…not ideal
- concerned about accessibility issues
- flyon built on preline
- color contrast issues
- daisy just feels incomplete compared to flyon/preline
- concerned about accessibility issues
-
it feels COMPLETE
- there are like a million ui kits out there but they don’t feel quite right, still a lot of rough edges that require time and effort to make them feel polished and professional
- we’re grown up professionals with deadlines, and the whole point of using a ui kit is to have something that looks and feels COMPLETE and doesn’t need additional work to make it look nice and coherent. it should JUST WORK
-
daisy is nice, basecoat is nice, but they’re not the right choices
-
we need turn-key components that are ACCESSIBLE and COMPLETE feeling
-
maybe daisy will be it one day, but it’s not it now
-
basecoat/shad is nice, but too much involved to get the functionality we want
- basecoat is sick and looks great by default, but it’s “headless” w/ minimal style and limited components (less pre-built stuff)
- which is fine, but what we want here is pre-built components you can plug in and magically have a complete feeling thing that’s accessible (enough)
- basecoat is sick and looks great by default, but it’s “headless” w/ minimal style and limited components (less pre-built stuff)
-
it’s built on daisy (decent aesthetic) AND preline (and iconify) … concern for “finished” looking aesthetics and more accessible (headless) components
-
want to hear various 14yo’s criticism of flyon? check this out!
- misc flyon reddit crit:
- https://www.reddit.com/r/tailwindcss/comments/1jlnw7l/flyonui_v2_open_source_tailwind_css_components/
- https://www.reddit.com/r/tailwindcss/comments/1led4k0/flyonui_ultimate_tailwind_blocks_and_tailwind/
- https://www.reddit.com/r/sveltejs/comments/1g6cu3t/tailwind_css_components_library_for_svelte_flyonui/
- https://www.reddit.com/r/tailwindcss/comments/1g0dz95/open_source_fully_free_components_library_for/
Why the Curated tools bundle?
Section titled “Why the Curated tools bundle?”There’s so much stuff out there! Some of it’s really good, a lot of it’s really…not good.
Dw carefully chosen (/vetted /curated) dependencies (/tools/solutions) Dw tried to make the most “normal” decisions (re: tooling solutions) (Astro tw daisy etc) Straightforward and obvious choices Not too clever or devious (nonstandard)
do what you can (try to do everything) with the provided libs (alpine, tailwind, etc)
carefully curated collection of libraries / packages and dev tools Designed to provide facilitate productive and enjoyable workflow while building a strong reliable performant application, and having fun along the way! Helps you build fast too! Easy to change adapt as business /client needs change
Dw curation - most development problems are already solved We’ve wired together all the “best” ones (made some pretty good decisions about what to use and how to use it) Dw curation ethos Try to make the most normal and obvious decions (tailwind mysql etc) Straightforward and unsurprising, simple and clear, straightforward and understandable, smart but not overly clever) Professional grade