{"@attributes":{"version":"2.0"},"channel":{"title":"DEV Community: Torrin Leonard","description":"The latest articles on DEV Community by Torrin Leonard (@torrin).","link":"https:\/\/dev.to\/torrin","image":{"url":"https:\/\/media2.dev.to\/dynamic\/image\/width=90,height=90,fit=cover,gravity=auto,format=auto\/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3254359%2F268d8dc8-3d21-47f7-b272-45768d06fe3b.jpg","title":"DEV Community: Torrin Leonard","link":"https:\/\/dev.to\/torrin"},"language":"en","item":[{"title":"A Time Tracking App Wanted $28,800, So I Replaced It With a Homelab","pubDate":"Wed, 28 Jan 2026 04:18:13 +0000","link":"https:\/\/dev.to\/torrin\/a-time-tracking-app-wanted-28800-so-i-replaced-it-with-a-homelab-l7d","guid":"https:\/\/dev.to\/torrin\/a-time-tracking-app-wanted-28800-so-i-replaced-it-with-a-homelab-l7d","description":"<p>My parents run a software testing + consulting company called <a href=\"https:\/\/worx4you.com\" rel=\"noopener noreferrer\">worX4you<\/a>. They\u2019ve been doing it for <strong>17 years<\/strong>. They\u2019re stable, they\u2019re good at what they do, and their business is not complicated:<\/p>\n\n<p><strong>Hire good people --&gt; small business clients --&gt; track time --&gt; invoice --&gt; repeat.<\/strong><\/p>\n\n<p>For years they used <strong>Harvest<\/strong> for time tracking. Simple product, fair price. Everyone moves on with their life.<\/p>\n\n<p>Then Harvest changed their pricing after an acquisition (reported in 2024 as involving private equity firms Montagu and TA Associates). And the vibe went from \u201cboring SaaS you forget about\u201d to \u201cwait, are you serious?\u201d pretty fast.<\/p>\n\n<p>We were paying <strong>$9.99 USD per seat<\/strong>. Then my parents recieved an email about a pricing change: <strong>$17.50 per seat<\/strong>, plus a new \u201cusage\u201d layer where the options were either:<\/p>\n\n<ul>\n<li>\n<strong>$2,000\/month<\/strong> for \u201cunlimited usage\u201d, or<\/li>\n<li><strong>usage-based billing capped at $400\/month<\/strong><\/li>\n<\/ul>\n\n<p>As of writing, Harvest has not updated their <a href=\"https:\/\/www.getharvest.com\/pricing\" rel=\"noopener noreferrer\">pricing page<\/a> to reflect these increases.<\/p>\n\n<p>Maybe you\u2019re thinking: \u201cEnterprise pricing is always weird.\u201d Sure. But this wasn\u2019t a giant enterprise rolling in cash. This is a small business that just wants to log hours and get on with real work.<\/p>\n\n<p>So I did what any reasonable person with a mild homelab addiction does:<\/p>\n\n<p>I spun up <a href=\"https:\/\/www.kimai.org\/\" rel=\"noopener noreferrer\">Kimai<\/a>, an open source time tracking alternative, on our home server.<\/p>\n\n<p>Now everyone can log hours at our own URL, on our own hardware, for the cost of electricity and an internet connection we\u2019re paying for anyway.<\/p>\n\n<p>And here\u2019s the part I can\u2019t stop thinking about:<\/p>\n\n<h2>\n  \n  \n  I think this kind of pricing is accelerating open source adoption\n<\/h2>\n\n\n\n\n<p>Not because everyone suddenly became an \u201copen source purist\u201d.<\/p>\n\n<p>But because at some point, the math becomes insulting enough that people start asking:<\/p>\n\n<blockquote>\n<p>\u201cWait\u2026 why are we paying <em>how much<\/em>\u2026 to record hours?\u201d<\/p>\n<\/blockquote>\n\n<h2>\n  \n  \n  The pricing breaks the value prop\n<\/h2>\n\n\n\n\n<p>For context, my parents were on <strong>$9.99 USD per seat<\/strong> as a flat fee. Totally reasonable. Then they got a new quote: bump the per-seat price to <strong>$17.50<\/strong>, and add a whole new \u201cusage\u201d layer.<\/p>\n\n<p>Option one was a <strong>$2,000\/month<\/strong> flat fee for \u201cunlimited usage\u201d. Option two was \u201cusage-based\u201d, calculated from recent months, capped at <strong>$400\/month<\/strong>. Which, first of all, how do you even charge \u201cusage\u201d for a time tracking app? People are literally typing numbers into boxes.<\/p>\n\n<p>And <strong>the weirdest part<\/strong>: if we took the usage-based option, we\u2019d have to enable <strong>credit card billing on all invoices<\/strong>. Translation: route more of the company\u2019s money flow through Harvest\u2019s credit card billing, and potentially hand over <strong>+3%<\/strong> of invoice revenue in processing\/platform fees.<\/p>\n\n<p>At that point it stops feeling like \u201ctime tracking software\u201d and starts feeling like someone found a new place to stick a toll booth or <a href=\"https:\/\/en.wikipedia.org\/wiki\/Boom_(navigational_barrier)\" rel=\"noopener noreferrer\">boom<\/a>.<\/p>\n\n<p>If my parents took the \u201cunlimited usage\u201d option, that\u2019s roughly <strong>$400\/month<\/strong> for seats plus <strong>$2,000\/month<\/strong> for the unlimited fee.<\/p>\n\n<p>In total, my parents would have to pay <strong>$28,800 a year<\/strong> for a time tracking app.<\/p>\n\n<p>That\u2019s not \u201ca little increase to help out a time tracking startup\u201d. That\u2019s <strong>\u201ccongrats, your time tracker is now a mortgage-sized monthly bill.\u201d<\/strong><\/p>\n\n<p>Meanwhile, hosting Kimai:<\/p>\n\n<ul>\n<li>On a homelab: basically <strong>free<\/strong> (already paying for power + internet + old PCs and already bought hardware)<\/li>\n<li>On a VPS: still basically free compared to <strong>$28,000 A YEAR<\/strong>\n\n<ul>\n<li>A small VPS on DigitalOcean\/Linode\/etc is like <strong>$6\u2013$20\/month<\/strong>\n<\/li>\n<li>Call it <strong>$120\u2013$240\/year<\/strong>, plus a domain<\/li>\n<\/ul>\n\n\n<\/li>\n\n<\/ul>\n\n<p>Peanuts. Even accounting for time spent tinkering and setting everything up. <\/p>\n\n<p>For <strong>$28,000<\/strong> you could hire someone to build a full height rack, set up all the SaaS and IT services you could dream of, and still have enough money left over to buy 16gb of ddr5 for your gaming pc.<\/p>\n\n<p>Our homelab was basically a one-time hardware purchase. After that, it\u2019s a fixed platform I can keep extending. I can run dozens of Docker containers on it, hosting open source alternatives to the paid stuff we used to subscribe to, all for about the cost of a Netflix subscription each year.<\/p>\n\n<h2>\n  \n  \n  What I actually did\n<\/h2>\n\n\n\n\n<p>I\u2019m a fullstack dev, I main Ubuntu on a framework 16, and I LOVE homelab stuff. Been building out a full height rack for years. Currently I have three machines: one is a dedicated 70Tb NAS, another has 2 3080 Ti's for llms + docker containers, the other is dedicated to nginx, routing and more docker. This wasn\u2019t heroicly built. It was just modern infra being very accessible now. I spun up the Kimai in an afternoon of tinkering.<\/p>\n\n<p>At a high level, it\u2019s Kimai running in Docker, with Docker running inside a VM on Proxmox. I put Nginx in front so it\u2019s reachable at a clean URL, used Cloudflare for DNS and proxying, and got HTTPS set up with free SSL through Cloudflare. For backups, I rely on Proxmox ZFS snapshots, because I enjoy sleeping.<\/p>\n\n<p>Now my parents\u2019 team can log time like they always did, except we control the instance, we control the data, and we control the cost. And Kimai is\u2026 fine. It\u2019s not some VC-designed conversion funnel. It\u2019s a time tracker. That\u2019s the point: simple, does the job, set it up once and forget about it. <strong>What we thought we could rely on Harvest for.<\/strong><\/p>\n\n<h2>\n  \n  \n  The private equity playbook (and why it backfires)\n<\/h2>\n\n\n\n\n<p>I\u2019m not claiming I know what\u2019s happening inside Harvest. I\u2019m not on the board. I\u2019m not reading internal memos.<\/p>\n\n<p>But I <em>have<\/em> seen this pattern enough times to recognize the shape of it:<\/p>\n\n<ol>\n<li>Buy a stable \u201cboring SaaS\u201d with predictable customers\n<\/li>\n<li>Increase prices hard (especially on teams that can\u2019t easily churn)\n<\/li>\n<li>Add vague fees that are hard to justify (\u201cplatform\u201d, \u201cusage\u201d, \u201csuccess\u201d, etc.)\n<\/li>\n<li>Squeeze revenue now, worry about retention later\n<\/li>\n<li>If customers leave\u2026 that\u2019s a next-quarter problem<\/li>\n<\/ol>\n\n<p>A pretty common term people use for the worst version of this is <strong>asset stripping<\/strong>, extracting value (cash, fees, whatever) and leaving the company weaker on the other side. I theorize a version of this is happening over at Harvest right now. In extreme scinarios, the company dies as a result. The recent Hudson's Bay bankruptcy is a good example of this process. A 356 year old company, one that shaped the fabric of Canadian nationhood, obliterated in 2 years of private equity management.<\/p>\n\n<p>And here\u2019s the funny part:<\/p>\n\n<h2>\n  \n  \n  This strategy creates the exact conditions where open source wins\n<\/h2>\n\n\n\n\n<p>When pricing is fair, convenience wins.<br>\nWhen pricing gets weird, <strong>control<\/strong> wins.<\/p>\n\n<p>We've seen this play out before with movie streaming vs piracy. The 2020s have seen a surge in consumer streaming costs and a surge in content piracy.<\/p>\n\n<p>Open source doesn\u2019t need to be perfect. It just needs to be:<\/p>\n\n<ul>\n<li>good enough<\/li>\n<li>cheaper enough<\/li>\n<li>stable enough<\/li>\n<li>easy enough to host and use<\/li>\n<\/ul>\n\n<p>And in 2026, that last part is <em>way<\/em> easier than it used to be.<\/p>\n\n<h2>\n  \n  \n  The \u201cBlender effect\u201d: once open source is good, it\u2019s hard to compete\n<\/h2>\n\n\n\n\n<p>Blender is the example I keep coming back to. Blender didn\u2019t win because it had the best pricing page. It won because it became genuinely good, widely supported, and community-driven. It\u2019s also basically impossible to undercut because \u201cfree + open source\u201d is undefeated. ~$100\/month for cinema 4d and octane engine? No thanks.<\/p>\n\n<p>Any proprietary 3D tool competing with Blender has to justify why you should pay\u2026 when the free option is legit industry-grade.<\/p>\n\n<p>Time tracking isn\u2019t 3D modeling, obviously. But the pattern rhymes:<\/p>\n\n<p>If enough people get burned by \u201cstable SaaS --&gt; acquisition --&gt; pricing explosion\u201d, they start looking for exits.<\/p>\n\n<p>Open source is that exit.<\/p>\n\n<h2>\n  \n  \n  I think we\u2019re entering a new software cycle\n<\/h2>\n\n\n\n\n<p>I think we\u2019re going to see more of:<\/p>\n\n<ol>\n<li>\n<strong>Small stable SaaS<\/strong> exists for years (slow growth, reliable)<\/li>\n<li>It gets acquired (VC\/PE\/etc.)<\/li>\n<li>Prices go up, fees appear, support gets \u201coptimized\u201d<\/li>\n<li>Customers churn, especially the technical ones<\/li>\n<li>Open source alternatives get an influx of users + contributors<\/li>\n<li>The market resets around tools people can actually control<\/li>\n<\/ol>\n\n<p>And the difference now vs. 10-15 years ago is huge:<\/p>\n\n<p>You don\u2019t need a rack in a closet and a CCNA to self-host something.<\/p>\n\n<p>I do own a rack, but it's in my parents baseement... far better than a closet I'd argue. but my point remains!<\/p>\n\n<p>You can run a ton of open source SaaS tooling on:<\/p>\n\n<ul>\n<li>a Mac mini<\/li>\n<li>a Raspberry Pi<\/li>\n<li>a $10\/month VPS<\/li>\n<li>an old pc repurposed as a home server<\/li>\n<\/ul>\n\n<p>Open source adoption isn\u2019t just ideology anymore. It\u2019s logistics. And logistics that small businesses will take seriously when it's destroying their bottom line.<\/p>\n\n<h2>\n  \n  \n  The optimistic takeaway\n<\/h2>\n\n\n\n\n<p>Do I like watching solid products get enshittified? Not really.<\/p>\n\n<p>But I <em>do<\/em> like the unintended side effect:<\/p>\n\n<p>When companies squeeze users for short-term gains, they\u2019re basically funding the ecosystem that replaces them.<\/p>\n\n<p>People won\u2019t just roll over and take it. We didn\u2019t.<\/p>\n\n<p>We replaced Harvest with Kimai in an afternoon and moved on with our lives. Literally saving us <strong>$28,000 A YEAR.<\/strong> <\/p>\n\n<p>And if enough teams do that, the \u201cboring SaaS\u201d category starts to look a lot like:<\/p>\n\n<ul>\n<li>open tools<\/li>\n<li>self-hostable defaults<\/li>\n<li>paid hosting as a choice (not a hostage situation)<\/li>\n<\/ul>\n\n<p>Which is\u2026 honestly kind of great imo.<\/p>\n\n\n\n\n<p>Checkout my guide to setting up Kimai <a href=\"https:\/\/torrin.me\/blog\/kimai-setup\" rel=\"noopener noreferrer\">here<\/a>. If you wanna read more, checkout my other posts <a href=\"https:\/\/torrin.me\/blog\" rel=\"noopener noreferrer\">here<\/a> or visit my <a href=\"https:\/\/torrin.me\/\" rel=\"noopener noreferrer\">home page<\/a>.<\/p>\n\n","category":["opensource","productivity","saas","tooling"]},{"title":"The problem with React and MUI","pubDate":"Tue, 10 Jun 2025 03:08:47 +0000","link":"https:\/\/dev.to\/torrin\/the-problem-with-react-and-mui-gl2","guid":"https:\/\/dev.to\/torrin\/the-problem-with-react-and-mui-gl2","description":"<p>For the past year I've been working on a project that started as an internal tool at my job as a web dev at Equator Studios, the project has made me realize that there is a big problem with the way modern js libraries like Material UI are built for developers.<\/p>\n\n<p>Using Material UI is fairly burdensome for many reasons, the package size, it's reliance on react and the performance issues that introduces with the virtual dom, a quite horribly disorganized theme system, and the general resistance to customization one faces when trying to tweak anything about any component.<\/p>\n\n<p>Basically, if you don't want to ride their carefully designed rollercoaster the way they intended, seatbelt, bubble wrap and all, you are simply out of luck or face a heap of challenges and wasted time.<\/p>\n\n<p>Generally the problems with MUI and most modern JavaScript projects (React is another good example of this) can be distilled: They suffer from expanding complexity creep.<br>\n<\/p>\n\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">theme<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">createTheme<\/span><span class=\"p\">({<\/span>\n  <span class=\"p\">...<\/span>\n  <span class=\"na\">components<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\n    <span class=\"na\">MuiButton<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\n      <span class=\"na\">styleOverrides<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\n        <span class=\"na\">root<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\n          <span class=\"na\">borderRadius<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">8px<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\n        <span class=\"p\">},<\/span>\n      <span class=\"p\">},<\/span>\n    <span class=\"p\">},<\/span>\n  <span class=\"p\">},<\/span>\n<span class=\"p\">});<\/span>\n<\/code><\/pre>\n\n<\/div>\n\n\n<p>This complexity creep leads to an increase in confusion among new developers both arriving to material ui, or to the js ecosystem at large for the first time.<\/p>\n\n<p>As someone who's first experience with web development was manually creating html\/css\/js templates in Django, the React\/MUI ecosystem really warped and altered my understanding of web development into a gooie mess. React intro tutorials never teach you about the \"dom\" or how js is used to physically update html dom elements in a literal .html file.<\/p>\n\n<p>That concept was never communicated to me, not through code, not through the documentation, not even through third party tutorials on how to use these tools. They hand you the hammer and blabber something about nails while kicking you out the door, and thus I never had an understand of how the elements on the page were actually structured, rendering, updating, or reacting.<\/p>\n\n<p>This reveals another major issue with MUI and React: the complexity creep abstracts the need for basic understanding of the tools your using; the browser, the dom, css, and JavaScript itself.<\/p>\n\n<p>How did I wake up you ask? That's simple, I work with a senior developer who insists on building almost everything ourselves. We have our own websocket implementation, our own base64 encoder hard coded into our backend, files and files of complex projection math to render gis data.<\/p>\n\n<p>This persistent pursuit to create almost everything our selves has two main benefits over using off the shelf solutions: Everything is easily tweakable to our companies needs, and we are able to learn the fundamentals of any problem we tackle, improving our skills as developers.<\/p>\n\n<p>Remember that theme definition in MUI above? This it in destamatic-ui:<br>\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">theme<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span>\n    <span class=\"na\">button<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\n        <span class=\"na\">borderRadius<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">8px<\/span><span class=\"dl\">'<\/span>\n    <span class=\"p\">},<\/span>\n<span class=\"p\">};<\/span>\n<\/code><\/pre>\n\n<\/div>\n\n\n<p>That's it, a simple object with key <code>button<\/code>, the css class name, the value of which is a style object converted into inline css in the dom when that class is invoked. dead simple. All that's needed to define a global theme. This can even be duplicated and used in another <code>ThemeContext<\/code> in the same app.<\/p>\n\n<p>This approach brings convenience without cluttering the page with ten different parameters and objects you need to declare because it will break if you don't for some reason you can read about in the documentation or on their github issues pages when it breaks.<\/p>\n\n<p>The themeing system in our ui library destamatic-ui is quite advanced, it has inheritance, so you can reuse styles, variables and functions so you can create reactive themes:<br>\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"nx\">$alpha<\/span><span class=\"p\">:<\/span> <span class=\"p\">(<\/span><span class=\"nx\">c<\/span><span class=\"p\">,<\/span> <span class=\"nx\">amount<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"kd\">let<\/span> <span class=\"p\">[<\/span><span class=\"nx\">r<\/span><span class=\"p\">,<\/span> <span class=\"nx\">g<\/span><span class=\"p\">,<\/span> <span class=\"nx\">b<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">color<\/span><span class=\"p\">(<\/span><span class=\"nx\">c<\/span><span class=\"p\">);<\/span>\n    <span class=\"k\">return<\/span> <span class=\"nx\">color<\/span><span class=\"p\">.<\/span><span class=\"nf\">toCSS<\/span><span class=\"p\">([<\/span><span class=\"nx\">r<\/span><span class=\"p\">,<\/span> <span class=\"nx\">g<\/span><span class=\"p\">,<\/span> <span class=\"nx\">b<\/span><span class=\"p\">,<\/span> <span class=\"nf\">parseFloat<\/span><span class=\"p\">(<\/span><span class=\"nx\">amount<\/span><span class=\"p\">)]);<\/span>\n<span class=\"p\">},<\/span>\n<span class=\"nx\">$color<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">#FF0000<\/span><span class=\"dl\">'<\/span>\n<span class=\"p\">...<\/span>\n<span class=\"o\">&lt;<\/span><span class=\"nx\">div<\/span> <span class=\"nx\">style<\/span><span class=\"o\">=<\/span><span class=\"p\">{{<\/span> <span class=\"na\">background<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">$alpha($color, 0.5)<\/span><span class=\"dl\">'<\/span><span class=\"p\">}}<\/span> <span class=\"sr\">\/<\/span><span class=\"err\">&gt;\n<\/span><\/code><\/pre>\n\n<\/div>\n\n\n<p>That's not all though. destamatic-ui is built on two other libraries that have this same no complex nonsense approach: destam, a delta state management library, and destam-dom, a dom manipulation library built on destam's observer reactivity.<\/p>\n\n<p><a href=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwq09nfx40z0o12q3o506.png\" class=\"article-body-image-wrapper\"><img src=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwq09nfx40z0o12q3o506.png\" alt=\" \"><\/a><\/p>\n\n<p>Why is destam-dom better and simply faster? destam-dom doesn't use a virtual dom, it doesn't re-render the entire page on an update. It directly modifies the dom, and the specific element of the dom a given component actually needs to update. Which means it doesn't require the entire page to be reloaded whenever there is even the smallest of updates.<\/p>\n\n\n<div class=\"crayons-card c-embed text-styles text-styles--secondary\">\n    <div class=\"c-embed__content\">\n        <div class=\"c-embed__cover\">\n          <a href=\"https:\/\/torrin.me\/\" class=\"c-link align-middle\" rel=\"noopener noreferrer\">\n            <img alt=\"\" src=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Ftorrin.me%2Fsite-card.png\" height=\"auto\" class=\"m-0\">\n          <\/a>\n        <\/div>\n      <div class=\"c-embed__body\">\n        <h2 class=\"fs-xl lh-tight\">\n          <a href=\"https:\/\/torrin.me\/\" rel=\"noopener noreferrer\" class=\"c-link\">\n            Torrin Leonard | Full-Stack Engineer\n          <\/a>\n        <\/h2>\n          <p class=\"truncate-at-3\">\n            Full-stack software engineer building AI-powered web apps, custom UI frameworks, and the infrastructure they run on.\n          <\/p>\n        <div class=\"color-secondary fs-s flex items-center\">\n            <img alt=\"favicon\" class=\"c-embed__favicon m-0 mr-2 radius-0\" src=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Ftorrin.me%2Ffavicon.png\">\n          torrin.me\n        <\/div>\n      <\/div>\n    <\/div>\n<\/div>\n\n\n\n<p>I built my personal site <a href=\"https:\/\/torrin.me\" rel=\"noopener noreferrer\">torrin.me<\/a> using our destam stack, my site was originally built with React, React-Three-Fiber, and MUI. I cannot tell you how buttery smooth the loading is now, the theme transitions, the snappy reactivity. Using destam-dom simplified my build pipeline, made deployments 40 seconds.<\/p>\n\n<p>Working with the destam stack professionally has not only inspired me to build my hobby projects using it but has also deepened my understanding of how websites function. By embracing a more efficient, back-to-basics approach, I've learned to create web applications that are lean, efficient, and snappily reactive. I firmly believe that if more developers adopt this approach to libraries and frameworks, it could lead to a healthier ecosystem for newcomers to learn and create.<\/p>\n\n<p>If you're tired of the complexity and ready to experience the difference, I encourage you to give the destam stack a try. We've dedicated ourselves to crafting tools that prioritize both developer and user comfort. You can explore the stack and see for yourself:<\/p>\n\n<ul>\n<li><a href=\"https:\/\/github.com\/torrinworx\/destamatic-ui\" rel=\"noopener noreferrer\">destamatic-ui<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/Nefsen402\/destam-dom\" rel=\"noopener noreferrer\">destam-dom<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/equator-studios\/destam\" rel=\"noopener noreferrer\">destam<\/a><\/li>\n<\/ul>\n\n<p>Join us in creating more efficient and enjoyable web experiences!<\/p>\n\n\n\n\n<p>This was just a brief introduction to destam, destam-dom, and destamatic-ui. I'll be writing more in depth articles and tutorials about the stack, and some adjacent projects I've been working on using it to show it off. Please let me know what you think!<\/p>\n\n","category":["webdev","javascript","react","opensource"]}]}}