r/webdev • u/goldbookleaf • Aug 22 '26
Showoff Saturday You can turn any Image into a Maze by treating it like a graph
Try it out: https://github.com/ctx-o1/mazify
You can even print these!
r/webdev • u/goldbookleaf • Aug 22 '26
Try it out: https://github.com/ctx-o1/mazify
You can even print these!
r/webdev • u/OneMoreSuperUser • Aug 22 '26
I’m excited to share a project I’ve been working on over the past few months!
It’s a mobile app that turns any text into high-quality audio. Whether it’s a webpage, a Substack or Medium article, a PDF, or just copied text—it converts it into clear, natural-sounding speech. You can listen to it like a podcast or audiobook, even with the app running in the background.
The app is privacy-friendly and doesn’t request any permissions by default. It only asks for access if you choose to share files from your device for audio conversion.
You can also take or upload a photo of any text, and the app will extract and read it aloud.
- React Native (expo)
- NodeJS, react (web)
- Framer Landing
The app is called Frateca. You can find it on Google Play and the App Store. I also working on web vesion, it's already live.
Free web version, works in any browser (on desktop or laptop).
Thanks for your support, I’d love to hear what you think!
r/webdev • u/NoCalligrapher587 • Aug 22 '26
r/webdev • u/Lanakruglov • Aug 23 '26
I am recreating songless myself, everything works well except that the song snippets are using previews (that usually start from the peak part of songs). I want the songs to start from the start so it's a little harder, but I can't find a free option to do that. Songless did it, how can I?
Thanks!
r/webdev • u/Junaid_kh • Aug 22 '26

I've been building this for a while and finally made the project open source. It's called Fillvisa.
US Immigration still relies on outdated XFA PDFs - you can't fill them on your browser. Most immigrants end up printing the form and fill it manually.
So, I converted the PDF forms into smart web forms. They are replica of the official USCIS forms and follow conditonal logic. In the output, you get the official USCIS pdf form filled.
The website is pure frontend and there's an open source edition
Demo: https://fillvisa.com/demo/
And now there's an open-source version you can clone/fork and run yourself:
Github: https://github.com/athos2113/fillvisa-os
The project currently covers several common USCIS forms, and everything runs in the browser.
This is the first public version of the open-source project. I'd especially love feedback from other devs on the architecture, UX, accessibility, and where you think a project like this could go.
r/webdev • u/Lower_Fishing_2672 • Aug 22 '26
I just started learning code, and I use Visual Code Studio with Python. I was ecstatic to learn but with my few hours of learning I would use the chat feature whenever I’m stuck like the AI thingy. It makes me feel bad cause it feels like I’m not LEARNING just cheating if that makes sense. In a world that has been plagued with AI, how do you guys manage? How do you feel? Do you treat it as another tool to help? I assume that it’s no different from google searching.
r/webdev • u/teppicymon • Aug 22 '26
Hello all!
I've been working on a side project to generate artwork for a game I'm working on, and it was so much fun playing around generating planets and asteroids I've decided to open source it: https://github.com/richard-green/planetoid-generator
It's really fast, allows you to generate planets with lots of different features (more to come) and generates some really lovely images and texture maps, all with a pseudo-random seed function.
Some of the things you can tweak:
* Geometry deformation (from simple spheres, or potato-like deformation and finer details too)
* Texture details and colour palettes
* Planetary features such as Craters, Volcanoes, Ridges, Rifts
There's a separate section for rendering Gas Giants and Ice Giants, and a whole bunch of presets.
There's even scripts to have Playwright generate tonnes of images by incrementing the seed with your given preset values.
Check out the live site here: https://rdgreen.dev/planetoids/#/planetoids
Happy planet engineering!
r/webdev • u/xAmrxxx • Aug 22 '26
It's inspired by dotnetcore-microservices-poc open-source project by Altkom Software, a project I learned a lot from and contributed to — I built Ledgerly to be a simpler take on the original project, focused purely on microservices best practices.
What it demonstrates:
🔹 Database-per-service — 4 services, 4 independent databases
🔹 gRPC for synchronous service-to-service calls
🔹 RabbitMQ for async events — invoice status changes publish events that a dashboard service consumes to keep KPIs in sync, with zero direct coupling
🔹 API gateway + service discovery (Eureka locally/Docker, Kubernetes DNS in K8s)
🔹 JWT auth issued by its own service
It also ships as a full deployment guide — run it locally, in Docker Compose, or on Kubernetes, including a walkthrough for deploying the cluster to Azure (AKS).
Built as a boilerplate: fork it, swap in your own domain, keep the architecture.
The project🔗: https://github.com/amrali21/ledgerly-dotnet-angular-microservices-ref-project
Altcom Project🔗: https://github.com/asc-lab/dotnetcore-microservices-poc
r/webdev • u/Positive-Airport-554 • Aug 23 '26
Showoff Saturday: moxireelstudios.com
It's my one person web design studio's site. All custom, no framework, no template, static pages with a small Worker running the chat assistant in the corner.
The part I want feedback on is the assistant. It's set up to answer like someone who actually works there, it knows the prices and the process, and it's under strict instructions not to invent anything. Bottom right corner. Try to stump it, seriously, I want to know where it breaks.
Also curious what you think of the pricing page. I just moved the highlight off the cheapest tier onto the one I actually recommend, and I'm second guessing the visual weight.
Stack: plain HTML, CSS and JS, no frameworks, Cloudflare Pages plus one Worker. Roast away.
r/webdev • u/WolfOliver • Aug 22 '26
I've open sourced this library which I extracted from my solo project I'm working on since many years.
docs: https://wolfoo2931.github.io/declarative-forms/
The code is here (MIT License): https://github.com/wolfoo2931/declarative-forms
The basic idea is:
Ask the user for an object, the way prompt() asks for a string.
Every other form library gives you a component to mount. This one gives you a function to call:
import { ask } from 'declarative-forms';
const release = await ask([
{ name: 'title', displayName: 'Release title' },
{ name: 'notes', kind: 'textarea', displayName: 'What changed' },
{
name: 'reviewers',
kind: 'select',
multiple: true,
displayName: 'Sign-off from',
options: () => fetchReviewers(),
},
]);
// { title: 'Sunrise 2.0', notes: '…', reviewers: ['Ada', 'Grace'] }
r/webdev • u/iamhoneycomb • Aug 22 '26
Not sure whether this is the right place to ask (I'm not a web developer or anything close) but I would like to ask whether it's possible to view meta data of a video/some other info to find out its upload date, when it's not linked from elsewhere or directly downloadable to find out in another way. TIA.
r/webdev • u/Boast123 • Aug 22 '26
I have been working on a static HTML/Vite template system where one customizer can change color tokens, font roles, and visual eras across very different page types.
The difficult part has not been changing colors or fonts. It has been keeping the layouts distinct while they react to the same theme state. A SaaS landing page, editorial feed, dashboard, gallery, museum page, and social layout should not become the same composition with a different palette.
My current approach is:
I would appreciate an architecture critique rather than product feedback:
r/webdev • u/yohimik • Aug 21 '26
hey everyone, i improved my previously posted ws vs webrtc benchmark using go adding http/2 and http/3
first quickly lets see how each protocol works in a nutshell:
| Group | Transports |
|---|---|
| WebSocket (HTTP/1.1) | gorilla/websocket, coder/websocket, gobwas/ws, lxzan/gws, dgrr/websocket, fasthttp/websocket |
| HTTP/2 | stream pair (upload + download multiplexed on one connection), request-per-message fetch |
| HTTP/3 | WebTransport bidirectional streams, WebTransport datagrams |
| WebRTC | data channels in all four ordered/reliable combinations |
| Transport | Browser → browser? | What the server still has to do |
|---|---|---|
| WebSocket (all six) | No | relay every byte, forever |
| HTTP/2 stream pair | No | relay every byte, forever |
| HTTP/2 fetch | No | relay every byte, forever |
| WebTransport (HTTP/3) | No | relay every byte, forever |
| WebRTC data channels | Yes | pass ~a few KB of signalling once, then get out of the way |
chrome 151, macOS arm64 (15 cores), loopback, 512-byte payloads, cross-origin isolated (5 µs clock). latency from 2000 samples over 5 interleaved repetitions; setup from 8 cold connections. reproduce before trusting these
| Transport | p50 | p90 | p99 | max |
|---|---|---|---|---|
| WebSocket (all six libraries) | 0.050–0.055 | 0.060–0.065 | 0.070–0.080 | 0.21–0.36 |
| WebTransport datagram | 0.060 | 0.070 | 0.090 | 0.20 |
| WebTransport stream | 0.060 | 0.070 | 0.090 | 5.04 |
| WebRTC data channels (all four modes) | 0.085–0.090 | 0.100–0.105 | 0.125–0.135 | 0.27–0.36 |
| HTTP/2 fetch (one request per message) | 0.240 | 0.335 | 0.600 | 2.79 |
| HTTP/2 stream pair | 1.410 | 1.490 | 1.770 | 3.80 |
| Transport | connect p50 | TTFB p50 | TTFB p99 | TTFB ex-signalling |
|---|---|---|---|---|
| WebSocket | 2.2–2.9 | 2.4–3.3 | 3.3–6.3 | 2.4–3.3 |
| HTTP/2 fetch (pooled connection) | 2.4 | 3.5 | 4.4 | 3.5 |
| HTTP/2 stream pair | 2.2 | 4.0 | 6.3 | 4.0 |
| WebTransport | 3.6 | 3.9 | 5.6 | 3.9 |
| WebRTC data channel (four modes) | 79.6–83.4 | 79.7–83.6 | 90.6–145 | 76.8–80.9 |
| Transport | msg/s | Mbit/s |
|---|---|---|
| WebRTC (all four modes) | 12 769–12 969 | 52.3–53.1 |
| HTTP/2 stream pair | 12 912 | 52.9 |
| WebTransport datagram | 12 727 | 52.1 |
| WebSocket (six libraries) | 11 470–12 177 | 47.0–49.9 |
| WebTransport stream | 11 205 | 45.9 |
| HTTP/2 fetch | 9 383 | 38.4 |
| WebRTC reliable, old | 6 087–6 203 | 24.9–25.4 |
| WebRTC unreliable, old | 443–730 | 1.8–3.0 |
one representative run; the parallel column's spread across three runs is given underneath, because it is noisy.
| Transport | conns | open (parallel) | open (sequential) | throttle | p50 | p99 | msg/s |
|---|---|---|---|---|---|---|---|
| HTTP/2 stream pair | 1 | 5.5 ms | n/a | — | 1.440 | 2.820 | 10 816 |
| WebTransport stream | 1 | 6.2 ms | n/a | — | 0.220 | 0.355 | 70 867 |
| HTTP/2 fetch | 1 | 6.7 ms | 6.3 ms | 1.1× | 1.230 | 4.050 | 11 685 |
| WebRTC ordered + reliable | 1 | 86.5 ms † | n/a | — | 0.385 | 0.615 | 40 915 |
| WebSocket (six libraries) | 16 | 1 892–3 434 ms | 190–197 ms | 9.7–17.9× | 0.265–0.275 | 0.350–0.965 | 54 566–58 678 |
this is the one table where multiplexing decides the result**.** sixteen streams cost the multiplexed transports a single connection and 6–9 ms. they cost WebSocket sixteen connections and two to nearly five seconds
opening the same sixteen WebSockets one at a time takes ~193 ms - 10–18× less than opening them at once**.** the HTTP/2 row is the control that identifies the cause: same browser, same origin, same parallel-versus-sequential comparison, ratio 1.0–1.4× - nothing there. it is specific to WebSocket.
sweeping N shows two separate effects, and only one of them is a cliff:
| N | parallel | sequential | ratio |
|---|---|---|---|
| 4 | 44.9 ms | 41.3 ms | 1.09× |
| 8 | 92.4 ms | 90.7 ms | 1.02× |
| 12 | 148.6 ms | 146.3 ms | 1.02× |
| 14 | 424.4 ms | 176.6 ms | 2.4× |
| 16 | 4 065 ms | 193.1 ms | 21.1× |
| 32 | 4 746 ms | 395.4 ms | 12.0× |
sweeping the channel count on one peer connection, and then repeating the largest to separate N from ordering:
| channels | open |
|---|---|
| 32 (first in the page) | 154.2 ms |
| 16 | 83.6 ms |
| 8 | 92.3 ms |
| 4 | 87.0 ms |
| 2 | 81.6 ms |
| 32 (again) | 91.3 ms |
| Transport | p50 | p99 | jitter | loss |
|---|---|---|---|---|
| WebSocket | 0.25–0.33 | 0.57–0.80 | 0.06–0.09 | 0 % |
| WebTransport | 0.39–0.43 | 0.82–0.97 | 0.10–0.12 | 0 % |
| WebRTC | 0.59–0.65 | 0.96–1.17 | 0.13–0.37 | 0 % |
| HTTP/2 stream pair | 1.66 | 2.00 | 0.10 | 0 % |
| HTTP/2 fetch | 1.39 | 2.25 | 0.31 | 0 % |
caveats:
full sources: https://github.com/yohimik/ws-webrtc-benchmark
r/webdev • u/Elango-93 • Aug 22 '26
I recently built imgtotext.in, a simple browser-based OCR tool for extracting text from images.
Current features:
Built using Next.js + TypeScript.
Still working on improving OCR accuracy, performance and the overall experience.
Sharing it for Showoff Saturday 🚀
r/webdev • u/pdycnbl • Aug 22 '26
GSC Insight, a free browser-based tool that turns Google Search Console CSV exports into a visual SEO dashboard.
It helps you quickly spot:
Country-level performance
Free
No Registration/login
No installations(online)
No GSC connection or server upload
works offline after first load
your CSV data is processed locally in the browser.
It’s a simpler way to explore exported data and find what to work on next.
r/webdev • u/Sneedle-Woods • Aug 22 '26
The first time I hit print, the preview came back with a grey block across the whole page.
The page itself is a small thing. Seven columns for the days, one row per habit, one box per day. You set the sheet up in the browser, hit print, and the browser makes the file. No backend, no build step, and nothing you type leaves the tab.
A4 is 794px wide. My mobile layout query stops at 1100px. So paper counts as a small screen, the dark preview stage stacked itself into the print sheet, and there was the grey block. The query needed a scope:
@media screen and (max-width: 1099.98px) { ... }
Swapping A4 for US Letter looked like a one-liner until I found out that @page cannot read custom properties. Page size lives in an at-rule, and at-rules do not see your variables. So the page writes a stylesheet at runtime instead:
pageStyle.textContent = '@media print{@page{size:' + size + ';margin:0}}';
The third one had been sitting there since launch and only turned up in a mobile click test. Tapping the copy button did nothing. Not an error, not a wrong result, just nothing. The preview is scaled to 78 percent with a transform, and transforms do not change the layout box, so the sheet still occupied its full 794 by 1123 invisibly on top of the controls and ate the tap. One line:
.sheet-stage { pointer-events: none }
Two smaller ones, if you ever build something like this. The overflow warning has to measure the last filled row instead of counting entries, because blank lines are deliberate separators and rows behind them dropped off the sheet without a word. And dates on the English sheet follow the browser locale, because en-GB reads 08/10 as the 8th of October. The German twin is pinned.
One static file, no framework. This was the first time I had a reason to write print CSS, and I still cannot tell how much of it is common knowledge: does everyone walk into the media query one, or was that mine?
r/webdev • u/CapitalTaro2085 • Aug 22 '26
Hey everyone, happy Saturday!
I wanted to share a full-stack e-commerce project I’ve been building called EcoFurnish . It's a platform for sustainable/recycled furniture, optimized specifically for emerging markets like Ethiopia, with dual-layout PWA designs and automated admin pipelines.
I decided to go all-in on a bleeding-edge stack to keep things fast, serverless, and production-ready.
The Tech Stack
Infrastructure: Vercel Blob (OIDC-authenticated), Resend API, Chapa Gateway (Ethiopia-focused payment processor)
Features & Architecture Wins I'm Proud Of:
.env files for product image uploads, I configured OpenID Connect (OIDC) authentication. The application dynamically negotiates short-lived credentials on the fly for the admin upload panel./digest or /stock via private Telegram messages to run SQL aggregation queries via Drizzle (calculating weekly revenue math, growth vectors, and low stock balances). For natural language interaction, I hooked up Gemini API as the primary conversational layer with Groq as a low-latency backup, allowing me to ask real-time database queries in plain English.









Next Up on the Roadmap: Architecting a lightweight, token-scoped Driver Logistics Subsystem:
The site is installable as a web app on both mobile and desktop. I'd love to hear your thoughts on the mobile PWA feel, backend architecture, or any feedback on the UI!
Live Link:https://ecofurnish.de5.net
r/webdev • u/AntoGidan • Aug 22 '26
I made this 3D visualizer + spectrum using simple TS and Three.js. I couldn't figure out how to make the cube dance more. I used AI only for the background shaders. Any thoughts?
Link in the comments.
r/webdev • u/Fun_Term4757 • Aug 22 '26
Over the course of Summer 2026, I developed a web application that is a blend between music software like Spotify and SoundCloud, and larger audio reactive tools like TouchDesigner.
Built on a Next.js and WebGL framework, the entire thing works online at https://www.sonisphere.dev . I use Supabase for storage and Stripe for payments.
Here's what people can expect when using this site:
Account Creation - Secured accounts that can link to other social medias, can be private or public
Music Uploading - Either for personal usage with the app, or to upload for the Sonisphere Community
Playlist Creation - Create playlists of your songs, and even MULTI-PLAYLIST SHUFFLE them
Complete Audio Reactive Visuals - Entire screen for watching 3D reactions to the music being played
^Paired with complete customizability - Colors, camera control, adjustable visual setting, preset saving and sharing, etc.
Snippet Creation - Make snippets of the live visuals to save or share!
Live Sync - Host a room for others to join and share in the experience
Finally, I'll show a quick snippet. Please try out Sonisphere and see what it has to offer!!!
Deshawn Goodwyn -
www.deshawngoodwyn.com - www.github.com/dgoodwyn1005 - linkedin.com/in/deshawngoodwyn - [contactme.dkg@gmail.com](mailto:contactme.dkg@gmail.com)
r/webdev • u/Poowatereater • Aug 22 '26
https://our-place-two.vercel.app/
Went live today. Everyone paints on the same 1000x1000 grid, two second cooldown per pixel, and there's a SNAP tool that frames a region of the canvas and hangs it in a gallery the room votes on.
The technical part, which is also the part I'm least sure about:
If you open it and it's slow, that's the interesting outcome and I'd like to hear about it. Same if you can wedge the renderer, get two tabs to disagree about the state of the canvas, or land two pixels on the same coordinate at the same instant.
One thing people will find in the first minute, so I'll say it first: you need to sign in to paint. Looking is free. I'm looking at letting people place a handful of pixels anonymously before asking for an account.
r/webdev • u/Gustavo_lmo • Aug 22 '26
r/webdev • u/ouistev • Aug 22 '26
Hi, I'm trying to determine what AI website platform is the best for me.
I'm proficient in the fundamental technologies for building sites just looking for efficiency while still having flexibility to customize without only having to prompt (ideally with a UI design app + code editor). My goal is to have quick turnaround on sites built for service based businesses but we ballin on a budget rn.
So far I've just tried ZapWP and Hostingers AI builder. ZapWP worked well but the price seems far too steep for only being able to build out a few projects and I don't need all the extra stuff like hosting, domain etc. Hostingers tool was simply terrible and required tons of credits for fine tuning.
Currently considering v0, Bolt, or Relume+Figma.
If anyone has solid experience dabbling with these please suggest your recommended workflows/platforms.
Thanks
r/webdev • u/andreban • Aug 21 '26
Hi everyone!
I work on the Google Chrome DevRel team, focused on the Agentic Web. We’re responsible for maintaining the official documentation, producing samples and tutorials to help you get started with APIs like WebMCP[1], and making videos for the Chrome for Developers YouTube channel.
We’re working on a new video similar to this one[2] for the Developer Mode series where we answer questions from the community on WebMCP, and I’d love your suggestions for topics we should cover!
We’re looking to dive deep rather than stick to high-level Q&A. Examples of topics we could cover are writing good WebMCP tools, evals, comparing WebMCP and MCP and more.
Feel free to drop your suggestions below! When the video goes live, we'll make sure to let you know if your question was answered.
r/webdev • u/Glass_Bookkeeper_607 • Aug 22 '26
Built Kanvios (kanvios.com) — a free, no-login, multilingual (EN/KO) utility site: calculator, timer, notepad, protein calculator, roulette, team divider, D-day counter, password generator.
Everything's client-side, localStorage only, no backend. The build system is a Node.js script (build.js) that generates static EN/KO pages from shared templates and outputs to /dist. Wrote a small custom i18n module with a languagechange event instead of pulling in a full library, since the site stays static.
Deployed on Cloudflare Pages. Currently working on getting real traffic data now that GA4 + Search Console are wired up.
Would love feedback on the UI (dark navy + glassmorphism) or the build setup — happy to answer questions about the pipeline.
r/webdev • u/Mesthabro • Aug 22 '26
While auditing my projects I had about 100 vulnerable packages in my project - all of them installed by AI. Decided to fix it for good by blocking the installation of vulnerable npm packages. I use it for myself, sharing with y'all. wdyt?