Synaplan
기업을 위한 오픈소스 AI 플랫폼
영국→EU 배송을 10가지 관세·운송 규칙으로 사전 검토하고, 오류 필드를 알려주며 실제 이용 가능한 운송업체를 추천합니다
Checks a UK to EU shipment against ten customs and freight rules before it leaves, names the field that is wrong, and recommends a carrier it can actually travel on.
비즈니스TypeScript · CSSGitHub @aaditaavashisht-creator온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Cross-border shipment booking and pre-flight error checker, UK to EU.
Sellers fill in long forms, and small mistakes mean goods held at customs or units reported missing at the receiving warehouse, discovered days later when the stock is already stuck. This catches those mistakes before the shipment leaves, names the field that is wrong, and recommends a carrier the shipment can actually travel on.
No login, no key, no quota, no database. Everything runs in the visitor's browser, which is why nothing in it can go down.
npm install
npm test # 165 unit tests over the engine
npm run dev # http://localhost:3000
npm run build # static export into out/
The app is a static export (next.config.js sets output: 'export'). It needs
no environment variables and no server.
npx vercel --prod
Vercel detects Next.js and serves out/ as static files. Any static host works
equally well: the whole app is the contents of out/.
lib/generated/ holds the UK Trade Tariff baked in at build time: 6,766 valid
six-digit subheadings and 8,272 official plain-English descriptions. Refresh it
with:
npm run tariff
That script is the only thing in this repo that touches the network, and it runs on a developer's machine, never in a browser. The generated files are committed, so a build needs no network and the shipped app makes no API call at all. R-01 can therefore tell a code that does not exist from one that is merely too short, and the rulebook stays a pure function of its arguments.
The subheading list ships in the first load because it is small. The 204 KB description vocabulary is loaded lazily after paint: it only widens the suggestions, and verdicts are identical with or without it.
Contains public sector information licensed under the Open Government Licence v3.0, from the UK Trade Tariff.
The rule engine is pure. Everything in lib/ is a function of its arguments:
no I/O, no network, no React, no model. The UI is a thin renderer over it.
lib/
types.ts Booking, Item, Issue, CarrierRow, Priority
carriers.ts the rate card (fixed data)
rules.ts validate(booking) -> Issue[] <- the heart
diagnose.ts culprit-field logic used by rules.ts
carrier.ts recommend(booking) -> Recommendation
readiness.ts five stages, and the check-run node list
parse-chat.ts extract(text) -> Partial<Booking>
parse-xlsx.ts header mapping + sheet join
sample-xlsx.ts writes the sample and corrected workbooks
fixtures.ts the five demo bookings
generated/ the UK Trade Tariff, baked in by scripts/fetch-tariff.mjs
format.ts gbp(), qty(), fmtDate(), parseDMY()
app/page.tsx the three-region shell
components/ Chat, Upload, Queue, Verdict, CheckRun, Readiness,
BookingCard, ItemsTable, Issues, Carrier, Confirmation
Three rules the code holds to:
Booking and run the same engine. There is no second path.| ID | Rule | Severity |
|---|---|---|
| R-01 | Every item needs an HS code of at least 6 digits | Red |
| R-02 | Declared value equals the sum of quantity x unit price, within 1% | Red |
| R-03 | Per item, units per carton x cartons equals quantity | Red |
| R-04 | Booking cartons equal the sum of item cartons | Red |
| R-05 | Gross weight divided by pallets is within a carrier ceiling | Red |
| R-06 | No lithium batteries, aerosols or flammable liquids | Red |
| R-07 | Gross weight covers the net weight of the goods | Amber |
| R-08 | Warehouse deliveries need a booked appointment | Amber |
| R-09 | Every item needs a country of origin | Amber |
| R-10 | Ready-to-ship date must not be in the past | Amber |
Detecting a mismatch is trivial. Naming the culprit field is the product, so each rule carries a diagnosis written as an instruction to a seller, a confidence, a consequence in days and pounds, and where it is safe, a one-click fix. Where there is no safe fix the card says so rather than guessing.
Costs are planning estimates from typical customs and freight charges, except where the shipment's own numbers give a real figure (a carton shortfall, a value gap), and the UI labels them as estimates.
One constraint drives the whole palette: red, amber and green carry the
rulebook's meaning, so the brand orange owns the header, the conversation rail
and primary buttons and never appears on a surface that reports a rule result.
Colours come from CSS custom properties on :root, redefined for dark mode, so
both themes are token-driven.