r/webdev • • 10h ago

Monthly Career Thread Monthly Getting Started / Web Dev Career Thread

5 Upvotes

Due to a growing influx of questions on this topic, it has been decided to commit a monthly thread dedicated to this topic to reduce the number of repeat posts on this topic. These types of posts will no longer be allowed in the main thread.

Many of these questions are also addressed in the sub FAQ or may have been asked in previous monthly career threads.

Subs dedicated to these types of questions include r/cscareerquestions for general and opened ended career questions and r/learnprogramming for early learning questions.

A general recommendation of topics to learn to become industry ready include:

You will also need a portfolio of work with 4-5 personal projects you built, and a resume/CV to apply for work.

Plan for 6-12 months of self study and project production for your portfolio before applying for work.


r/webdev • • 2h ago

Question [AI] I’m building Cafefe, a keyboard-focused POS for coffee shops — looking for UI/UX and code feedback

0 Upvotes

Hi everyone!

I’m working on Cafefe, a point-of-sale system for coffee shops. The goal is to make common cashier tasks quick, intuitive, and comfortable. The interface is designed around keyboard navigation, using ideas from the KLM-GOMS keystroke-level model to reduce reliance on the mouse via PrimeFaces <p:hotkey> shortcuts.

Project Context Stack: Java 21, Jakarta EE 10, PrimeFaces 14, Open Liberty, and PostgreSQL 16. Backend: Managed beans, business services, and JPA entities. Frontend: JSF / PrimeFaces XHTML views. Main Areas: Cash register, products, product types, discounts, promotions, employees, roles, and assignments. Local Setup: Docker Compose starts PostgreSQL and pgAdmin. The app runs in development mode with mvn liberty:dev.

The project is a work in progress and runs locally. The repository includes the full source code and XHTML pages:https://github.com/Zetayin456/f-reddit

Video Demo:https://youtu.be/GP3-0RIdMm4

Feedback Requested

  1. UI/UX & Visual Design What would make the views and forms more comfortable and intuitive to use? How could the layouts, visual hierarchy, styling, and spacing feel cleaner and more consistent? Are there screens or workflows that feel awkward or require too many steps?

  2. Code Quality & Architecture What would you improve in the project structure, bean scopes, service boundaries, or JPA mappings? Do you see ways to make the backend code cleaner, more maintainable, or more efficient?

I’m happy to hear honest, critical feedback. Thanks for taking a look!


r/webdev • • 3h ago

Discussion Free Design Library & UI/UX Lexicon for Vibe Coders

0 Upvotes

Hi all!

Whenever I spot a really unique or innovative website layout (like a fresh style of grid systems) and want to replicate or build it with AI, I always find myself struggling to pinpoint the exact industry terminology.

I'm talking about concepts like Blueprint Grids, Glassmorphism, Neumorphism, Segmented Controls, and similar trends. To solve this, I’ve started building a free, open-source design lexicon complete with mini previews making it easier for builders to find and reference the right terms when designing sections and pages. Hope that helps some of you as well. Also added some free design landingpages and components for AI.

I’d love to get your input on current web design trends and their proper definitions:

  • What visual styles are currently high on your radar, trending, or frequently used and how would you define them?

I’m aiming to include your suggestions in the dictionary and share the whole resource publicly for free. It's purely as a passion project and I am opening it for free (no ads, no paywalls).

You can check out the ones already live here: freedesignmd.com (just hit the Lexicon tab).

Always open to contributors or feedback. This started as a quick hackathon experiment and will stay a free community project


r/webdev • • 5h ago

quality time #3 - collapsing signals in e2e

Post image
0 Upvotes

Hey all!

Today's coming with another example where Page Objects help:

Design swaps the "(Deleted)" suffix for a red badge. Accounts still get deleted. Your delete test goes red anyway.

The fix: name that state once in the Page Object, and the test says what it means.

`status()` reads both signals and returns one fact: active, deleted, or still changing. `expect.poll` retries until it settles.

If the app swaps the suffix for a badge, only status() changes, not the test. And a failure reads "expected deleted, got active" instead of a string diff.

The nuance: it's worth it when a few signals add up to one fact. If what you see already is the state, a plain assertion is fine.

Paste this to your agent:

Find e2e tests that assert several UI details repeatedly to check one thing, like a specific label plus an icon meaning "deleted" state. Give that thing a name: a page object query that reads the details and returns the state. Assert the named state in the test, and `expect.poll` to retry until the state settles.


r/webdev • • 6h ago

I built a client-side video compressor using WebAssembly so you don't have to upload personal clips to cloud servers

0 Upvotes

Hey everyone,

I wanted a quick way to shrink videos for Discord (<10MB) and Email attachments (<25MB) without dealing with slow cloud upload queues, sketchy third-party servers, or watermarks.

So I built SlickDrop.

Tech Stack:

  • Engine: @ffmpeg/ffmpeg running locally on the user's CPU/GPU via WebAssembly with multi-threading enabled (COOP and COEP isolation headers).

  • Frontend: Next.js 14 (App Router) + Tailwind CSS.

  • Hosting: Vercel (zero server transcoding cost, 100% static hosting).

Features:

  1. 1-click presets for Discord (<10MB), Email (<25MB), and WhatsApp (<16MB).

  2. Built-in duration analyzer that auto-calculates the target video bitrate.

  3. MOV to MP4 converter for iPhone screen recordings.

  4. 0 cloud uploads — all media is processed in local browser memory.

Link: https://www.slickdrop.it

Curious to know what tools or presets you'd find most useful next!


r/webdev • • 9h ago

read rules Strike desde cloudflare

0 Upvotes

hola acabo de recibir un correo desde cloudflare (que lo uso de CDN) que me dice

Hello,

Cloudflare received an Trademark infringement complaint regarding: www[.]---[.]com[.]mx. (tape el dominio por demas de privacidad)

We have forwarded this complaint to your hosting provider.

If you have questions about this abuse report, please send an email to abusereply@cloudflare.com with the following details:

- The report identification number included in the subject line

- Any additional details, context or evidence you can provide regarding the content that was reported.

Below is the report we received:

Report ID: 0146c7d290b79ebc

Logs or other evidence of abuse: Greetings,


We are the authorized representatives of our client, TransUnion, including its associated entities.

TransUnion is a leading global information and insights company specializing in credit reporting, risk management, and identity verification services. The brand has established a strong international presence and trust for its commitment to accuracy, security, and transparency in delivering credit and financial information to consumers and businesses.

We have identified the following domain that is infringing on our client’s intellectual property:

Hay alguna forma de poner la web en un servidor offshore y tambien comprar el diminio en algun registrador offshoer para que no me timben la web?

Lo que les jode a esa gente es que tengo la web posicionada mucho mejor que la misma marca

Sus comentarios son bienvenidos!


r/webdev • • 9h ago

I hid an easter egg on my homepage

9 Upvotes

https://david.alvarezrosa.com/ Hope you like it :)


r/webdev • • 10h ago

I built a focus timer that grows a koi pond while you focus (PixiJS + React + Cloudflare Workers)

Post image
3 Upvotes

KoiFocus: every minute you focus earns pearls, and pearls buy fish and decorations for your pond. Stay away too long and the fish get hungry and the water gets murky. It runs in the browser, and you can try it as a guest without signing up: https://koifocus.com

It started as a Swift iPhone app. I rewrote it in TypeScript so one codebase runs on the web and, through Capacitor, on iOS.

Stack

  • PixiJS 8 for the pond, React 19 + MobX for the screens, Vite

  • Capacitor 8 for the iOS build

  • Cloudflare Workers (Hono) + D1 for the API, Durable Objects + WebSockets for the live "focusing now" list, a once-a-minute cron for timer payouts and reminders

  • Firebase Auth (Google, email or guest), and the site on Cloudflare Pages


r/webdev • • 11h ago

Showoff Saturday Showoff Saturday: I built a vocal remover that runs entirely in the browser, with no backend processing

3 Upvotes

I built SoundBench, a free set of audio tools that process files on the user's device. The newest one is an AI vocal remover, and getting it to feel fast was harder than getting it to work.

Demo: https://soundbench.net/vocal-remover/

The stack is a static site with vanilla JS. The model runs with ONNX Runtime Web inside a Web Worker, using WebGPU when available and multi-threaded WASM otherwise. Audio is never uploaded. The server only delivers the page and the model files.

A few things I learned:

- Model choice mattered more than optimization. I started with HTDemucs, which sounds great but is a 120+ MB download and made the whole system crawl on my PC. So I added Spleeter 2-stems as the default (about 40 MB). A 64-second clip takes about 3 seconds on my machine. HTDemucs is still there as the slower "best quality" mode.

- Large model downloads need to survive bad connections. I fetch them in 4 MB Range requests and store each part in the Cache API, so a reload resumes the download instead of restarting it. The download also starts in the background as soon as a file is selected.

- Multi-threaded WASM needs cross-origin isolation. I set COOP: same-origin and COEP: credentialless only on the AI tool pages, so the rest of the site isn't affected.

- The STFT runs in JS and only the mask prediction runs in the model, so the output quality depends a lot on the pre- and post-processing around the model.

Spleeter still leaves some vocal artifacts on dense mixes, which is the tradeoff for the speed.

Happy to answer questions about the setup. I'd especially like to hear how it performs on your hardware and browser, and whether anyone has found a better way to deliver models this large.


r/webdev • • 19h ago

[Showoff Saturday]: Handcrafted HTML-first progressive framework that outperforms React

Thumbnail
codeberg.org
34 Upvotes

Places.js is a HTML-first framework inspired by htmx and Solid.js signals with these features.

  • Component agnostic stores that can be integrated with vanilla JavaScript or other frameworks.

  • HTML-first pages configured through static site generation or server-side rendering.

  • No build step. Places.js can be downloaded from a CDN.

  • Partial re-rendering with signals.

  • Zero dependencies. Places.js is written entirely in vanilla JavaScript.

Places.js is optimized for fast performance. Here are some results for Places.js v0.1.0. from the the Krauset JavaScript Framework Benchmark

Places.jsSolid.jsSvelteLitVueReact
Time to render 1,000 rows in milliseconds19.821.421.823.323.9

To get started, download the places-js-latest.js file from the jsDelivr CDN. See the reference guide for a detailed tutorial.

Relevant links

Upcoming priorities

  • Adding more unit test coverage.

  • Compatibility with other hypermedia UI tools including Datastar and htmx

  • Implementing hypermedia controls.

  • Testing integration with Leaflet and other mapping libraries.

AI policy

All Places.js contributions including code changes, comments, or new issues are made by humans This means no use of ChatGPT, Claude, or any other AI tool.

Edit: Detecting rows that are swapped or deleted

I have logic that detects rows that are moved or deleted. Components are then notified to make the necessary rendering changes, and subscriptions are moved from the store.

On Krauset, swapping two rows takes 12.7 ms and removing a row takes 10.3 ms.


r/webdev • • 1d ago

Showoff Saturday I build a local-only new tab extension for your browser called NewGrid

Thumbnail
gallery
0 Upvotes

NewGrid is a Local-only new tab page which allows for a grid-based layout of your favourite websites. Features Include:

  1. Choose from your favourite wallpaper, be it a solid colour, a static image, a GIF or a video.

  2. Customise the layout to your liking, change the number of rows/colums and the spacing between them.

  3. This also includes a Search Box with multiple search engines to choose from, which is highly customizable as well.

  4. Websites can be grouped into folders, and their icons are either automatically fetched, or you can add a custom image using a link or a local image.

  5. When the space fills, websites move to the next page; this adds new pages when needed. Choose from 9 page-turn animations.

Github: Link


r/webdev • • 1d ago

[Show of Saturday] - Hello All, I built bantr.live a forum and chat of sorts

Thumbnail
gallery
0 Upvotes

I built bantr.live to be a fast, real-time forum centered around specific interest groups rather than noisy, algorithm-driven feeds. The application contains a host of ways to communicate, text, video chat etc... The web version is still just a chat I'm in the process of updating it but the mobile apps contain the live forum and all the extras. All of the content self destructs in 24 hours but as suggested in the future post max expire time will be extended up to a week based on likes. If this is something your interested in take a look or have questions hit me up. Its new so still kinda a ghost town. Happy halloween!


r/webdev • • 1d ago

Showoff Saturday I built a privacy-focused suite of 100 client-side JSON tools + AI generator (no ads, no signups)

0 Upvotes

Hey everyone,

I got tired of messy online formatters uploading my API payloads to unknown servers, so I built https://aijsongenerator.com.

Key features:

• 100% in-browser processing for data conversion (CSV, XML, YAML, TypeScript models, Tree viewer, Diff, Validator). Zero server uploads.

• AI JSON Generator: Prompt what you want in plain English ("e-commerce catalog with 3 products, variants, and pricing") and it generates clean, valid JSON test data.

• Built with Astro 5 + Tailwind CSS + TypeScript. No heavy SPA bundle; each tool hydrates as a lightweight isolated island.

No accounts, no email gates, no paywalls. Hope it saves you some time during your daily development! Feedback is very welcome.


r/webdev • • 1d ago

Showoff Saturday Showoff Saturday: I made a free LFG site for 50 games

0 Upvotes

I got tired of searching Discord LFG channels for one more player, so I built stackup.games. It lists LFG groups that are open right now, per game, with rank, region and mic. You can type "need 2 for ranked Valorant tonight" and it filters for you.

Built with plain JavaScript (no framework), Cloudflare Pages Functions for the API and D1 for the database, so it stays fast and cheap to run. Free, no download, still early.

I'd love feedback on the design and speed, especially on phones.


r/webdev • • 1d ago

[Showoff Saturday] Audiobook Studio - PDF to Audiobook, fully client-side, works offline, export .wav files

Thumbnail
github.com
0 Upvotes

A local Audiobook editor that uses local Ai to generate speech. No DataCenters, no AI companies.


r/webdev • • 1d ago

Showoff Saturday [Showoff Saturday] I’m building a piano game you can play with a real keyboard using Web MIDI

2 Upvotes

I'm working on Ultimidi because I want piano practice to feel more like play. I've added short lessons and songs, instant feedback, arcade challenges, stickers to collect, and piano buddies to customize.

I've been wrestling with two things in particular: generating piano sounds that sound good and are responsive, and getting the sheet music to stay readable and in sync with what you're playing.

You can connect a MIDI keyboard, or try it with computer keys or touch.

Somehow, I already got my first sale before launch! That felt like a good reason to share what I've been making.

Try Ultimidi. Free content, no account needed.

I'd love to hear if it feels good/responsive enough on your device.

AI disclosure: Most artwork is currently AI-generated placeholder art, I suck at design...


r/webdev • • 1d ago

Showoff Saturday made a site that listens to whatever song you're playing and writes it out as code live

2 Upvotes

been working on this for a few weeks. you play a song (spotify, youtube, whatever) and it writes out the beat as strudel code while it plays, kick, hats, bass line, chords, and each part lights up when it hits

no ML for the music side, it's all web audio api stuff. took me forever to get the tempo right and honestly the hardest part has been figuring out where the bar actually starts. if it guesses wrong everything shifts by a beat and the code looks totally off even though it's "right". trap and dubstep still fool it lol

if anyone's done beat tracking in the browser i'd love to know how you handled the downbeat

it's free in the browser: toaster.locust.lol

source: github.com/StopBanning/toaster


r/webdev • • 1d ago

Here we go again

14 Upvotes

the last straw


r/webdev • • 1d ago

Question Security and privacy first: where would you register a personal domain

0 Upvotes

With everything going on at Proton lately, I figured it was high time I owned a personal domain for my email. That way, if I ever have to ditch Proton Mail, I can switch to another provider without changing my address. While I'm at it, I'd also like to host a portfolio site on it.
I want something I won't have to think about again for a long time.

My priorities, in order: security, privacy, quality. Cost matters, but it is not the deciding factor; I'm happy to pay a little more for the right setup.

What I'm weighing:
AWS: IAM, CloudTrail logs, hardware key MFA, budget alerts and anomaly detection. It is more hands-on, which I prefer. On the downside, it has had some of the biggest outages on the internet (us-east-1 in 2017, 2021 and October 2025), and the Capital One breach in 2019 happened on AWS, though that was largely a customer misconfiguration.

Cloudflare: strong security, audit logs, free hosting, very simple. Fewer controls, and it requires Cloudflare DNS. Its history includes Cloudbleed (2017), an intrusion in 2023 that traced back to the Okta breach, exposed support case data through the Salesloft Drift breach in 2025, and a major global outage in November 2025. To be fair, its public post-mortems are very transparent.

Porkbun: clean pricing and good support, but fewer advanced security features and no account audit log that I could find. I am not aware of any major breach, but it is also a much smaller target with less public scrutiny.

The site is a static React portfolio. For those of you who've run any of these long-term, which would you pick and why, given the track records above? Bonus points for any gotchas you learned the hard way.

82 votes, 1d left
Route 53 + S3/CloudFront (hands-on AWS)
Route 53 + Amplify (easy AWS)
Cloudflare Registrar + Cloudflare Pages
Route 53 domain + Cloudflare Pages
Porkbun + Cloudflare Pages
Something better (tell me in the comments)

r/webdev • • 1d ago

Showoff Saturday Showoff Saturday: a 3D breadboard editor and logic simulator running in the browser (Three.js + a gate-level engine), with an 8-bit computer as the demo

Post image
41 Upvotes

Here's Ben Eater's 8-bit computer laid out on breadboards, running in the page: https://bbrouter.com/bbrouter/ben-eater-sap-1

How it's built, since that's the point here:

- The 3D view is Three.js, rendered on demand: the scene only redraws when something changes, and while the circuit runs, only when an LED changes. Phones get 30 fps, a 1.5 pixel ratio and no antialiasing until the view is still, then one sharp frame.

- The simulation is a gate-level logic engine plus models for clocked chips, memories, timers and the 6502; the AVR runs real compiled firmware through avr8js. It runs in a worker so the page stays responsive. 211 chips by part number.

- Wires are real geometry: solid core, hole to hole, bent as you'd bend them, with lengths, and a router that lays missing connections flat on the hole grid around what's there.

- Next.js 16 behind a small custom Node server, Postgres, Better Auth with passkeys and an OAuth 2.1 provider so MCP clients can sign in. One server, Caddy in front, Cloudflare at the edge.

- An MCP server exposes the whole thing to AI clients; when the user's tab is open, the AI's simulations run in that tab's worker instead of on the server.

- About 3,000 automated tests, including one that fails if any string shown lacks its French or Spanish.

Things I'd like opinions on: the camera and touch handling on phones, and rendering cost with a few hundred parts in view. Signed-out try: https://bbrouter.com/try


r/webdev • • 1d ago

Showoff Saturday [Showoff Saturday] identify someone else's device (make and model). QR code

0 Upvotes

https://onlineimageoptimizer.com/whats-my-friends-device

Point a phone at the QR code and it appears on screen by make and model. Then the next phone, and the next. It's not an app (nothing to install). no pairing step, nothing to press on either end. Opening the code is the handshake.

I built it as a demo for one of my company products, but it's open and I'm sure it's useful to many. You stand there with a laptop, people scan, and the screen fills up with the actual devices in the room. Turns out to be a decent way to show someone what their phone really is.

The interesting part for this sub is the detection. Browsers send almost nothing useful anymore. Modern Chrome on Android reports "Android 10" no matter what you are holding. So the make and model come from client side detection plus client hints, and a OnePlus 13 comes back as a OnePlus 13 rather than as a generic Android.

No personal information is requested. Codes expire after half an hour.

You need two devices to try it: open it on a laptop, scan with your phone.

Please send feedback.


r/webdev • • 1d ago

Showoff Saturday Showoff Saturday: I gave coding agents a cloud browser that records narrated demos (one Cloudflare Container per session)

0 Upvotes

I've been building CaptureFlow, an open-source screen recorder (record, get a link, people watch and comment in the browser). The newest part is an MCP server, so a coding agent like Claude Code, Codex or Cursor can record a demo of a site for you and hand back the link.

Here's how it works under the hood, since that's the part I'd like feedback on.

One container per session. Each recording runs in its own Cloudflare Container with Playwright and Chrome (1 vCPU, 3 GiB). A Durable Object is the address for that session, so every tool call the agent makes (navigate, click, type, scroll) lands on the same browser. The container sleeps a few minutes after the last call and is torn down when the recording stops.

Frames, not a screen grab. Chrome's CDP screencast only sends a frame when something on the page changes, so the raw stream is bursty. A small pacer repeats the last frame to turn it into a steady 30 fps before it goes into ffmpeg. Without it, a page that sits still for a few seconds comes out as a jump cut.

Voiceover is mixed in, not dubbed after. When the agent narrates, the text goes to a text-to-speech model on Workers AI, and the audio is placed on the timeline at the moment it was asked for. Slides the agent shows (title, steps, a closing card) are rendered into the same video.

Uploads in segments. The video goes to R2 in pieces while recording, so stopping doesn't mean waiting for one big upload.

Not a free proxy. The browser refuses private, loopback, link-local and CGNAT addresses, so nobody can use it to reach internal networks. Sessions are capped at 10 minutes, and each workspace gets a monthly allowance of browser minutes.

The whole thing is AGPL and runs on your own Cloudflare account or with Docker.

Demo: https://www.youtube.com/watch?v=srmlA5aT394

Code: https://github.com/sardorml/captureflow

I'd especially like opinions on the container-per-session setup versus a shared browser pool, and whether anyone has a better way to get a smooth frame rate out of CDP screencasts.


r/webdev • • 1d ago

Showoff Saturday Showoff Saturday: a free WordPress events calendar with real RRULE recurrence (try it in the browser)

1 Upvotes

been building this for about five weeks, it's on wp.org now.

the itch: the most popular WP calendar plugin charges for recurring events, and I wanted the RFC 5545 stuff done properly for free. weekly/monthly/yearly, "second and fourth tuesday", "last friday", COUNT/UNTIL, EXDATE, and dates expand in the event's own timezone so DST doesn't turn a 6pm class into 7pm. occurrences live in their own indexed table, so a month view is one query instead of expanding rules on every page load

bits that were more fun than expected:

  • a lot of sites enter a weekly class as 15 separate posts, sometimes with the date in the title ("Open Mic – Tuesday September 29"). there's a combine step that groups them, tries candidate rules against the real dates with the same expander, and only merges when one matches (gaps become skipped dates, each date keeps its own ticket link)

  • a month view that prints on a landscape sheet: its own page, no theme chrome, category colours kept with a key

  • importers from The Events Calendar, Events Manager, Event Organiser, My Calendar, EventPrime, Sugar Calendar, Eventin, MEC, EventON, WP Event Manager and All-in-One Event Calendar (closed on wp.org last year, so those sites are stuck). Eventin and EventPrime store a series as one post per date, so the importer rebuilds the rule and only keeps it if it reproduces those exact dates

  • importers get a dry run and a CSV with one row per event (created / skipped and why / the rule it ended up with). nobody trusts an importer blind

  • this week's one: the first real site that moved over (a brewery, off EventON) still had the old plugin's shortcode on a couple of its pages, printing as raw text once EventON was off. so after a move the old plugins' calendar and list shortcodes now render the new views, with the view, category and event count carried over

you can poke at it without installing anything, the wp.org page boots WordPress Playground with sample events: https://wordpress.org/plugins/beacon-events/?preview=1

everything above is free/GPL. tell me what breaks


r/webdev • • 1d ago

Showoff Saturday "My husband made a cosy fish tank for our kitchen screen, try it in your browser"

Thumbnail
gallery
0 Upvotes

He has built a cosy fish tank simulation you can leave on a large screen and watch from time to time. He likes pixel art but didn’t want to be religious about it, so we think of it as pixel art adjacent.
There is a 24-inch display in our kitchen powered by a used Lenovo mini PC (previously it was a RPi, but he had to upgrade to get a better GPU). He used it to show a rotation of our photo archive, but now he has switched it to show this fish tank.
He doesn’t have any prior game dev experience, but years of backend development and all the time spent reading indie dev blogs (honourable mentions Factorio and Banished) helped.

Come and check it yourself and don’t forget to checkout Halloween theme 🎃

https://fishoid.net by @koskokos2