You are browsing as a guest. Sign up (or log in) to start making projects!

PartSourcer

  • 4 Devlogs
  • 29 Total hours

Find the cheapest in-stock part for your PCB in one search. Search any electronic component and get its stock, price, footprint and datasheet in one place.

Ship #1

PartSourcer

Find the cheapest in-stock part for your PCB in one search.

Live at “part-sourcer.vercel.app”

Search any electronic component and get its stock, price, footprint and datasheet in one place. Every number is stamped with the moment it was read, so you always know how new it is.

The useful bit: for a part you searched, it looks for one cheaper drop-in that is actually in stock, and tells you why it counts as a match. Same package, matching specs, real stock, and both prices re-read the same way before any saving gets claimed. If it cannot find a genuine match, it elaborates so.

Right now that works for resistors and capacitors. Everything else gets an “no match found”. (Perhaps later implementation)

Rules it sticks to:

  • No made-up stock or prices. If the data is stale, you get an error, not a number pretending to be fresh.
  • A part with no published price says “no price”, never $0.00. A zero would read as free and win every comparison.
  • Missing fields are left out rather than filled with a placeholder.

Built with FastAPI and React, both on Vercel, with Postgres behind the price history. Part data comes from Mouser in real time, plus an open snapshot of the LCSC catalogue that refreshes about once a day. There is a DigiKey adapter too, and it switches on once credentials are set.

Free, open source, no login, no paywall. MIT licensed.

  • 4 devlogs
  • 29h
  • 18.84x multiplier
  • 515 Stardust
Try project → See source code →
Open comments for this post

1h 0m 50s logged

Dev log #5??

Ran a 20-item polish checklist over the site. Ten things were already fine: links all work, buttons all do something, the 404 page is real, errors show up properly.

Six items from the checklist were missing, so I built them.

Fixed the page titles. Every page was showing the same title because nothing reloads in a single-page app. Now a part page names the part, a search names what you searched.

Put a year in the footer, read live so it never goes stale. Dropped the “404 demo” link, that was a leftover dev thing sitting next to real links.

Then two actual bugs I only found by measuring in a browser at phone size. The home page really was scrolling sideways: a card grid was asking for 400px inside a 319px space. About had the same thing at 340px. Fixed both.

The header was the other one. It needed 390px of room for the logo and five links on a 375px phone. It had been wrapping onto three rows and leaving Contact stranded alone. Now the links tuck behind a menu button below 640px. Header went from 281px tall to 69px.

Last thing: the pages were too narrow and floated in empty space. Widened them a lot, 1600px for the main shell and 1400px for the text pages. Width alone would’ve just made long ugly lines, so the card grids reshaped too. FAQ goes two across, the three how-it-works steps share a row, the four-card grids go four across and step down cleanly.

Plus a few more minor changes, The project is built enough to be shipped!

0
0
11
Open comments for this post

7h 3m 2s logged

Dev log #3 or #4??

After the site went multi-distributor, I kept going.

I added a contact page with my email, Instagram and GitHub, dropped GitHub out of the header, gave the footer real columns with links that work, moved the data source note over to the About page and wrote more there. The front page got more to read too, and the About cards now sit in a clean 2x2 grid.

Then I did a proper security pass. I added a middleware that stamps security headers on every API response, including CSP, frame options and HSTS. Wrote a rate limiter that reads the client IP from headers the platform actually writes, never the one a caller can fake, and capped its key table so the limiter itself cannot be turned into the attack. Added input caps: query at 200 characters, page at 50, part key at 128, all refused early so nobody can burn my distributor quota. Added a body size ceiling and tightened CORS.

The static site got its own CSP through vercel.json, checked against the real built bundle.

I also wrote guard tests: they fail if a stray .env gets committed, if a credential literal shows up in source, if SQL starts joining values instead of using placeholders, or if a Set-Cookie ever appears. Then I documented the whole posture in the backend README, including what I deliberately left out and why.

0
0
14
Open comments for this post

11h 28m 32s logged

PartSourcer devlog #2

Started with a simple annoyance: finding a part that is actually in stock means opening six distributor tabs per line of a BOM. Wrote a throwaway script to poke at the free jlcsearch API and see what the data really looked like. Turned out it has no brand and no datasheet. Decided early to show that as blank rather than show wrong results.

Also built the backend. FastAPI, a swappable data source so the real LCSC API can drop in later.

Also tweaked the frontend a bit. React, inline styles, a loud yellow-and-black look. Then deploy configs, and the site went live on Render.

Implemented a price history recorder, so the data is there later even if nothing reads it yet.

The big addition. The site finally became multi-distributor: Mouser and DigiKey alongside LCSC. Every part now carries a list of offers, one per distributor, and a per-source status so a partial failure shows as a partial answer rather than an error.

0
0
10
Open comments for this post

9h 16m 14s logged

I’ve been working on a personal project called PartSourcer. Essentially, it’s a database, a bit beautified, but a database nevertheless, that scours the internet for major electronic component distributors in bulk, such as Mouser, DigiKey, JLCPCB, and LCSC. It goes through all of these major component databases, fetching real-time data from API keys I generated myself, and outputs the components and their prices.

So far, I have the frontend and most of the backend done. The next step is to actually implement the Mouser and DigiKey API keys. I have the Mouser one ready; DigiKey is a bit more confusing to get, but I will get it. I already have the LCSC and JLCPCB integration working for each component, showing real-time stock and unit prices per item.

I’m going to keep a very early version of the project open source under the MIT license. Later on, I plan to remove the MIT license and host it on the internet for free, but it won’t remain open source. Only that very early version will stay under the MIT license.

Moving forward, my roadmap for the project includes:

  1. Completing the actual API implementations.
  2. Implementing a side-by-side comparison tool.
  3. Adding a large-scale, bulk BOM (bill of materials) upload feature.
  4. Creating a price history chart.
  5. Implementing a “browse by category” feature.
  6. Adding a “biggest savings this week” section to show people where the best deals are and what they can save money on.
0
0
7

Delete project?

Are you sure you want to permanently delete this project? This action cannot be undone.

All devlogs, followers, and associated data will be removed.

Followers

Loading…