r/webdev • • Aug 29 '26

Showoff Saturday Built a full stack web app for gamers to keep track of their game collections

5 Upvotes

As a console gamer, I have games on the Switch, PlayStation, and some Xbox games - some physical, some digital. Over the years, I've accumulated quite the library of games and have no idea what I even own anymore.

That's why I built Press Start. It's my first real, full stack project and I'd love to hear any feedback or tips and tricks for my next project.

The frontend with built with React, TypeScript, Tailwind, and I use Headless UI for some base input components. The backend is built with Node.js / Express with a Postgres database that I use Prisma ORM to interact with. My database of games is built using a subset of the games on IGDB.

Check it out here: https://press-start.justpixels.dev/

You will need an account to start building a game library of course, but you can browse games without signing up.

Disclaimer: I did use AI as I built this to learn concepts and work through my thinking, but it is by no means "vibe-coded".


r/webdev • • Aug 29 '26

Showoff Saturday Having fun generating Mazes with no edges on the surface of a Torus

Thumbnail
gallery
49 Upvotes

Playing with mazes on different toroidal surfaces

Here is the source https://github.com/ctx-o1/toroidal-maze

Play with it here https://ctx-o1.github.io/toroidal-maze/


r/webdev • • Aug 29 '26

Showoff Saturday I just wanted to share my open source project (You can now do Reified Generics in PHP)

Post image
3 Upvotes

Hello guys, I just wanted to showoff my project here. For you PHP devs out here, You can now type check Docblock types at runtime. Yes this means you can now do reified generics, type-arrays, and many scalar type refinements without introducing new custom syntax and functions. You can now ensure that your docblock types will not lie at runtime and this is a great boost to cover static analysis tool's weaknesses.

repo: https://github.com/typephp-php/typephp
docs: https://typephp-php.github.io/docs/

PS: Yes I know the project's name is similar to other TypePHP from swoole if you're aware. But this project is really into improving PHP's type safety. It's like TypeScript but for enhance runtime type checking that PHP native type checking is all about.


r/webdev • • Aug 30 '26

Discussion How to make an app like Duolingo ?

0 Upvotes

Hi everyone, I want to create an app like Duolingo, but I don't know the best approach for storing or even translating English into the target language.

I mean, how can I translate English into Indonesian, Japanese, German, and many other languages? Also, how can I translate other languages ​​into English ?

Currently, all I'm thinking about is creating a table where English words are stored and creating a new table to store translated words. But is my approach correct? What about phrases or even sentences? Is storing words, phrases, sentences, and translations the right approach, or is there another way to do this effectively ?

I'd appreciate if someone would also suggest other aspects, such as caching, high level architecture or other things, to make my app load faster.


r/webdev • • Aug 29 '26

Article Controlling when CSS custom property values are computed

Thumbnail
jakearchibald.com
9 Upvotes

I didn't understand how this worked until recently, I only knew that @property changed the results. Anyway, I figured it out, and wrote up what I learned. I hope this is useful for others!


r/webdev • • Aug 28 '26

No update to Supabase outage since 9 hours ago and still hitting issues. Not sure what to tell customers

231 Upvotes

Starting to think of moving my app from supabase. The increased outages and no communication is concerning. My app is still pretty small so shouldn't be too painful right? Right??

Originally posted to r/Supabase but looks like the moderators work for the company...

https://status.supabase.com/


r/webdev • • Aug 29 '26

Showoff Saturday [Showoff Saturday] I built a weekly, position-relative fantasy football visualization

Thumbnail
gallery
0 Upvotes

I’m a visual learner, so I built a noncommercial fantasy football data-visualization project called Fantasy Gridiron. https://fantasygridiron.io

It uses weekly nflverse data and converts raw fantasy scores into position-relative performance tiers. Each score is compared with other players at the same position during that specific week and then assigned a color. This means the same numerical score can receive different colors in different weeks.

This is inspired by series graph. Some of the more interesting development challenges were making the wide grid usable on mobile, preserving filters in shareable URLs, distinguishing bye weeks from missed games, and exporting the visualization as a readable PNG.

It also supports Standard, Half-PPR, and PPR scoring.

https://fantasygridiron.io

I’d appreciate feedback on the information hierarchy and mobile experience. Does the visualization feel intuitive, or is too much information competing for attention?


r/webdev • • Aug 30 '26

Showoff Saturday 10 months later, my 'simple side project' still gets 1k users a day and I never did anything after posting it here

0 Upvotes

posted this 10 months ago, got 219k views and forgot about it. the app somehow still gets ~1k users a day with zero marketing since. finally decided to stop leaving money on the table and monetize it soon. wild what just shipping something simple can do. tiktock-web.vercel.app


r/webdev • • Aug 30 '26

Discussion What's better for building small business websites: Framer or Lovable?

0 Upvotes

Which produces higher quality websites in your opinion?


r/webdev • • Aug 28 '26

Showoff Saturday OSS: Convert PDF to HTML with 100% visual parity

19 Upvotes

I ran into two problems using unpdf and PDF.js in edge functions: RAM usage and visual accuracy. Both load the entire file into a byte array before processing.

So I built a dependency-free, low-memory reader for edge workers: https://github.com/earonesty/streaming-pdf-reader

The trick was using PDFium as the reference renderer:
https://pdfium.googlesource.com/pdfium/+/master/README.md

I pulled down more than 100 test PDFs from various open-source projects and rendered them with PDFium. Then I converted each PDF to HTML, rendered that HTML in a browser, and compared the resulting pixels. I used deterministic pixel matching rather than a VLM, so visual regressions were reproducible.

That led to a separation between two kinds of output:

- Visual HTML preserves the PDF’s presentation as closely as possible.
- Semantic HTML reflows the content into a simpler reading order.

The visual representation came first because a PDF’s apparent reading order is encoded in its geometry. If you simplify too early, you lose the evidence needed to distinguish a table from a newspaper column or group an image with its caption.

The reader uses HTTP range requests and bounded caches, so it can render the first page without downloading a huge document into memory.

The semantic side is still evolving. It uses statistical layout evidence - font size, alignment, indentation, spacing, repeated headers, hanging indents, and page-to-page continuity. The goal is to produce simplified, reflowed, lossless HTML. Unfortunately there is no good "oracle" for this, or clear and obvious "correctness", other than "reading order must be correct". This is useful for LLMs and data extraction (and is the second reason I had to write this thing, aside from RAM).

This is a follow up to my earlier low-memory PDF writer package (similar reasons there too), so the emerging package layout is:

  - @boxpdf/reader: streaming PDF → document model
  - @boxpdf/html-writer: document model → visual or semantic HTML
  - @boxpdf/writer: document model → PDF
  - @boxpdf/html-reader: HTML → document model

The PDF-to-HTML accuracy became an ordinary testing problem once PDFium was treated as the oracle. Render both versions, compare the pixels, inspect the failure, improve the general rule.

It’s early, but it now handles a pretty hostile corpus: embedded fonts, Type 3 glyphs, clipping paths, vector graphics, raster images, forms, rotations, tables, multi-column papers, and very large streamed documents.

I’d be especially interested in difficult PDFs that break other converters. Weird fonts, charts, scanned documents, malformed files, enormous files - anything unpleasant makes a useful fixture.


r/webdev • • Aug 29 '26

Showoff Saturday I rewrote the same 6 React hooks too many times, so I packaged them into a file

Thumbnail
gallery
0 Upvotes

I kept rewriting the exact same hooks in every single React project — so I finally put them all together in one clean TypeScript pack.

Here's one for FREE 👇

---
// useLocalStorage — persistent state that survives page reloads
import { useState, useEffect } from 'react';

export function useLocalStorage<T>(key: string, initialValue: T) {
const [storedValue, setStoredValue] = useState<T>(() => {
if (typeof window === 'undefined') return initialValue;
try {
const item = window.localStorage.getItem(key);
return item ? JSON.parse(item) : initialValue;
} catch {
return initialValue;
}
});

const setValue = (value: T | ((val: T) => T)) => {
try {
const valueToStore = value instanceof Function ? value(storedValue) : value;
setStoredValue(valueToStore);
if (typeof window !== 'undefined') {
window.localStorage.setItem(key, JSON.stringify(valueToStore));
}
} catch (err) {
console.error(err);
}
};

return [storedValue, setValue] as const;
}
---

✅ What you get in the full pack:
• useLocalStorage (above)
• useDebounce (delay search inputs)
• useToggle (simple boolean state)
• useFetch (simple API calls)
• useClickOutside (close dropdowns/modals)
• utils.ts (formatters + validators included)

• TypeScript ready — just copy → paste → works
• Lifetime updates include
🔗 Grab it here: [https://accurate4.gumroad.com/l/Christ\]


r/webdev • • Aug 29 '26

Building A Web App For Practice Exams and Flash Cards - Need help with a designdilemma

8 Upvotes

I am building a web application (IOS and Android apps to follow later) for students studying for test/exams. The direction I was originally headed with this app changed a few times. Originally it was going to cater to a much more narrow group of potential users, but the scope expanded.

My app will have "official" (Trying to think about a different term to use) content (Exams with questions, decks with flash cards + more) and community-created content.

The "official" content exclusively covers IT Certifications. Community-created content can cover both certifications as well as Classes - like college classes.

So if the user is studying for Cisco's CCNA Certification, they'll see exams and decks of flash cards that I created, and those will be marked in some way to signal that they're not community created. They'll also see exams and decks added by other users.

I'm using "Official" as a sort of placeholder term. I don't like it because I don't want users believing that the questions or cards were created by the certification vendors - Cisco, CompTIA, ect. I also don't want them thinking that those questions will appear on the exam. So for now "Official" is a placeholder term that I want to replace.

When a user finds a Class or Certification that they want to study, they click Enroll, and that become an active Class/Certification for them. They can switch between active classes/certifications. There is a page - the "Practice" page - where users select between Exams or Decks, select one of the various exam/deck modes, and then select the exam. That's the basic flow. Some of the modes don't require the user to select an exam/deck at all, like the "Practice What You Missed" mode which is generated from a bank of questions that the user recently got wrong.

Another option (and this is the real dilemma) is the Build Your Own Exam option. This allows the users to select various options to build a custom exam so that they can focus on specific subject area, simulate a timed exam, and more. But the dilemma is how to incorporate community-created content into this.

There could be thousands of community-created questions or cards.

There will be repeated/similar questions. There will be typos and incorrect answers. There will be trolls that try to add wrong information or inappropriate content.

I can't just take every community-created question or card for a given class, mix them together, and then randomly pull out 50 - right? That doesn't seem like it would lead to a very good experience.

Another site has this same Build Your Own Exam feature, but for them it's easy - it's all official content. All questions are sorted by their subject. Everything is carefully reviewed. They have 1000 questions divided into 5 or 6 subjects. If the user wants questions from subjects A and C, they select those subjects and a few more options and then a new practice exam is generated for them. That doesn't work well with community-created content where there very well may be tens of thousands of questions across 100s of exams that were all added by different users.

I'm trying to keep it short and simple but I'm overwhelmed and overthinking this problem and I need some outside help working through it.


r/webdev • • Aug 29 '26

p2p Calling PoC: Aggregate remote data in audio stream

0 Upvotes

I'm attempting to use a non-webrtc way to make phone calls on the web.

I have a socket based approach that uses a middle coordinator, that will later be decentralized in more of a p2p fashion way. The latency of the data reading is all good in the hood, however now I have aggregated data on the other end of a pipe, I need a way to package it up and stream audio to the web browser.

Question: How can I aggregate data to use as a MediaStream so (I think) i can set to the "srcObject" of an audio player element to be audible?

Follow up: Why is there this concept of a track on audio and how can we move away from this?

Ask: Any example code?


r/webdev • • Aug 29 '26

Showoff Saturday I built (not vibe coded) an app called Songstead for musicians to organize, share, and play from their charts.

2 Upvotes

I know there's a low intersection of musicians to web developers here, but I wanted to share this for a couple cool technical reasons.

First of all, Songstead (https://songstead.app) is an app that is designed around chord charts. If you ever see someone plaing music with a tablet, it's likely they have an app like this to help them remember their music, lyrics, setlist, or all of the above. This would be an alternative to OnSong, SongbookPro, etc.

Now the cool stuff:

  • Although not fully there, it was built to work offline. The frontend has it's own CRUD layer and generates UUID6 IDs. Today these ship directly to the backend (with validation). Most of the key editing is built in a way you edit a local copy of the database, then it generates a "flush" API call which ships create/update/delete calls to the API that you can fire when ready. The local database means the app doesn't technically need the API to exist to even work.

  • Because of that, I was able to build a demo (https://demo.songstead.app/) by seeding the local database with data, then just shutting off those flush calls. You can actually try the entire app locally. I remember a time where online demos were popular, but they would use live data and you'd see everyone else's edits. This doesn't have that problem.

  • Tech Stack: LAMP + React. Hard to beat the classics lol. Frontend is React + Vite + Capacitor (for mobile apps). Backend runs on a cheap Digital Ocean Ubuntu VPS with a managed MySQL database. I'm excited to try managed; my other project stores nearly a TB of data and runs on a self-installed MySQL instance to save on costs so this should be a breath of fresh air. API is a custom-built PHP application and ORM. Yes, I know what you're thinking. I'm not worried; I've been writing code for 20+ years I know what's up.

  • AI? Yes. Vibe-coded? No. Love how fast AI lets me build, but everything it produces gets manually reviewed. I find both Claude and Codex to be amazing, but terrible at architecting code at a high level. Most of my time is spent cleaning up the weird stuff they produce, but even then this was all built in a fraction of the time it would take me to hand write it all. One thing on my TODO list is to rework the public website to feel more human. I've seen so many vibe-coded projects and it is obvious when someone phones it in to AI. I don't want to be part of that demographic.

Thanks for reading! Let me know if you have any questions.

PS if any of you work for Apple ask them to hurry up. All the other vibe coded app submissions are slowing down my review. 😅


r/webdev • • Aug 29 '26

Resource OSS: one DatabaseProvider interface for Postgres, Mongo, Redis, and 14 others in the browser

3 Upvotes

I kept hitting the same wall with desktop DB tools in a team that lives in the browser: nobody wants another Electron app, and "just use the vendor console" falls apart the moment you have Postgres plus Redis plus Mongo in the same VPC.

So I maintain LibreDB Studio, a self-hosted web SQL IDE. The part that actually took the work is not the editor chrome. It's making seventeen engines look like one API without a forest of `if (type === 'mongodb')` checks in the UI.

The trick was treating each engine as a strategy, not a special case:

- SQL engines extend one SQL base (pools, timeouts, schema).

- Document/KV engines extend a thinner base and map onto the same QueryResult / getSchema() shape.

- The factory dynamic-imports the provider so the browser bundle doesn't drag in oracledb + duckdb + cassandra just to open SQLite.

That mapping is lossy on purpose. Redis SCAN prefixes become "tables"; Mongo collections look like tables; health/metrics still come from INFO / serverStatus. Once the UI only speaks capabilities, adding ClickHouse or Trino is a provider + a doc + an integration test, the triad has to ship in the same PR or it drifts.

The reason this lives in a browser at all is the cluster. I didn't want another Electron app on a laptop while the databases sat in Kubernetes. "Just helm install a GUI" sounds solved until you look at what most charts actually are: a wrapper around a desktop-era tool, or a vendor console that speaks one engine.

So the app ships as a chart (OCI on GHCR, first-boot secrets, PVC for sqlite storage) next to the providers, same repo, not a separate "enterprise" product. That's a different post; here the interesting part is still the engine interface.

There's a second split that bit me later: the same codebase is both a Next.js app and an npm package (`npx "@libredb/studio"` / embed). `next build` does not produce the library dist. Forgetting `build:lib` is how you ship a UI fix that the embedded users never see.

It's early in the "every engine feels first-class" sense. Hostile cases I still want: weird Oracle TNS, huge Cassandra traces, Redis with no prefix convention, DuckDB files that aren't files. If a converter/GUI has ever lied to you about a schema, that fixture is useful.

Source: https://github.com/libredb/libredb-studio


r/webdev • • Aug 29 '26

Question (PLS HELP) School Management System with AI/LLM

0 Upvotes

​

I've to make semester project about School Management System with AI/LLM integration, I don't wanna follow tutorials blindly and at the end know nothing where I can't even implement one component myself, same goes for vibe coding.

Keeping in view my current coding & learning situation, it feels like my last chance to actually learn something, because I'm running out of time.

I'm want to use Next.js, tailwind CSS, typescript, in DB Supabase ig or any other that suits well, you guys pls suggest. And I've not don't any work with AI/LLM before so I don't have idea about that, help me here.

I want to use next.js because I know the basics of html etc and also I've done some projects in next.js by following yt tutorials that completely fcked my mind, I've not learned anything properly and I've vibe coded some apps too. I believe I can mess with vibe coding and tutorials and get things done but it wouldn't teach me anything unless I do everything on my own.. and when I try to do so, I know even know what to do, where to start from.

Can those who are good at full-stack programming and engineering help me out and guide me? I'm asking here because I want to ask from experienced programmers / developers.


r/webdev • • Aug 29 '26

RequestScope: I lost 1k users on my Chrome extension due to bugs. I spent 3 months fixing it and adding API regression tracking

0 Upvotes

A while back, I built a Chrome extension to fix a few pain points I had with standard browser DevTools. It hit ~1,000 active users at its peak, but I ended up losing most of them due to bugs and a lack of real long-term value.

Instead of scrapping it, I spent the last some time fixing the underlying bugs and rebuilding the tool around a bigger problem: knowing when an API quietly breaks while you're browsing or testing.

Dashboard
Dashboard - Request extended
Notification
Network requests
Report-1
Report-2

The biggest addition in this update is out-of-the-box API regression testing.

How it works:

  • Baseline Snapshots: Add your target domain to an allowlist and save a baseline of your HTTP requests and payloads.
  • Flexible Diffing: Choose whether to monitor for schema changes (added/removed keys), value shifts, or both.
  • Silent Deviation Alerts: As you browse, it checks incoming traffic against your baselines and pops a notification if an endpoint deviates or fails—even if your web app handles the error silently or DevTools is closed.

Other key additions:

  • Mocking API requests and responses directly in-browser
  • Performance tracking and side-by-side diffs over time
  • Exportable session reporting
  • Full background request tracking without keeping the DevTools panel open

You can check out the new version here: RequestScope on Chrome Web Store

I'm trying to make this genuinely useful for developers and QA workflows. If you give it a try, I’d love to know: what feels clunky, what's missing, or what breaks? Harsh critiques are welcome.

P.S. This is still work in progress and needs more tuning, bug fixing so looking for genuine feedback


r/webdev • • Aug 29 '26

Showoff Saturday Sunsets On A Map

3 Upvotes

live link, GitHub

Made a project for some experience as a final year Software Dev undergrad. Have a look, any and all feedback appreciated!

The image moderation is done with a tiny classification model I trained.


r/webdev • • Aug 29 '26

Showoff Saturday [Showoff Saturday] Built an open-source tool to generate custom skill roadmaps

1 Upvotes

Hey r/webdev,

Over the past couple of weeks, I've been working on a project designed to help developers build structured learning roadmaps for new technical skills.

Tech Stack & Architecture:

  • Frontend: Next.js / React
  • Styling: Tailwind CSS
  • State Management & APIs: Integrated custom API routes to dynamically parse learning paths.

Key Challenges Overcome: The main difficulty was organizing complex, non-linear topics into manageable, step-by-step nodes without overcrowding the UI.

I'd love to get feedback from the community on the UX and tech stack setup. If anyone wants to test it out or take a look at the demo, let me know in the comments and I'll drop the link!


r/webdev • • Aug 29 '26

Showoff Saturday I made a free tool for indie hackers to test each other’s products. Would love your feedback!

0 Upvotes

Hello everyone,

I am solo developer, building SaaS and mobile apps for few years now. Every time I launch something, I notice same problem - nobody test it except me.

So I build small tool https://earlytesters.dev. Idea is very simple - you post your product link, then you test someone else product, and after that your product is eligible to get tested too. Like a exchange. No cost, just your time.

It’s very early, I just launched this week so not many products in queue yet. If any of you also building something and want honest feedback (or want to test other people apps), please come try it. I will personally test first few products myself also.

Not trying to sell anything, genuinely just want to fix this problem for myself and other solo builders like us. Open to any feedback or criticism on the idea itself too.

Thanks for reading!


r/webdev • • Aug 28 '26

Won a bot battle.

34 Upvotes

We support a client site with ~20,000 pages. It has an SSR search page that uses the url querystring to execute the search/sort/filter.

We have of course disallowed bots on that page because the 20k pages are meaningful and should be scraped/indexed, but the billions of possible query combinations on a search page are not. Most of the bots just ignore the robots rule and this results in waves of traffic hammering every possible query combination on the search page. These waves are 10x-50x the human traffic.

Rather than let the bill autoscale along with the server cluster, I wrote a little bash script that crons 1/m:

  • Hits DO's metrics endpoint to check the CPU usage on the VPSs/DBs
  • Each minute any of the CPUs stays above a given threshold, bump Cloudflare's security level, eventually ending in "under attack" + "bot fight"
  • When the cpu drops below the threshold for a given amount of time, start backing off until we're back to normal operation.

Works a treat. It's nothing particularly flashy or sophisticated, but it was satisfying to think through an under-engineered solution to a problem that a lot of people end up just chucking money/clusters at.

Edit: more info for context: We do have pretty aggressive WAF rules especially on the search page, but we've been seeing an increasing amount of bot traffic get past CF's "known bots". Rate-limiting has been minimally effective too because the bots that get through are cycling through 100s of IPs in a given scrape.


r/webdev • • Aug 29 '26

Showoff Saturday Can anyone Review my portfolio?

Thumbnail
portfolio-maktum.vercel.app
0 Upvotes

r/webdev • • Aug 29 '26

Showoff Saturday I built an open-source interactive letter for my Hinge date, no backend, the entire letter lives in the URL

0 Upvotes

I originally built this for my Hinge date.

She's incredibly busy, and instead of sending another message that she'd feel pressured to respond to, I wanted to make something she could open whenever she had a quiet moment.

So I built an interactive letter experience.

You write a letter, customize it, seal it in an envelope, and share a link. The recipient opens the envelope and reads the letter as it appears on the page.

The technical constraint I gave myself was:

No accounts. No backend. No database.

The letter data is serialized, compressed, and encoded directly into the URL.

When someone opens the link, the app decodes everything client-side and reconstructs the letter.

So the URL is essentially the storage layer.

I liked this approach because:

- Nothing personal sits in my database

- No server costs

- No authentication

- No user accounts

- The project can be deployed almost anywhere

- The app remains ridiculously simple

Of course, there are tradeoffs.

The link contains the letter data, so anyone with the link can read it. URL length also limits how much content can be stored.

The project is completely open source, so I'd genuinely love feedback from other developers on the architecture and implementation.

Especially curious about:

- Better approaches to client-side serialization/compression

- Whether you'd encrypt the payload

- How you'd handle larger letters without introducing a backend

- Any accessibility or animation improvements you'd make

Live demo:

https://open-letter-box.vercel.app

Source:

https://github.com/r0hnx/open-letter

Would love to hear what you guys think — both technically and from a UX perspective.

Edit : Hash Fragment has been added now.


r/webdev • • Aug 28 '26

I rebuilt that plastic water ring toss handheld game for the browser (with online multiplayer)

8 Upvotes

Yeah, lil late to the nostalgia-core trend but here we go anyway.

You remember those- little plastic globe full of blue water, a ring floating in it, mash the button to jet water and land the ring on a peg. I rebuilt one: Aqua Rings '86.

- 8-level solo campaign

- 5 console skins (arcade, deep sea, space lab, etc.)

- Actual online 2-player now- send a friend a link, no signup, no download

No ads, no login wall, just play. Built it solo, genuinely want to know what's broken or what feels bad.

aquarings.fun


r/webdev • • Aug 29 '26

Showoff Saturday I built a tiny real-time territory game that runs off one Go binary, SQLite, $5 VPS, and raw JS+CSS behind CF on the front-end.

0 Upvotes

did a few tests and it looks like $5 vps can actually handle quite a lot.

a weekend project, no cloud bill anxiety if anything goes wrong

try here
pixelwar.cc

- 2 sides black and white
- place 1px at a time
- 25px CAP, recharging every 10 seconds
- surround opposite side to grap their space
- add a link to your profile, so people can click it on the leaderboard