Files
cnx_vinyl/site/public/index.html
T
grabowski 7d6a47e6d0
Deploy test site / deploy (push) Successful in 51s
Order tool v2: step-by-step configurator after mobineko.com/order
User, 19 Oct 2026: build a new version of the order tool like
mobineko.com/order; it should also offer selectable mastering like
brandenburgmastering.com at 60 USD a track.

- New docs/order.html (site /demos/order/): 15-step rail, step panel,
  large live SVG record (colour per disc, translucent, split, splatter,
  marble, colour-in-colour; label, dead wax, jacket view), floating
  quote card with price, ship window and quantity; phone strip and
  bottom bar. Review lists what is missing, itemised quote with basis
  badges, deposit, lead time, ERPNext touchpoints on the simulated
  order. Disabled-not-hidden options with reasons.
- Mastering choice: none, in-house vinyl mastering (5,000 THB a side,
  default), or partner studio (Brandenburg Mastering, Amsterdam, example,
  not contracted) at 60 USD a track (team figure), replacing the in-house
  line.
- Same R list and quote() as artist-order: defaults reproduce 37,836 THB
  per title and the per-copy figures; new lines (repress stamper,
  colour effects, printed inner, finish, obi, bag, shipping) are
  estimates.
- artist-platform.md: the page and the mastering choice; README, landing
  page and site/build.sh entries.
- Checks: pw_order.py 96 checks (parity, partner mastering, 15 steps at
  1440/1024/768/390 dark and light, disabled force-clicks, render sizes
  and fills, uploads, audio readers, share link, place order).
2026-10-19 14:21:11 +07:00

174 lines
7.8 KiB
HTML

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="robots" content="noindex, nofollow">
<title>CNX Vinyl · internal test site</title>
<script>
(function(){var t=null;try{t=localStorage.getItem("cnx-theme")}catch(e){}
if(t!=="light"&&t!=="dark")t=window.matchMedia&&matchMedia("(prefers-color-scheme: light)").matches?"light":"dark";
document.documentElement.setAttribute("data-theme",t);})();
</script>
<style>
:root {
--bg: #0a0f1a; --panel: #0f1626; --stroke: #2a3a56;
--fg: #d6deeb; --mute: #8a97b0; --accent: #3ddc84;
}
:root { color-scheme: dark; }
html[data-theme=light] {
color-scheme: light;
--bg: #f4f6fa; --panel: #ffffff; --stroke: #cfd8e6;
--fg: #1b2533; --mute: #5b6880; --accent: #0e8f4f;
}
main { position: relative; }
.themebtn {
position: absolute; top: 48px; right: 20px; background: var(--panel); color: var(--fg);
border: 1px solid var(--stroke); border-radius: 5px; padding: 6px 12px; font: inherit; font-size: 14px; cursor: pointer;
}
.themebtn:hover { border-color: var(--accent); }
* { box-sizing: border-box; }
body {
margin: 0; background: var(--bg); color: var(--fg);
font: 16px/1.5 system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
}
main { max-width: 760px; margin: 0 auto; padding: 48px 20px; }
h1 { margin: 0; font-size: 28px; letter-spacing: 0.02em; }
.tag {
display: inline-block; margin-top: 6px; padding: 2px 8px;
border: 1px solid var(--stroke); border-radius: 4px;
color: var(--mute); font-size: 13px;
}
p.lead { color: var(--mute); margin: 18px 0 32px; }
h2 {
font-size: 13px; text-transform: uppercase; letter-spacing: 0.08em;
color: var(--mute); margin: 32px 0 12px;
}
ul { list-style: none; margin: 0; padding: 0; }
li a {
display: block; padding: 14px 16px; margin-bottom: 10px;
background: var(--panel); border: 1px solid var(--stroke); border-radius: 6px;
color: var(--fg); text-decoration: none;
}
li a:hover, li a:focus-visible { border-color: var(--accent); }
li strong { display: block; color: var(--accent); font-weight: 600; }
li span { color: var(--mute); font-size: 14px; }
footer { margin-top: 40px; color: var(--mute); font-size: 13px; }
</style>
</head>
<body>
<main>
<button class="themebtn" id="themeBtn" type="button">Light mode</button>
<h1>CNX Vinyl</h1>
<span class="tag">internal test site</span>
<p class="lead">
Demos and static pages from the CNX Vinyl planning repository, a vinyl
pressing plant planned near Chiang Mai. Shared by link only and not
indexed. Figures in the demos are planning estimates.
</p>
<h2>Demos</h2>
<ul>
<li>
<a href="demos/plant-operation/">
<strong>Plant overview (simulated SCADA)</strong>
<span>The launch plant animated at real cycle times: one Newbilt
Duplex system and one Classic press, Pheenix Alpha electroforming and
Sibert stamper prep, from PVC intake and the material lab through pressing,
inspection, packaging and fulfillment, with the artist gates,
utilities and energy alongside. Real time up to a day in 24 s;
every station is clickable; on a phone, turn it sideways and pinch
to zoom.</span>
</a>
</li>
<li>
<a href="demos/fleet-calculator/">
<strong>Plant and business plan calculator</strong>
<span>Set the records a year and configure the plant: presses,
galvanics in-house or bought stampers, cutting in-house or
outsourced, metrology, solar, steam fuel and more. It builds the
investment from the launch-plant blocks, checks it against the
investor's 180M and 216M THB, runs the money a year and a ten-year
cash sketch, and lists what the plant needs, from the launch plant
to a fully equipped press hall. Every assumption is editable and a
scenario can be shared by link.</span>
</a>
</li>
<li>
<a href="demos/steam-cooling/">
<strong>Steam and cooling plant</strong>
<span>The utilities for the launch plant (one Duplex system and one
Classic on two boiler and two chiller modules, rooms built for four)
as a clickable process diagram: boiler bank, steam header and
condensate return, chiller bank, plate heat exchanger and a branch to
every press position. Switch between the launch plant, the Duplex
commissioned first, the second Duplex growth option and one module
down to see demand against installed capacity.</span>
</a>
</li>
<li>
<a href="demos/make-a-record/">
<strong>Make a record (investor demo)</strong>
<span>The artist platform as a customer sees it: design a record
against a to-scale mock-up, check the music and artwork, see one
clear price, let fans fund the pressing, follow production through
the artist approvals and open the record passport of one delivered
copy. Switch on investor notes for the business case behind each
step, or press Tour for a one-minute walk-through. Prices in THB,
USD or EUR; English or Thai.</span>
</a>
</li>
<li>
<a href="demos/factory/">
<strong>Factory console and order status (investor demo)</strong>
<span>The factory application on a simulated plant day: a Newbilt
Duplex system and a Classic with live counters, work orders for
every station, every record through optical
inspection, audio samples, the material lab gate, stamper
metrology and the hash-chained event log. Switch to the customer
portal to follow the same orders: steps and approvals, copies
pressed so far, lab and inspection results. Simulated data.</span>
</a>
</li>
<li>
<a href="demos/order/">
<strong>Order a record (step by step)</strong>
<span>The order tool as a step-by-step configurator: size, discs,
vinyl colour and effects, labels, sleeves, jacket and finish,
extras, mastering and cutting, test pressings, shipping, track list
and artwork, each step with its choices, beside a large live picture
of the record that changes with every choice and a running price and
ship date. Ends in a review that lists what is still missing and the
itemised quote. Indicative demo prices; nothing is uploaded or
sent.</span>
</a>
</li>
<li>
<a href="demos/artist-order/">
<strong>Artist ordering and fan funding</strong>
<span>Configure a record, type the track list or drop the master
files and artwork (checked in the browser, nothing is uploaded), get
an itemised offer with the price per copy against quantity and the
lead time, then order directly or run a fan-funded campaign to a
funded or missed end and follow the production through the artist
approvals. Indicative demo prices.</span>
</a>
</li>
</ul>
<footer>Built from <code>site/</code> in the cnx_vinyl repository.</footer>
</main>
<script>
(function(){
var b=document.getElementById("themeBtn"),de=document.documentElement;
function set(t,save){de.setAttribute("data-theme",t);if(save){try{localStorage.setItem("cnx-theme",t)}catch(e){}}
b.textContent=t==="light"?"☾ Dark mode":"☀ Light mode";b.title="Switch to "+(t==="light"?"dark":"light")+" mode";}
set(de.getAttribute("data-theme")||"dark",false);
b.addEventListener("click",function(){set(de.getAttribute("data-theme")==="light"?"dark":"light",true);b.blur();});
var mq=window.matchMedia&&matchMedia("(prefers-color-scheme: light)");
if(mq&&mq.addEventListener)mq.addEventListener("change",function(e){var s=null;try{s=localStorage.getItem("cnx-theme")}catch(_){}if(!s)set(e.matches?"light":"dark",false);});
})();
</script>
</body>
</html>