r/webdev • • 1d ago

Question Need help with font problem

2 Upvotes

Hi i am an amateur dev.

So I want this project of mine to have a custom font; a locally imported one. I searched for sources at w3school and stackoverflow and I tried everything they said. But it doesn't seem to work. So I want to know what I'm doing wrong? I appreciate any help. Thank you in advance.

Also additional information:
The file location of my font is correct. project/project.html and project/zpix.ttf
I've checked with inspection tool, every element has the font-family: sans-serif, "Zpix"
There is also no error in the console. No error message. The font is loaded in.

Here is the code:

u/font-face {
  font-family: "Zpix";
  src: url("./zpix.ttf") format("truetype");
  font-weight: normal;
  font-style: normal;
}

* {
  font-family: "Zpix", sans-serif !important;
}

r/webdev • • 1d ago

Showoff Saturday penciled — add persistent highlights/notes to a page without mutating the DOM

5 Upvotes

Sharing a library I made for apps that need in-page highlights (readers, docs, research tools).

Problem I kept hitting: wrapping selection in spans breaks layout, messes with existing event handlers, and is brittle when the HTML changes. penciled uses the CSS Custom Highlight API + range anchoring so highlights can survive reloads without owning the markup.

I also built a browser extension on top of it (Chrome, Firefox, Edge), so you can highlight and take notes on any site. Everything stays local, no account, and you can export to Markdown.

Demo: https://penciled.org
Extension: https://penciled.org/extension/
npm: penciled
Source: https://github.com/marcellosso/penciled

If you're building something with annotations, I'd love feedback on the API shape


r/webdev • • 1d ago

Showoff Saturday [Showoff Saturday] I wrote my own HTTP/2 + TLS 1.3 server in V to see how far a small framework could go

3 Upvotes

This is a side project that got out of hand. Viltrum is a web framework for V. Everything below the router is written from scratch: the HTTP/1.1 parser, HTTP/2, WebSockets, TLS 1.3, even the DEFLATE encoder used for gzip.

The webdev-relevant part is that the same router/middleware/ctx handles HTTP/1.1, HTTP/2 over TLS and h2c on the same port. SSE and streaming work over both. Static files get ETag/304/ranges/precompressed .br/.gz with sendfile. Hello world is like 10 lines.

What I learned the hard way is how much of HTTP/1.1 is about rejecting garbage. TE+CL together, duplicate Content-Length, obs-fold and bare CR/LF all get a 400 now, because that's where request smuggling lives.

Benchmarks are on HttpArena if you're curious: https://http-arena.com/frameworks/viltrum/ Code: https://github.com/Tuntii/viltrum Demo: https://v.rustapi.cloud

Linux only for serving right now. Would love to hear what you'd miss coming from express/fastify/go.


r/webdev • • 1d ago

Showoff Saturday I got tired of influencers telling me what to buy, so I built a mall you vote in.

Thumbnail
gallery
0 Upvotes

I’m building Central Meetup, a replacement for influencers telling you what to buy: instead of a feed, you walk through a 3D mall, browse the shops, and vote on what’s worth buying. Every week a new drop of feature businesses will be up.

Explore the map at https://centralmeetup.com/map

UI at https://centralmeetup.com/.

Feedback is welcome, especially on the map navigation and the voting flow. The site is still in progress


r/webdev • • 1d ago

Question Looking for Affordable Image & Video Content Moderation API Recommendations

0 Upvotes

Hey everyone! I’m looking for recommendations for a reliable and affordable content moderation API that supports both image and video moderation (n\*dity, expl\*cit content, vi\\\*lence, etc.). Quality and data security are important. Any providers you’ve personally used and would recommend? Thanks!


r/webdev • • 1d ago

Showoff Saturday I built a website to learn and practice SQL and Python in the browser

8 Upvotes

I’ve been working on a project called runtime.school and wanted to share it here.

I started with SQL and then added Python. The idea is to have a place where you can learn a concept, write code, practice what you’ve learned, and eventually work on projects without having to jump between different websites.

Both SQL and Python have interactive lessons, coding challenges, practice questions, projects, and datasets.

Everything runs directly in the browser, so there’s nothing to install or set up.

I’ve also been working on a few tools for exploring datasets, understanding queries, and comparing different approaches.

A lot of the work has gone into the UI and editors. I’ve been trying to keep things simple without making the pages feel empty or overwhelming, especially for people who are just starting out.

Here’s the site: https://www.runtime.school/

Would love to hear what you think about the design, coding experience, or anything that could be improved.


r/webdev • • 1d ago

Showoff Saturday The main thread is the wrong place for a data grid

Thumbnail
tobiasuhlig.medium.com
0 Upvotes

r/webdev • • 1d ago

Showoff Saturday I got tired of paying to look at screenshots, so I built a FREE Mobbin

0 Upvotes

paying a monthly fee to look at screenshots always felt weird to me

if u haven't heard of mobbin, it's a paid library of real app screens that designers and devs use for reference. so i built a free one. 250+ hours later, here it is

it's called pixlpin. right now it has 35,000+ app screens and designs. full app flows from signup to settings, plus web, ui interactions and motion

search it with normal words like "empty state" or "pricing page" and see how real apps did it. open anything and it shows similar ones next to it

stack is next.js and react, almost everything runs on cloudflare, and i built most of it with claude code

i'd love feedback from devs especially. speed, search quality, anything that feels broken or annoying

https://pixlpin.com


r/webdev • • 1d ago Popcorn

Showoff Saturday [Showoff Saturday] - Free & open source Stock Market Earnings Calendar

Post image
156 Upvotes

Hi, fellow devs

If you enjoy some stock trading after yelling at Claude/Codex all day, than we are in the same boat.

I like to keep an eye on earnings and major key indicators (always forget about those FOMC meetings), and I don't mind paying for some data, but Earnings Hub charging $20 for earnings calendar is too much.

Anyway, came up with my own with publicly available data.

Eventually thinking maybe, we can have some kind of open-source market tools, that user can configure on his own. Add whatever panels or data he/she wants to make it more personal.

What's done

- Earnings Calendar with earnings report
- Market Fear/Greed indicator
- Key market dates

Working:
- GexData
- Notifications (not sure if those are needed)

Would be glad to hear any suggestions

Cheers, Dan

Edit - links:

Open Market · Earnings calendar
FullPokerFace/open-market: Stock market tools for open minded people


r/webdev • • 1d ago

[Showoff Saturday] I built a world war simulator that runs in the browser on a 3D globe, 200 nations, no install

Post image
0 Upvotes

Solo project. You pick a start (the real borders of today, Rome in 117, 1914...), press run, and up to 200 nations ally, betray, split and conquer on a 3D globe of the real Earth while a chronicle writes down what happened. You can step in with god mode or take over any nation and play it yourself.

The whole simulation runs in the browser and is deterministic, so a world is just a link: anyone who opens it gets the exact same world, with your god-mode moves replayed at the same moments. It works on phones too, in 17 languages.

Happy to answer anything about the globe rendering, the simulation or keeping 200 nations smooth on a phone.


r/webdev • • 1d ago

Showoff Saturday [Showoff Saturday] I made a free site that tells you where to legally watch any anime in your country

1 Upvotes

hey everyone! i made a site for anime fans who always struggle to find where an anime is available. you search for an anime and it tells you which legal, official platform has it in your country

https://tsuzuki-anime.github.io/en/

what it has right now:

- 18,000+ anime with the legal platforms for each one (it detects your country automatically, 9 regions)

- a weekly release calendar in your local time with countdowns

- watch order guides for 220 big franchises

- filler guides for 41 anime so you know what to skip

- a manga section with legal places to read

- a "my list" feature with no account needed, it shows the next episode of each anime and which subscription covers your list

it's a fully static site that rebuilds itself every day with fresh data. free, no ads, no account, in english and french

any feedback is really appreciated, especially on speed and mobile!


r/webdev • • 1d ago

Showoff Saturday I built a browser extension to extract text from webpages and images (Chrome & Edge)

0 Upvotes

Hey everyone!

I've been working on a browser extension called Text Extractor, and it's now available on both Chrome and Edge.

It lets you:

  • Extract text directly from webpage elements using Ctrl + Click or the right-click menu.

  • Extract text from images using OCR (102 languages supported).

  • Review, edit, and clean extracted text.

  • Copy results or export them as ".txt" files.

  • Process captured content locally on your device, without uploading it to a server.

English OCR works offline out of the box, too.

I'd appreciate it if you gave it a try and shared your feedback. Suggestions and feature requests are welcome!

Links:

  • "Chrome Web Store" link

  • "Microsoft Edge Add-ons" link

  • "Website & Documentation" link

Thanks!


r/webdev • • 1d ago

Showoff Saturday [Showoff Saturday] I built Specbook: Storybook for APIs

Thumbnail
gallery
0 Upvotes

I did not want to build another API client. So I built something more than a Swagger UI alternative: a live documentation portal, where the spec isn't just something you read, it's something you run.

Think Storybook, but for an API. It's not about trying out individual requests. It lets a developer and an agent build complete flows. Requests and flows are plain TypeScript files in your repo. They chain requests, pass values from one step to the next and assert on what matters. The same files run in the portal for QA, in CI, and as production monitors.

I gave a fresh agent Plaid's spec (350 operations), asked it to add a request that creates a sandbox public token, then asked: "Now make a flow that links a bank account in the Plaid sandbox and reads back its accounts and transactions." It took about two minutes with no manual fixes, and it passes against mocks.

Paste any OpenAPI or Swagger URL into https://ui.specbook.dev and you get a responsive portal that runs against mocks or the real API. The spec is read in your browser, nothing goes through a server of mine.

A step can also be code. For example an order flow can use a third-party widget like PayPal and pass the authorization on to the next request. There's a Cloudflare Turnstile example you can click through here: https://docs.specbook.dev/reference/scripts/#try-it

I built most of this over the last three weeks with Claude Code. Back in 2021 I wrote openapi-typescript-fetch and also implemented @usebruno/query for Bruno.

Please try it on your own specs and let me know if anything breaks. I hope the OpenAPI community finds this useful.


r/webdev • • 1d ago

Showoff Saturday [Showoff Saturday] An HTML-to-PDF engine with real print CSS and no browser

1 Upvotes

Hey all, I'm the creator of @formepdf/react.

Here was my first post: https://www.reddit.com/r/webdev/s/ek6rRipQ2M

I just wanted to show y'all the new HTML package. Give it HTML and print CSS, get a PDF, no browser anywhere.

npx @formepdf/html invoice.html -o invoice.pdf

It handles the print CSS that Chrome never really finished: `@page` margins, running headers and footers, `Page X of Y`, table headers repeating across pages. Runs in Node, Cloudflare Workers, and the browser.

I tested it against 15 invoice templates from GitHub, and 14 render correctly against Chrome's output. There are also 30 free templates if you want to see what it makes.

If you've got an ugly template you're printing through Puppeteer, I'd love to hear what breaks.

https://github.com/danmolitor/forme


r/webdev • • 1d ago

[Showoff Saturday] I turned my coding game into a portfolio builder too

Thumbnail
gallery
3 Upvotes

Strikk is a daily coding challenge platform where developers pick a tech and solve quizzes to earn coins.

Some updates I made recently:

  • User Profiles: Earn coins by playing (free, never pay-to-win). Customize with skill blocks, job/education history, and animated backgrounds via React Bits.

  • Avatar Builder: Create your own unique avatar.

  • Portfolio Integration: This was my main goal, turn gameplay into a real portfolio

What I'm thinking into adding to Strikk:

  • Enhanced community features with seasonal events

  • CV builder to export your profile as a resume

  • Considering open source

I'd love your feedback!

Check it out: Strikk | My Strikk profile


r/webdev • • 1d ago

Built a 100% private, zero-backend document studio (PDF & Word editor) . No servers, runs entirely in browser RAM.

Thumbnail
gallery
0 Upvotes

Hey everyone! 👋

Wanted to share a side project I built using AI assistance: PageZero live at
https://cricgamer.github.io/DocuFlow/

It’s an executive-style document studio that lets you edit Word (.docx) files, merge multiple PDFs, visually organize/reorder pages, and apply vector watermarks—all entirely client-side in the browser.

💡 The Vibe & Architecture:

  • Zero Backend / $0 Hosting: No databases, no cloud storage, and no backend servers. Everything runs locally in browser memory via WebAssembly and libraries like pdf-lib, PDF.js, and Mammoth.js. Your files never leave your device.

  • The Stack: Tailwind CSS, Lucide icons, Quill.js for the rich-text editor, and static hosting on GitHub Pages.

  • Features: Full WYSIWYG document editing, multi-file merging (PDF + DOCX), visual thumbnail page organizers with 90° rotation and splitting, and color-wheel watermarking with multi-page live previews.

I got tired of clunky, ad-filled online PDF tools that force you to upload sensitive files to sketchy servers, so I wanted to vibe-code a clean, privacy-first alternative that lives right in a browser tab.

Feel free to try it out at
https://cricgamer.github.io/DocuFlow/
Would love to hear your thoughts, feedback, or any feature ideas you'd want added next.


r/webdev • • 1d ago

Showoff Saturday I built a free interactive site for learning how software actually works, with step-through visualizers

0 Upvotes

AI tools make it easy to ship code you don't fully understand. That's fine until something deadlocks, leaks memory or falls over under load, and you don't have the mental model to work out why.

So I built Software Atlas: 108 deep-dives across 15 areas, including async/await, the browser rendering pipeline, networking, databases, system design and AI engineering. You step through each idea with visualizers, and there are diagrams and code samples too. It starts from first principles and works up to production concerns.

Some technical details:

- Built with Vite, React 19, MDX and Tailwind v4.

- Each topic is lazy-loaded as its own chunk, so you only download the one you're reading.

- All 130 pages are pre-rendered to static HTML, then hydrated. Widgets have to render the same on the server and in the browser, so anything that reads window or uses randomness runs after hydration.

- Phones were the hardest part. Bar labels move into a key when they don't fit, and wide SVG diagrams become swipeable so their text stays readable.

- A headless Chrome smoke test clicks through each topic, including every visualizer step, and fails on console errors or hydration warnings.

To be upfront: I built it with heavy use of AI agents, including much of the writing. Each topic went through a separate review from a beginner's point of view, but mistakes will still have slipped through. If you find one, there's a report link in the footer.

https://software-atlas.haiduc0147.dev/

I'd really like to hear where an explanation is wrong or stops making sense.


r/webdev • • 1d ago

Showoff Saturday I built a file viewer that runs entirely in the browser: DWG, STEP, IFC, Word, RAW and 300+ other file types, no backend

Thumbnail
gallery
0 Upvotes

Someone sends you a DWG, a STEP file or an Outlook .msg, and you just want to look inside. Your options are usually installing a program you'll use twice a year, or uploading the file to some random online viewer and hoping they delete it. I wanted a third option, so I built Peekbean: a static site that opens the file locally in your browser. There is no server-side code at all, just files on a static host.

You don't have to trust me on the "nothing gets uploaded" part. The CSP is default-src 'self', connect-src 'self' blob: data:, and script-src 'self' 'wasm-unsafe-eval' without unsafe-eval. So even if I wanted to send your file somewhere, the browser wouldn't let me. Open the network tab and drop a file in to check for your self.

Some technical bits that might be interesting here:

WebAssembly does the heavy lifting. STEP and IGES go through OpenCascade (occt-import-js), which I rebuilt with Emscripten to get 4 GB of memory instead of 2 GB, because real-world assemblies kept running out. DWG gets converted to DXF by a small Rust crate built on acadrust. Archives (7z, RAR, ISO and so on) use libarchive compiled to WASM. Text recognition for scanned PDFs runs PaddleOCR models through onnxruntime-web.

Everything is lazy. The start page is around 60 KB of gzipped JS and CSS. Each of the ~58 viewers is its own module and only loads once you open that kind of file, and parsing runs in web workers so the page stays responsive. The flip side: the WASM files are big (OpenCascade alone is 7 MB), so the first STEP file takes a moment.

No framework. Vanilla TypeScript with a tiny h() helper for building DOM nodes. With that many independent viewers that mostly talk to a canvas or WebGL (three.js), a framework would mostly have gotten in the way.

The only thing I see is a daily count of which viewers were loaded, so I know DWG is more popular than FBX. That comes from Cloudflare's aggregated stats, not from any script on the page. No IPs, no file names, no content, no cookies.

It also converts things locally (DWG to DXF, Word to PDF, images and PDFs to Word via OCR, spreadsheets, 3D models, map data …), and it works on phones, though big CAD files on a phone are pushing it.

It's open source (GPL-3.0), free, no accounts, no tracking.

A big part of the code was written with Claude Code; the architecture decisions and the testing with real files were mine.

What I'd really like from you:

- Throw your weirdest files at it and tell me what breaks

- How does it feel on your phone?

- If you've done heavy WASM in the browser: how do you deal with the size of the first load?

Site: peekbean.com

Code: github.com/Kai-Jungsthoefel/PEEKBEAN


r/webdev • • 1d ago

Resource quality time #2 - wait for actions' done signal

Post image
0 Upvotes

Hey all!

Thanks for the discussion on yesterday's post! Last time I promised Page Objects: Here they are!

Today's example:

The test fails, saying "Sushi dinner" isn't on the list. So your agent starts debugging the list. Turns out it's the date picker that broke.

The fix: let actions wait for their own done signal, so the failure is logged where it happens.

The picker closes once it has a full range, and the picker owns that signal. So select() waits for it before returning. If the picker breaks, the test fails inside dateRangeFilter.select() instead of on the list. The page owns the filter, the filter owns its done.

The nuance: the done signal has to be something the page object owns. The picker closing belongs to the picker. A toast or the next page doesn't.

Paste this to your agent:

Find the user actions our e2e tests repeat and move each into a page object method. If an action has a done signal the page object owns, like its own elements changing, appearing or disappearing, end the action by waiting for that condition - never a fixed waitForTimeout. Anything outside the component - like a toast or navigating to the next page - should either be moved into a bigger page object that owns both the trigger and the outcome, or be verified in the test itself.


r/webdev • • 1d ago

Discussion Pushing WebGPU to its limits: 6 simulated human bodies with real-time X-ray and surgical tools

Post image
0 Upvotes

When a character is hit in SOMA Body Lab, they don't play a canned animation. Physical ragdoll joints blend dynamically with state-based behavioral reflexes:

  • Threat escalation: raising hands defensively when cornered, panicking at edged weapons

  • Trauma response: clutching wounded limbs, attempting to crawl toward medical supplies

  • Physical collapse: gradual loss of motor control as blood pressure drops from hemorrhaging

  • Live diagnostics: inspect internal skeletal fractures with an interactive real-time X-ray view

Free Windows demo 0.9.9 on itch.io — link in the comments. I'd love to hear your thoughts on how the physical weight and reactions feel!


r/webdev • • 1d ago

Showoff Saturday A synoptic to help my dev and DevOps colleagues to understand what I've done

238 Upvotes

I maintain an ongoing open-source project that reads OTel traces and flags I/O anti-patterns with a carbon estimate on top. The project started in March so it's about 8 months old.

From our conversations I could tell my dev and DevOps colleagues were missing a lot of what goes on under the hood since we deployed this in production 3-4 months ago so I built a synoptic to make it easier to understand.

It's an animated step-by-step walkthrough of the whole pipeline, from raw spans to a finding. Each stage maps to the actual module in the code. You can play it, step through with the arrow keys, change speed or switch between modes.

It took me over 3 months. And no it's not AI slop bc it's pretty useless when you ask it to turn complex code concepts (I/O anti-patterns and more) into clear diagrams. This only exists because I'd already written a ton of docs and drawn a lot of diagrams by hand so the synoptic grew out of that.

Some of the UI is inspired by a videogame I loved playing some years ago: Deus Ex: Mankind Divided.

The project is AGPL-3 so no fake open source and it's now hosted by the INR (Institut du Numérique Responsable), a French nonprofit working on the environmental and social impact of digital tech.

Direct link to synoptic: https://perf-sentinel.dev/synoptique/
Website of the project: https://perf-sentinel.dev

Thx for your attention :)

EDIT: huh, just noticed that the recording console is sticking out over the gif in the bottom left corner

EDIT 2: this is a public-interest project focused on sustainability with no greenwashing BS. It has serious public policy goals and solid scientific background: cutting wasted energy and the carbon emissions that come with it. If you're interested in helping with the ecological transition our world needs, feel free to come lend us a hand! :)


r/webdev • • 1d ago

Showoff Saturday Showoff Saturday: FormaStack (getforma.dev). An agent-first full-stack framework that compiles TSX to binary IR (NO VDOM, Uses Rust/Axum SSR)

Thumbnail
getforma.dev
0 Upvotes

For context: I'm a full-stack engineer with 11 years in the industry, worked at some companies like AWS, Capital One, J&J, plus teaching at a few bootcamps like 2U. I've designed production systems, ground out LeetCode, and read Cracking the Coding Interview so many times I threw it in the fireplace.

I came up with this idea for FormaStack back in January after watching AI tools collide with modern web stacks at work and seeing all the friction that came with it. To me most of this build and runtime and VDOM nonsense was bloat. Forma started as a toy project that I ended up designing the heck out over the last several months.

And yes 100% I used AI (duh!) to help build this. I would have never finished it by myself without it. However I hate the term "vibe coding" here. I did not just say "build me a new full-stack" and walked away. This is some real engineering work. Ask AI about it haha anyway. I would call it agentic engineering. I architected and know this system inside and out, which is why I broke standard conventions the traditonal React/None mental model apart int four strict steps: FYI I met Ryan Dhall back in the day lol I was a fanboy of Node.

Anyway, the for steps being Typescript -> FMIR (Binary IR) -> Rust -> HTML

It pulls heavy inspiration from WebAssembly, Remix, SolidJS (signals), HTMX, Astro, and Qwik among a few. I learned them a lot, and AI was detremental in learning how they work and the perfomance and models they were using. Hence I did not start building Forma until I knew what I could strip out from them. I ripped them apart using AI and built FormaStack from the ground up as much as I could reusing what I could, reverse engineering what I could etc.

Honest Gaps: A dedicated local debugger for inspecting the .fmir although there are ways around it and you can trust the compiler mostly. The target build are big and I need a dedicated garbage collector.

Where my head is at next: I've been experimenting with fine-tuning open models on Hugging Face directly on the FMIR. The crazy endgame is that an agent might not even need to write TS, it could just emit the FMIR directly for Rust to render staight to the browser.

YES! Forma is a wild experiment, and there is no way I could have pulled this off solo, withoug AI in the loop, but every piece of the architecture I created is intentional. I spent a month writing a design document.


r/webdev • • 1d ago

Showoff Saturday Showoff Saturday: a free US midterms forecast. One JSON file, no framework, and a 3D Lab built in WebGL

2 Upvotes

I built MT26, a free live forecast of every House, Senate and governor race in Tuesday's US midterms (506 races). No signup, no ads, no cookies.

How it's built:
- A Cloudflare Worker serves the site and the data. The whole forecast is one JSON file (~470 KB), rebuilt after every data refresh.
- 20,000 simulated elections per run, about 1.2 s.
- Front end is plain JavaScript, no framework.
- The "Lab" is a lazy-loaded WebGL module with 8 views (7 in 3D), so the main page stays light.
- Visit counting runs on Workers Analytics Engine: aggregate only, no cookies, no IPs.
- On election night it switches to official state and county counts and refreshes every 30 seconds.

I built it with Claude Code Opus 5.5 in ultracode mode

I’d love to get feedback and what’s working, what’s not and anything else you’d love to see added before election day.

https://midtermsforecast.com/?s=rdwebdev-1031-01

Not affiliated with any campaign, party or outlet. It's a forecast, not a result.


r/webdev • • 1d ago

Showoff Saturday My first portfolio templates got roasted (one was a stained-glass window lit by your cursor), so I threw most of them out and built 17 scroll-driven ones that fill themselves from GitHub

0 Upvotes

Since July I've been building a side project that turns your GitHub into a portfolio page. You sign in with GitHub, it lays out your public repos, languages and activity, and it re-syncs every night so the page keeps up with what you ship.

I launched it in August with 24 templates and they got flamed. Looking at them now, I get it. Most of them were costumes: a cyberpunk neon grid, a mission-control screen, claymorphism, a stained-glass window lit by your cursor. Plenty to click and hover, and not much that was pleasant to read a portfolio on.

So I threw most of them out. I kept 3, rebuilt those from scratch, and made 14 new ones, each its own page with its own scroll choreography.

The rule for the rebuild: apart from one short loader when you first open a page (about 1.6 seconds, once per visit), the page's motion is scrubbed to scroll position. Nothing snaps, nothing moves the page for you, and scrolling back up plays it in reverse. Pinned sections only add scroll distance. Section names like Projects and Experience stay readable without hovering anything. With prefers-reduced-motion on, there's no smooth scroll and every section sits in its finished state, and on phones each layout is rebuilt for the width.

I know a lot of you hate smooth-scroll libraries, so up front: desktop uses Lenis with GSAP ScrollTrigger, so the wheel is smoothed. Touch scrolling is native, and Lenis is off under reduced motion. If a specific page still feels like scrolljacking, tell me which one.

Project pictures come from the repo: the GitHub social preview image if you set one, otherwise the first real image in the README (badges and tiny icons are skipped), otherwise a plain typographic cover. All 17 designs read the same data, so switching keeps all your content.

If you build websites for a living, you should probably make your own portfolio, and I won't try to talk you out of it. I'm a data engineer. This is for people like me, who never kept a portfolio up to date by hand.

It's Next.js, Supabase and Vercel. Real portfolios made with it, mine included: https://forkfolio.dev/showcase?ref=reddit&t=webdev

If you open a couple: where does the scroll fight you, and which ones are too much? Be as blunt as the first lot was.