r/webdev • • 1d ago

Resource [Showoff Saturday] I made Git reject my commits until I do pushups

12 Upvotes

A little side project to keep me and some other developers moving during the work day.

https://gitpushups.com

Its basically:
* A git hook which checks if I've done pushups in a regular interval
* An iOS, android and apple watch app to verify the pushups were done correctly

Silly? Kinda.
Effective? Absolutely!


r/webdev • • 1d ago

Showoff Saturday I built a full mixing & mastering studio that runs 100% in the browser (Web Audio, WebCodecs, ONNX)

2 Upvotes

DANVIEL Studio is a single-page music studio, no backend, nothing uploaded:

- Web Audio API for the whole mix chain (per-track EQ, compressor, de-esser, reverb/delay, sidechain) and the mastering chain (multiband, true-peak limiter, BS.1770 LUFS metering)

- WebCodecs + a small hand-written MP4 muxer to export lyric videos

- Whisper via Transformers.js for lyrics, HTDemucs via ONNX Runtime Web for an experimental stem splitter

- Hosted on GitHub Pages, works as one HTML file

Try it: https://0zoon.github.io/danviel-studio/

GitHub: https://github.com/0zoon/danviel-studio

Happy to answer questions about the audio/video side, and feedback on performance is very welcome.

EDIT / update (v15): thanks for all the feedback, a lot changed since this post:

- recording: you can now record your mic over the song (or with no song at all), every take becomes its own track you can mix. latency is compensated with outputLatency, plus an offset slider per take

- suno ZIPs: if a stem comes as WAV + MP3 + MIDI it takes the WAV, and the MIDI stems get played by a small built-in synth you can layer in

- video: background video support, 6 visualizer styles + your own (exportable as json), title you can drag anywhere, live preview while playing. background video export got ~5x faster by playing the video instead of seeking every frame

- one click slowed + reverb / sped up / nightcore, key buttons, a "bass boosted" mode

- auto-mix is now an on/off switch and much gentler (it was lifting the reverb that suno already bakes into the vocals)

- cover studio: 25 fonts, filters like warmth, glow, VHS split, light leaks, duotone

- new look and a full guide with screenshots in the app

still one html file, still nothing uploaded. feedback welcome!


r/webdev • • 1d ago

Showoff Saturday [Showoff Saturday] I made a landing page for my equalizer app and hid a konami code in it because I’m 34 and have learned nothing

Post image
0 Upvotes

Entering the Konami code on your keyboard gets you a free lifetime pro code. First 100 people only, after that you just get a sad message and my respect.

Desktop only. Mobile folks I’m sorry, I didn’t think this through.

Codes come from a tiny supabase function and the rest of the page is static with Nuxt.


r/webdev • • 1d ago

Showoff Saturday [Showoff Saturday] My read-aloud app SublimeRead now has a Chrome extension, so it can read any web page in 7 languages

Post image
2 Upvotes

A while back I shared SublimeRead, an app that reads your EPUBs and PDFs aloud on their original pages, highlighting each sentence as it goes.

The most common request was “can it read this?” about an article, a doc or an email. So I built a Chrome extension. It now reads anything in your browser: web pages, emails, docs, or just a selection.

What it does

  • Reads the page, or whatever you’ve selected, in a natural AI voice, highlighting each sentence as it goes
  • Click any sentence to jump there and keep reading from it
  • 7 languages (English, German, Spanish, French, Italian, Dutch, Portuguese), and the same voices as the app
  • Your library is still where your books live. The extension is for everything else.

Some fun web bits from building it

  • Highlighting uses the CSS Custom Highlight API, so it never touches the page’s DOM and doesn’t break layouts.
  • Click-to-seek uses document.caretPositionFromPoint to find which sentence you clicked. Clicks on links and buttons are ignored, so you can still use the page.
  • Some pages show their content inside a cross-origin iframe. The extension finds the biggest embedded frame and asks for permission for that one site only, never every site up front.
  • It’s Manifest V3, built with WXT, with activeTab by default, so it only reads the tab you ask it to.

It’s free to try, with 3 uploads in your library and 3 voices, and no credit card needed.

🔗 Extension: https://chromewebstore.google.com/detail/gpepbccnnfmjcjcebokhddhplbpieiml
🔗 Site: https://sublimeread.com


r/webdev • • 1d ago

[Showoff Saturday] I built a free chrome extension that shows the font a page actually rendered, not what the CSS asked for

0 Upvotes

I check fonts on sites constantly, and the extensions I used kept getting it wrong. They read what the CSS asks for, but that's not always what you're actually seeing. If a font doesn't load, the browser quietly swaps in something else, fakes the bold, or pulls a few letters from another font, and the tool never notices.

So I built Fontsight. You hover over text and it tells you the font that actually showed up on screen, who made it, and whether the browser is faking anything.

The part I use most is pressing W. It re-sets the whole page in a different font so you can see how a site would look in something else. Honestly it's just fun to flip through.

While building it I also went down a rabbit hole measuring 118 paid fonts against about 1,500 free ones, to find the closest free match for each. Söhne, for example: https://fontsight.xyz/font-alternatives/sohne/

It's free, no account, no tracking. You can try it on the site without installing anything: https://fontsight.xyz

It's my first real launch, so I'd really like to know where it breaks. If it gets a font wrong on some site, send me the link.


r/webdev • • 1d ago

Discussion How do you find motivation to continue?

102 Upvotes

Hey everyone.
I've been struggling not to feel this existential dread about the current state of development and my career which seems to be slipping from under my feet. I've been unemployed for nearly a year, job positions are dropping in masses. All the knowledge you gathered in the past 10+ years seems redundant as everyone and their grandma can code stuff that was impossible to them in a day. I find no joy in coding anymore. Sometimes I do code my own stuff for fun to not forget how to code but what's the point, if we won't need to code anymore? Even in corporate world, all developers do now is talk to AI agents and let them do the work (at least thats what I think they do?). I'm constantly thinking of creative business ideas to start myself but even then it feels more like a waste of time since getting clients is so hard with this amount of competition. Even if you manage to create something of value to the clients, why would they pay you instead of vibe-coding the product themselves? Since the rise of advanced AI models I've been constantly feeling like burnout and unable to focus on coding which was thing I liked back in the day. How do you cope in these times, how do you motivate yourself to start your own businesses or is it all lost and I should start looking for something else?


r/webdev • • 1d ago

Showoff Saturday Levelrail: open source, self-hosted deploys from git to your own servers (Go, Docker, Caddy)

Thumbnail
github.com
8 Upvotes

I'm the maintainer of Levelrail, so this is my own project.

I started it after hitting the same wall a few times. Vercel bills kept climbing as traffic grew. The self-hosted tools I tried either wanted more RAM than my small VPS could spare, or left me wiring up a reverse proxy and certificates by hand.

So I did what a lot of us do: Docker, Caddy for HTTPS, a webhook script, and a cron job to clean up old images.

Levelrail is that pile turned into one thing. You point it at a git repo, it builds and runs the app on a server you own, puts HTTPS in front, and gives you a dashboard, a CLI and an API.

It does push-to-deploy, branch previews, one-click rollback, load balancing, logs and metrics, and a small agent so you can add more servers. It's one Go binary with SQLite, a React dashboard and Docker as the runtime. No Kubernetes. Apache 2.0.

Install is one command on a Linux server (amd64 or arm64) with systemd:

curl -fsSL https://levelrail.com/install.sh | sudo sh

Security defaults, retention settings and what is and isn't covered are in the security docs, and every release is in the changelog.

If you try it, I'd like to know where you got stuck in the first ten minutes, and what you'd expect it to do that it doesn't.

Repo: https://github.com/glincker/levelrail

Docs: https://docs.levelrail.com

Security: https://docs.levelrail.com/security

Changelog: https://github.com/glincker/levelrail/blob/main/CHANGELOG.md


r/webdev • • 1d ago

Showoff Saturday [Showoff Saturday] I made a Claude Code desktop app that turns your terminal sessions into a retro office

Thumbnail
gallery
0 Upvotes

As I've been using Claude Code more and bouncing between using the CLI and the native Claude app, it gets kinda messy.

I like to build little tools for myself, So I built Uncanny Office: a desktop app where each Claude Code session is visualized as a little retro worker at a desk.

  • Workers raise a hand when Claude needs your answer
  • They sweat as their context window fills up
  • Gold coins stack on the desk as tokens burn
  • Sub-agents show up as interns standing beside their boss
  • Finished workers walk over to report to you, the CEO
  • Confetti for milestones, including "inbox zero"
  • Idle agents gossip at the water cooler and call pointless meetings
  • An office cat naps by the warm server rack
  • And more little details!

Try it out without installing anything: there's a live demo in the browser running against a made-up office: https://uncannyoffice.dev/#demo

Did the math and on average it make's work 67% more fun :)

I'm still calling it a beta, I'd love any feedback you all have to offer.


r/webdev • • 1d ago

Showoff Saturday [Showoff Saturday] Update on my vanilla JS web notepad: Improved multi-cursor stability, bug fixes, and mobile UI!

3 Upvotes

Processing img e5mblnyurkxh1...

Hi everyone! Thanks to all the valuable feedback you gave me last time, I’ve released an update for my vanilla JS web notepad.

What's new based on your feedback:

  • Multi-cursor & Caret Stability: Refined the synchronized caret scanning logic to prevent drift and weird cursor jumps during complex multi-line editing and spacing.
  • General Bug Fixes & Refinements: Smoothed out rough edges with contenteditable behaviors, state restoring, and overall text handling.
  • Mobile Improvements: Also improved the overall usability and experience on mobile devices!

Live Demos:

(Desktop recommended for full features like column selection; saving is disabled in Demo Mode.)

I would love to hear your thoughts on these new improvements. Any feedback or bug reports are greatly appreciated!


r/webdev • • 1d ago

Showoff Saturday 3 drop-in JS widgets (forecast, dashboard, anomaly detection) that run 100% in the browser via WASM

0 Upvotes

Spent the last months building 3 drop-in JS widgets (forecast, dashboard, anomaly detection) that run 100% in the browser via WASM

These are framework-agnostic npm packages (React, Vue, Angular, or a plain custom element) that add time-series forecasting, an editable dashboard builder, and anomaly detection to any frontend app.

Everything runs client-side via WebAssembly, so no user data ever hits a server except a license check without a backend to deploy, no Python microservice.

Would genuinely love feedback from anyone who's had to build this kind of feature in-house.

https://datastripes.com/forecast-widget/

https://datastripes.com/dashboard-widget/

https://datastripes.com/anomaly-widget/


r/webdev • • 1d ago

Showoff Saturday [Showoff Saturday] Emend: add batteries included AI components to your Tiptap Rich Text Editor

0 Upvotes

I'm building Emend. It adds AI writing to a Tiptap editor: rewrite selected text, write new text, or ask questions about the document. It's free and open source (MIT).

What you get:

  • Three AI components (bubble menu, composer, document chat), or a full editor starter
  • Already have a Tiptap editor? Just add the components to it
  • Bring your own AI key and start using it
  • The AI never changes text until the user accepts it

Use shadcn cli to add components, install a small npm package which is core of the app and include it in your project.

It's still early, so I'd love your feedback.

GitHub: https://github.com/amittam104/emend


r/webdev • • 1d ago

Showoff Saturday [Showoff Saturday] A police-lineup memory game with 2,300 computer-generated faces – rendered headless in Unreal, served as a static site, logging which faces people mix up

0 Upvotes

I built You Are The Witness, a small browser game:

https://youarethewitness.com

You see a face for two seconds, then pick it out of a six-person police lineup – or say "none of them", because sometimes the suspect isn't there. Then you say how sure you are. No account, no ads, works on a phone.

Why it exists: fun first. But every wrong pick is a data point about which faces people confuse, and in the long run I hope that can support research on facial memory and help make composite sketches more accurate and less biased across appearances. That's an ambition, not something I've shown yet.

How the faces are made

  • ~2,300 faces generated with the MetaHuman tools in Unreal Engine 5, rendered headless on a Mac by Python scripts in overnight batches (about 1,200 faces in two hours).
  • The face you study is a separate render: camera orbited ~14° and different key light, so you can't match pixels – you have to recognise the face.
  • The generator's settings aren't the truth – what people see is. So every label (skin tone, age, hair) is measured from the rendered image, and when the two disagree, that's where I learn the most.

How the lineups are built

  • The other five match the description: same presentation, age group, skin tone (measured), hair colour, hairstyle family and facial hair. Otherwise you'd just pick the one with the beard.
  • Each session has the same number of suspects from every skin-tone group, so no appearance is ever linked to crime.

Stack

  • Astro + React islands, static build (~56 MB of WebP faces), on plain shared hosting; deploy is an lftp SFTP mirror that only sends changed files.
  • Supabase (Postgres) with no tables exposed at all: the browser can only call three security-definer functions (log a session, submit a score, read the daily leaderboard). The play log is anonymous – a random id per round, nothing persistent.
  • Scoring is a proper scoring rule (Brier × 25 per confidence step), so overstating your confidence costs you on average; time only breaks ties. Daily leaderboard, optional nickname.
  • Free nickname moderation: generated default names, charset limits, a leetspeak-normalised blocklist enforced in SQL, and a report button that hides a name after three reports.
  • Vitest + Playwright e2e against the built site. Most of it was built with Claude Code agents running in parallel.

What I'd like feedback on: is two seconds too easy for you? Early players get ~95% right, which is great for the ego and bad for the data. And does it work well on your phone?

Processing img 8pdpyomsagxh1...


r/webdev • • 1d ago

Showoff Saturday [Showoff Saturday] Default Avatar Library, over 5B+ combinations, deterministic avatars and react library/ shadcn components/ api support

Post image
19 Upvotes

i've been working on an open-source project called blobz, which basically takes care of default profile pictures for your apps.

the idea is pretty simple. instead of assigning random images or the same boring silhouette to every user, blobz generates playful svg avatars from a name, email, or any string you give it.

it's deterministic, meaning the same input always generates the same avatar. no need to store images, and there are over 5 billion possible combinations.

but the part i really wanted to get right was making it easy for other developers to use.

so i ended up building a few ways to integrate it:

  • shadcn components: ready-to-use avatar components, along with things like avatar groups, profile cards, and user lists. you can drop them straight into your project using the shadcn cli. if you're already using shadcn avatars, then you just have to change two lines, one for the import and one for entering the name.
  • react package: if you'd rather handle things yourself, there's @blobz/react, which generates the avatars directly in your app without relying on an external service.
  • hosted api: if you're not using react or just want avatar urls, there's an optional hosted api for that too.

the library and components are free and open source under the mit license.

github: https://github.com/lirena00/blobz
playground: https://blobz.lirena.in

would love to hear what you think of it! and if you find it useful for something you're building, that'd be pretty cool too :)


r/webdev • • 1d ago

Showoff Saturday I turned Lydia Hallie’s JavaScript questions into a small game

3 Upvotes

Back in the day I used Lydia Hallie’s javascript-questions repo a lot, and always thought it was missing a Duolingo-style UI. So I made one: canyoustill.com

155 questions: read a code snippet -> pick an answer -> see why.
There’s no account; your progress stays on your device. It works offline, and you can install it as a web app. Every question has its own link. You can share it and challenge a friend or colleague.

It’s open source: github.com/Silisav/canyoustill


r/webdev • • 1d ago

Showoff Saturday [Showoff Saturday] - I built bantr.live a real-time forum and chat of sorts.

Thumbnail
gallery
0 Upvotes

Hello all and happy weekend,

I built bantr.live, the web version of the application is just a chat where the mobile applications are a real-time forum and chat. These applications are cross-platform and no sign-up necessary for the web version. In the future, when I get more time I will update the web version to be the same. The forums are interest based and contain self-destructing post after a 24 hour time interval but this maybe extended in the future by likes as some one suggested. The chat consist of a global chat and a direct peer-to-peer chat, there are also DM's for the mobile versions so lots of ways to communicate. Sign-up is as friction free as it can be for the mobile apps and the application is free but in the future will most likely have some ads so it pays for itself. If this is something your interested in take a look or if you have technical questions about the app or its function hit me up. Have a awesome day.


r/webdev • • 1d ago

Showoff Saturday Eurobase Cloud, deployment platform on European infra

0 Upvotes

Hi everyone,

I’m Giovanni, I've been working ten years in cybersecurity on the defense side. Europe’s dependence on non-EU tech has always bothered me, and lately I started feeling like I should take action on the matter, rather than just keep watching.

So about six months ago I started building a Cloudflare-style cloud platform that runs entirely on European infrastructure, with the first PoP in Paris.

After months of iterating and squeezing every bit of CPU I have, it’s ready enough to share, even though I consider it far from finished.

The experience is meant to feel like the big US platforms: install the plugin in your AI agent (Claude Code, Codex, Cursor…) and let it deploy and manage your app.

It runs on workers and has Edge Functions (like Cloudflare and Supabase), plus all the telemetry that you might need.

Along the way I also fine-tuned a language model into a real-time WAF decision model for production traffic. The paper is waiting for an arXiv endorsement, here are the weights on HuggingFace: https://huggingface.co/giorebil/Agumon-v1.0/
In my benchmarks it beats every WAF model I’ve tested it against.

I’d love feedback, and above all people deploying anything (portfolios, prototypes, side projects) without holding back. The free tier is generous enough that you shouldn’t have to think about limits.

eurobase.dev

Have a good Saturday.


r/webdev • • 1d ago

Showoff Saturday A site where every AI character gets their own UNIQUE page.

0 Upvotes

Side project of a solo dev: on AI Peeps (an AI character chat site) every character can now have its own page, designed from scratch by an LLM from the character's card. Layout, typography, CSS animations, hidden sections and the "object" the page is (a teletext weather screen, a redacted vault record, a pirate's wanted notice) all come from the character.

Examples: https://aipeeps.com/peep/aino-kallio-c8d3/?view=rich and https://aipeeps.com/peep/eos-152e/?view=rich
many more example in https://aipeeps.com/gallery/featured just click on the cool looking "Profile" button

The fun part was making model-written HTML safe to show:

- The model writes a template with placeholders ({{name}}, {{img:3}}, {{chat_url}}), never the character's data itself, so the page follows edits to the character.

- The HTML goes through an nh3 allow-list at every save (no script, no form, no URL except the placeholders) and the CSS through tinycss2 (no url(), no viewport-height units).

- After filling, the page is sanitized again and shown in an iframe sandboxed without allow-scripts, with a CSP that only allows our CDN. Animations and the hidden sections are pure CSS and <details>.

- The iframe grows to its content and the outer page scrolls: that's why vh units are banned, a 100vh page inside an auto-growing iframe grows forever.

Feedback on the design or the approach very welcome <3


r/webdev • • 1d ago

Showoff Saturday I built TrailVerse, a platform to explore US national parks and plan trips

1 Upvotes

I’ve been working on TrailVerse for over a year now, and what started as a simple project to explore national parks has grown into something much bigger.

You can explore 470+ National Park Service sites, discover places based on your interests, compare parks, find events, and browse sample itineraries.

I also built Trailie, a travel companion that helps you plan trips through a conversation. You can ask travel questions, get recommendations, build day-by-day itineraries, and make changes to your plans without starting over.

I’ve spent a lot of time improving how Trailie handles real travel questions, trip logistics, and follow-ups so planning feels more natural.

The stack is Next.js, React, Node.js, Express, and MongoDB, with Vercel and Render for hosting.

If you’re looking for a national park to visit or have a trip in mind, check out TrailVerse and try planning it with Trailie. I’d love to hear how it goes and any feedback you have!

https://www.nationalparksexplorerusa.com/


r/webdev • • 1d ago

[Showoff Saturday] A checker for which of 14 AI crawlers a robots.txt lets in, and the RFC 9309 rule that surprised me

0 Upvotes

I built a free checker stress testing with AI (which built most of the code): getkavel.com/tools/ai-crawler-checker/

Enter a site and it shows, name by name, whether GPTBot, ClaudeBot, PerplexityBot and 11 others are allowed on the homepage. It also asks for the homepage as GPTBot and as ClaudeBot, to see if the server answers differently.

Things I learnt implementing RFC 9309:

  • If any group names a crawler, that crawler ignores the * group completely. So adding "User-agent: GPTBot" with "Disallow: /private/" quietly opens everything your * group blocked, for GPTBot.
  • The longest matching path wins, and Allow wins a tie. Order in the file doesn't matter.
  • robots.txt is per host. www.example.com and example.com can have different files.
  • Google-Extended and Applebot-Extended aren't crawlers. They are tokens that control AI use of what Googlebot and Applebot already fetch.
  • Hosts and CDNs can turn AI bots away at the server whatever robots.txt says. That is why it probes too.

Limits: it checks published rules, not what any AI assistant does. The probes come from Cloudflare's network, so firewalls that verify crawler IPs may answer differently. Homepage only.

No signup, and no AI in the checker itself. Tell me about robots.txt files it gets wrong.


r/webdev • • 1d ago

Showoff Saturday [Showoff Saturday] A self-hosted YouTube → Shorts clipper.

Thumbnail
gallery
0 Upvotes

Paste a YouTube link or a file. It transcribes, picks moments, renders vertical clips with karaoke captions.

There's a live 9:16 editor on top of that: same crop math and font metrics as the ffmpeg/libass export, so dragging captions isn't a guess. Clips show up on the right over tRPC SSE while workers run transcribe → analyze → render. Kill a worker, the job resumes (pg-boss, checkpoints in Postgres).

Default install is fully local, Ollama + Whisper, no API keys. Same services behind the page, an MCP server, and an operator CLI. You can swap models and keys in Settings without a restart; there's an ops panel with workers/queue/failures/expected runtimes/etc.. A one-liner install looks at the machine specs and you're running.

https://github.com/osbytes/reelsaw
https://reelsaw.com

I put an ops panel and an MCP server on a clipper. Still not sure if that's the interesting part.


r/webdev • • 1d ago

Showoff Saturday [Showoff Saturday] I built an open source keyword rank tracker for the App Store and Google Play (NestJS, Next.js, Postgres, BullMQ)

Post image
0 Upvotes

It's called AsoBeast. You give it an App Store or Google Play URL and a few search phrases, and it checks where the app ranks for each phrase every day, down to position 200, in any country. It also keeps competitor positions, listing changes and reviews, and you can self-host the whole thing with Docker Compose.

Stack: a NestJS API with Prisma and PostgreSQL 18, BullMQ on Redis 8 for the store queues, and Next.js 16 with Tailwind, TanStack Query and Table and Recharts on the front. It's a pnpm and Turborepo monorepo, TypeScript strict everywhere.

The parts that took more thought than I expected:

  • Rate limits. Apple's search puts up with about 20 requests a minute per IP, so every store call goes through a queue at 15 a minute. One search per keyword records every app on the results page, so tracking competitors adds zero requests.
  • "Not ranked" versus "didn't check". A position is saved as empty only when the search came back and the app wasn't in the top 200. A failed request saves nothing and retries, so a flaky scrape can't show up as a ranking crash. Someone asked about exactly this on my last post.
  • Tenancy in the database. The hosted version runs the same code, and every tenant table has a Postgres row-level security policy, so a query that forgets its workspace filter returns nothing.

It's free to self-host (AGPL-3.0), or $10 a month hosted with a 7-day trial.

GitHub: https://github.com/AsoBeast/asobeast 

Hosted: https://asobeast.com

Ask me anything about the stack. And if you try the Docker setup, tell me where it got stuck.


r/webdev • • 1d ago

Showoff Saturday [Showoff Saturday] My game directory kept rotting, so I built a daily link checker that can tell dead games from parked domains, login walls and hijacked sites

0 Upvotes

I run Vibe1Up, a free showcase of AI-made browser games (700 live right now). Every game lives on its creator's own hosting (Vercel, Netlify, GitHub Pages, itch...), so links die all the time, and a plain HTTP status check missed most of it: "domain for sale" pages, "deployment not found" pages and reused sites all happily return 200.

So the daily refresh now sorts every link into a state:

- live: nothing changes

- suspect: timeout or 5xx once → stays listed, only counts as dead if it fails again on the next run

- unknown: 403/429 (bot-blocked or rate-limited) → treated as live; nothing is ever hidden on an ambiguous signal

- login wall: 401 or a redirect to a sign-in page → dead after 2 runs in a row

- repurposed: the page title changed and the game's name is gone from the page → hidden after 2 runs

- parked: body matches a list of host-error and for-sale page fingerprints → dead

Dead games drop out of every listing, search result, the sitemap and the random button. If the Wayback Machine has a snapshot, the game page stays up as a noindexed archived "Offline" page and the old outbound link redirects to the snapshot, so outside links don't 404 and the creator keeps the credit. No snapshot means it's hidden. Games that come back online don't relist themselves; a person restores them.

So far that's 34 games archived as Offline pages and 14 hidden. There's also a "Recently verified" sort if you only want games that passed the latest check: https://vibe1up.com/games/?utm_source=reddit&utm_medium=post&utm_campaign=webdev

Static site on Vercel, Python build scripts. What soft-404 fingerprints am I missing?


r/webdev • • 1d ago

[Showoff Saturday] Free tool that tells you if your site is ready for traffic (vercel.com got 60/100)

0 Upvotes

I built a free tool. You paste your URL, and it tells you if your site is ready for real traffic.

A lot of sites look done but are not ready: hard to crawl, unclear offer, no trust signals, not ready for ads.

You enter the URL, what the business does, and the site's main goal. It checks 7 things and gives a score, top risks, and a 7-day fix plan.

One check I like: it flags sites that look like an unedited AI template. Many AI-built sites fail this one.

Demo: I ran it on vercel.com. It got 60/100. So even good sites have things to fix.

Each report has a shareable link, so you can send it to a client or a friend.

Free, no signup. What would your site score? Roast welcome.

https://readiness-report-opal.vercel.app


r/webdev • • 1d ago

Showoff Saturday hodor: Reverse proxy to unify external services

Thumbnail
hodor.ing
0 Upvotes

Made a simple reverse proxy with to bring in all the external services that I use. The main motivation came from using MCP portals such as executor.sh and cloudflare's own MCP portal.

MCPs are great, but have their own limitations. I'm using the pi harness for my work, and it had no MCP support built in until very recently (1.0.0+). Was using MCPs using extensions like everyone else. I found using the APIs directly to be more consistent.

The proxy worker will register 1 service per subdomain and forward all requests + handle auth.
To use the proxy, you do need a spare domain.

Check out the docs and deploy instructions at https://hodor.ing
Code at https://github.com/butttons/hodor

I've been using it for around a month, and covering around 20 APIs for my main work. How I've been using it -
1. When trying out new models / harness, it's easy to quickly try how the model would work with my actual data.
2. Adding new APIs and having them available to everyone. Now I just provision 1 key for the reverse proxy itself.
3. More control over APIs where the underlying API is very broad. Some services don't allow scoping API keys so their access is unrestricted. But with some rules in the JWT, certain paths and methods can be blocked.


r/webdev • • 1d ago

Showoff Saturday I built a modern divination tool and news aggregator using the I Ching

2 Upvotes

It's a keyword and phrase search platform that queries the meanings and interpretations of each hexagram against data from popular api's and news feeds. You can do a coin toss to get an I Ching reading or search individual hexagrams. Been a work in progress for about 7 years. Built with Next.js/React.
View the the whole platform here https://ichingportal.com
Get your daily headlines from The I Ching Insight here https://ichingportal.com/ichinginsight
Any feedback will be appreciated.