DevIdiot!
Turning plain text into a calendar file in the browser: dates, time zones and ICS quirks
I used to be an office planner, and plans arrived by email and chat all day. Every one had to be typed into a calendar. So I built a small converter: paste text, check what it found, download an .ics file. It runs entirely in the page. Nothing is uploaded and there is no account: https://yotei.win/text-to-icsThis is what I learned writing it, in case you are building something similar. Finding the dateThere is no single format to parse, so the reader tries patterns in order and takes the fi
Turborepo, Nx and Vite Task undo your commit on a cache hit
Commit a file that lives in a task's output folder, then build. Turborepoputs the old copy back and calls it FULL TURBO:$ git log -1 --oneline -- packages/site/out/LICENSEaa424fd v3$ turbo run build โข turbo 2.11.10 โข Packages in scope: site โข Running build in 1 package โข Remote caching disabledsite:build: cache hit, replaying logs d02065a43c947846site:build: $ cat src/*.txt > out/index.txt Tasks: 1 successful, 1 totalCached: 1 cached, 1 total Time: 5ms >>> FULL TURB
Count appearances and identities separately in JavaScript
Disclosure: text and example prepared with AI assistance. The example below is synthetic; it is not a production data export.A local-search dataset has at least two useful units: appearances within a query and unique business identities across queries. Mixing them changes the denominator before the analysis starts. In MapaLocalโs restaurant study, eight Google Maps searches produced 160 appearances and 114 identities. This tutorial shows a small way to preserve that distinction in JavaScript.
A license-key server on Cloudflare Workers + KV, with signed keys and activation limits
If you sell a desktop app, CLI, plugin or template, you eventually need license keys: one per sale, checked inside the app, and switched off on refund. Hosted services do this for roughly $29 a month. You can also run the whole thing yourself on Cloudflare Workers + KV, with no server to babysit. This post walks through the design I settled on. It is useful whether or not you use my kit (more on that at the end; I made it). What the server has to doCreate a key (admin only) and show it once
Building FileVexa: A 100% Client-Side Private Web Utility Platform
I built "FileVexa", a fast, privacy-focused online file converter and utility suite designed to process files 100% inside your browser using JavaScript, Canvas API, and WebAssembly. Zero files are uploaded to external processing servers, making it 100% secure and private.๐ Key Online Tools Included in FileVexa:๐ท Image Converters & CompressorsCompress Image to KB (20KB, 50KB, 100KB, Custom): Resize & compress images to exact KB requirements for job applications and admission forms. ๐ Try
RAG Pipeline Utils v3.9.1: Warnings on the Edge No Longer Throw
A patch release: /edge on Cloudflare Workers without nodejs_compat no longer throws "process.emitWarning is not a function" for cached pipelines and cost estimates.npm install @devilsdev/rag-pipeline-utils@^3.9.1 The edge fixThis affects you if you import @devilsdev/rag-pipeline-utils/edge in aCloudflare Worker without the nodejs_compat flag. Those Workers have noprocess object, so where the library meant to warn you, it failedinstead: a cached pipeline with a component that has no cache ke
A birth time is a wall clock, not an instant: how one timezone bug moves a rising sign
If you turn "14:00 on 15 July 1990" into a Date on whatever device runs your code, you get a different instant on every device. For an astrology calculator that is not a rounding problem: the same birth data produced four different rising signs. The fix is to store the wall-clock reading together with the IANA zone of the birth place, and to convert on the server, never from the runtime's own zone.I build Burcapp, a free set of Turkish astrology calculators, and this bug is why birth time now tr
I Built a 100% Client-Side 8-in-1 DevTools Suite (Zero Latency & Full Privacy)
Hey DEV Community! ๐As web developers, we constantly use online formatters, decoders, and generators. However, many existing web tools are bloated, rely on heavy server requests, or track unnecessary data.To solve this, I built DevTools Hub PRO โ a lightweight, 100% browser-native utility suite designed for speed, privacy, and zero server latency.๐ Live Project: https://musharibkhalid.github.io/devtools-hub/ โจ What's Inside (8-in-1 Tools):๐ ๏ธ JSON Formatter & Validator: Instantly format,
Why I moved a TV app's source contract into JavaScript plugins on QuickJS
Yonto Player talks to a media server, or to a folder, through one interface: ContentSourceAdapter. The rule itself is covered in the opening post of the series. This one is about what sits behind the interface, and how it changed.The short version is that the source contract started out as an HTTP API, moved into the app as JavaScript plugins, and is now the way every Jellyfin, Plex and Emby source works. I will say why, what a plugin looks like, and what running JavaScript inside a TV app costs
๐ What's Coming in Glowfy v1.2!
Hey dev community! ๐ Quick sneak peek at what we're cooking up for Glowfy v1.2:๐๏ธ Layout Sliders: Live Width and Padding controls, auto-synced to your CSS, CSS Variables, and Tailwind exports.๐ฒ Smart Randomize: Now tab-aware (no forced switches) with curated, professional Glassmorphism presets.๐ผ๏ธ Richer Live Preview: New gradient and image backgrounds to test shadows and glass effects under real-world conditions.โก 60 FPS Transitions: Ultra-smooth tab switches and micro-interactions.๐ While we fi
I built a free HYROX pace & split calculator with Next.js โ splits, roxzone & printable pace cards
For the past few weeks I've been building HYROX Pacer โ a free, no-login web app that helps HYROX athletes plan their race: target finish time, 8ร1km running splits, 8 station target times, and Roxzone transitions, all in one place. WhyHYROX is booming, but race planning is scattered across spreadsheets, forum posts and YouTube videos. I wanted one interactive tool where you pick your division (Open / Pro / Doubles), set a target time or pace, and get station-by-station splits you can actua
Next.js 15 App Router: Best Practices I Learned Building 10+ Projects
After building over ten production projects with the Next.js App Router, I've accumulated a solid set of patterns that work and an equally long list of mistakes I won't repeat. This post is the article I wish I'd had when I first migrated from the Pages Router. Server Components Are the Default โ Embrace ItThe single biggest mental shift is that components are server-rendered by default. This means you can fetch data directly inside any component without useEffect or client-side loading sta
Why Your Best Wholesale Clients Hate Ordering From You: The Simple Fix That Wonโt Cost $300/Month
If you walk into the office of almost any growing wholesale distributor, textile supplier, or regional manufacturer today, youโll see the exact same setup.A sales rep sits in front of a desktop monitor with two windows open side by side: WhatsApp Web on the left, and a massive, color-coded Excel spreadsheet on the right.Then the messages start coming in: a 40-second voice note or a blurry photo of a handwritten paper slip: "Bro, send 40 cartons of the medium grade like last month, and let me kno
A layout that works on every screen
Your page looks right on your laptop and scrolls sideways on your phone: this guide finds what is too wide and fixes the usual causes one at a time.The examples here are screenshots; they run live in the original article.You will build a small travel page that breaks on a phone the way real pages do, look at it the way a phone does, find the parts that stick out, and fix each one. At the end the same page is one column on a phone and two columns on a laptop. You need a React app with Box Kite in
Your CSV import works on your laptop. Then a customer in Germany uploads a file.
A first CSV import often looks like this:const text = await file.text();const rows = text.trim().split('\n').map((line) => line.split(','));It works on the Google Sheets export you used for testing. Then a support ticket arrives:"The import says every row is invalid. It's the same spreadsheet we use every month."You open their file:ID;Name;Email;Plan;Seats;MRR;CountryC-3001;Jos๏ฟฝ Mart๏ฟฝnez;[email protected];Pro;6;299,00;ESThat one line hides three everyday Excel problems outside the US โ and your
Hello DEV Community! I'm Gabriel, a Full Stack Developer ๐
Hey everyone!I'm Gabriel, a Full Stack Developer from Brazil, and I've recently joined the DEV Community!I've been working with software development, mainly focusing on:C# and ASP.NET CoreReact.js and TypeScriptSQL Server and Entity Framework CoreREST API DevelopmentJWT Authentication and AuthorizationI enjoy building applications, solving technical challenges, and learning new technologies along the way.๐ What am I currently working on?One of my recent portfolio projects is a Restaurant Managem
Deno for Beginners: JavaScript's Modern Runtime
Deno is a modern runtime for JavaScript and TypeScript, created by Ryan Dahl โ the same person who created Node.js โ as a fix for the things he wished he had done differently the first time. It runs JavaScript outside the browser, like Node, but with security, TypeScript, and modern tooling built in from the start. If you know JavaScript and want to see where the language is heading, Deno is worth understanding.How does Deno work? You write a JavaScript or TypeScript file and run it with deno ru
I audited 100 third-party VS Code extensions. 19 ship known-CVE deps
Live Server โ 84 million installs, the top row of the results below โ bundles websocket-driver 0.7.4 and gets caught by CRITICAL GHSA-xv26-6w52-cph6 / CVE-2026-54466. It is the loudest finding in a scan of the top 100 third-party extensions on the VS Code Marketplace, but not the only one.Every finding below is at the evidence level "Present": the vulnerable (name, version) pair is inside the shipped .vsix bundle. I haven't shown that any of them is reachable or exploitable; the levels are expla
chalk and debug shipped malware for a few hours. Waiting 7 days would have skipped it.
In September 2025, a maintainer of several very popular npm packages, including chalk and debug, had their account phished. New versions were published with code that tried to steal cryptocurrency from browsers. The community spotted it quickly, and the bad versions were removed within hours.The teams that got hit were the ones whose installs ran in those hours. Teams that waited even a couple of days never saw the bad versions at all. Most bad releases have a short lifeNot every bad releas
Inventory Sync for Dropshipped Toys: Three Places Stock Lies
Every dropshipping operation we have looked at had the same bug: three stock numbers, all different, all defensible. Place one: the supplier's spreadsheetThe supplier's stock file is usually a manual export, refreshed when someone remembers. It says 4,800 units. The physical count is 3,100 because 1,700 are allocated to another buyer's order that has not shipped.available = on_hand - allocated. Most supplier exports give you on_hand and call it stock. Place two: your own bufferYou hold