Admin Access
Incorrect password. Please try again.
cycleWASHADMINMade in Germany

cycleWASH® Admin

CRM · Leads, pipeline & outreach
O2C · CRM

Leads & Pipeline

Every lead, opportunity and customer in one place — unified inbox, visual pipeline, Gmail and lead scrapers.

🚀 Setup status

One-time configuration to unlock Gmail, AI drafting and lead scrapers. Everything below already works with what's available.

OutreachPro · Executive view

Pipeline at a glance

Revenue
€0
paid invoices · 0
Open pipeline
€0
active offers · 0
Conversion
offer → invoice
Avg cycle
offer → paid · days
Campaign emails
0
sent · 0 campaigns
Replies
0
reply rate —

Funnel · Suspect → Customer

Source attribution

OutreachPro · Inbox

Gmail integration

Send docs as email · search threads per customer · auto-log every send and receive on the customer timeline. Uses the OAuth + send/history library ported from op-v2.

Not connected
Setup needed (one-time):
  1. In Google Cloud Console → new project → enable Gmail API.
  2. Create OAuth 2.0 client → application type Web.
  3. Add authorised redirect URI: https://cw-contact-spam-guard.vvlars.workers.dev/proxy/gmail/callback
  4. Copy the Client ID + Client Secret, paste them as worker secrets — locally run:
    cd cyclewash-theme-v3/scripts
    wrangler secret put GMAIL_CLIENT_ID
    wrangler secret put GMAIL_CLIENT_SECRET
  5. Then click Connect Gmail above. Popup opens, you approve, done.

Send via Gmail

Sent from your connected Gmail account (). The doc number is auto-included as a reference at the bottom.
ERP / Leads · Unified pipeline

One desk for every lead.

Master CSV (quoted customers, distributors, warm inbound) merged with the Exact Online snapshot and OutreachPro captures, deduped by email and sorted warm-first. NDA 3D unlocks stream in from the access log.

Unified leads
Quoted customers
Distributors
Warm inbound
NDA unlocks
Pipeline value
NameCompanyEmailCountryTierSourceStage
Activate this tab to load the unified lead list.

NDA 3D Leads

Verified OTP unlocks from the 3D configurator NDA gate — the warmest signal we get. Loads from the worker audit log (admin key required, stored locally).

Finance

Order revenue & invoice roll-up.

Dataset built offline by scripts/build-leads-unified.cjs — re-run it and push the asset to refresh. Row click or Enter expands the full record.

Lead scrapers

Pull prospects from any website. API keys stay in your browser — never sent to Shopify.

3 adapters · live

Get a key at scrapegraphai.com. Stored only in this browser.

Get a token in Apify Console → Integrations. Stored only in this browser.

Browse the full store at apify.com/store. Actor IDs use the username~actor-name format.

Preview the generated AI prompt Preview the generated Apify actor input

    

Extracted leads

No runs yet.

Nothing scraped yet. Configure an API key on the left, paste a URL and a prompt, then click Run.
OutreachPro · Outbound Engine

Email Campaigns

Compose with Gemini · send via Gmail in throttled batches · stats land in the dashboard above. Audience comes from any combination of Apify, ScrapeGraph, Gmail crawler, pipeline cards, or pasted email lists.

0Campaigns
0Emails sent
0Replies
📣

No campaigns yet

Launch your first outbound campaign — pick a lead source, draft a template with Gemini, send in batches via Gmail.

New Campaign

Step 1 of 4 · Pick audience

Pick where your recipients come from. You can combine multiple sources.

0 recipients matched.
Platform · IoT & Backend

SPIRIT — Digital Ecosystem

Hardware + Software + Coin Economy · 56+ App Routes · 24 Revenue Features · 8 Languages

56+
App Routes
24
Revenue Features
3
Portals
8
Languages
$89M
FY5 Target

Four Integrated Platforms

v3 Architecture
🛍️
Shopify Website
19 pages · 8 languages · SEO optimized · Bauhaus Industrial design
SPIRIT Web App
56+ routes · 3 portals · Real-time analytics · $CYCLE coin
📱
Mobile Apps
iOS + Android · Capacitor PWA · Push notifs · Camera QR scan
🤖
Walter IoT
ESP32-S3 · MQTT over TLS · PLC pulse control · OTA updates

End-to-End Architecture Flow

Live
CUSTOMER
Register → Scan QR → Pay $CYCLE → Wash → Earn Tokens
OPERATOR
Dashboard → Fleet Mgmt → Revenue Analytics → Token Admin
TECHNICIAN
Diagnostics → Live Sensors → Service Tickets → Firmware
TRANSPORT LAYER
MQTT pub/sub · Stripe + $CYCLE · JWT Auth · Vercel + Shopify

3 Portals — Route Breakdown

📊 Operator Dashboard 21 pages
Fleet Overview · Machine Detail · Payments · Revenue Analytics · Customer Analytics · AI Scanner · Predictive Maint. · Demand Forecasting · Climate Tech · QR Generator · Dynamic Pricing · Social Media Hub · B2B Partners · Lead CRM · City Intelligence · White Label · API Marketplace · $CYCLE Coin Econ.
📱 Customer App 23 pages
Home · QR Scanner · Wash Flow · Subscriptions · Bike Health · $CYCLE Wallet · Referrals · Token Store · Pay-Per-Minute · Insurance · Strava Connect · Social Receipts · Group Wash · Weather & Wash · Marketplace · Repair Booking · E-Bike Charging · First Wash Free
🔧 Technician Portal 6 pages
Ticket Management · Live Diagnostics · Sensor Telemetry · Firmware Updates · Service History · Remote Commands

Walter ESP32-S3 — IoT Firmware

Hardware Bridge
GPIO Configuration
GPIO 4 — PLC Pulse Output
GPIO 5 — Door Sensor
GPIO 18 — WS2812 LED Strip
GPIO 21 — Water Flow Sensor
GPIO 22 — Emergency Stop
MQTT Commands
START_WASH {type, duration}
STOP_WASH {reason}
TEST_PULSE {count}
STATUS {}
REBOOT {delay}
SET_MODE {mode}
Default: Mini 3min · Pro 5min · 5 pulses/cycle · 30s heartbeat · WiFi auto-reconnect · OTA updates

Technology Stack

⚛️
Frontend
Next.js 14 · Tailwind CSS · Framer Motion · React Server Components
🔌
Backend
Next.js API Routes · Stripe SDK · $CYCLE Coin Engine · JWT Auth
📡
IoT Layer
ESP32-S3 · MQTT over TLS · PLC Pulse Control · WS2812 LED
🌐
Website
Shopify 2.0 Liquid · Bauhaus Theme · 8-lang i18n · SEO + Schema
🪙
Coin Economy
$CYCLE ERC-20 · Stripe Fiat On-ramp · Cashback Engine · Burn Controls
☁️
Hosting
Vercel (SPIRIT App) · Shopify (Website) · HiveMQ (MQTT) · GitHub CI/CD

Product Roadmap

Q2 2026
SPIRIT App v1 · Walter firmware v1 · Stripe payments live · 10 pilot stations · $CYCLE testnet
Q3 2026
iOS + Android apps · AI Scanner beta · Corporate programs · 50 stations · Token mainnet
Q4 2026
Predictive maintenance · White-label platform · API marketplace · 150 stations · Strava integration
2027
City Intelligence · Full franchise model · 500+ stations · International expansion · Series A funding
SPIRIT · ONLINE

SPIRIT Operator Dashboard

Fleet analytics, machine health, customer data. Each view opens at the correct viewport size — Shopify blocks iframing storefront pages, so we use popups.

https://cyclewash.com/zh/pages/spirit-dashboard

SPIRIT Backend — Docker Setup

Self-Hosted

Full-stack SPIRIT platform: API (Node.js + Prisma + PostgreSQL), web dashboard (React + Vite), MQTT broker, Redis cache.

git clone https://github.com/vvlars-cmd/cyclewash-spirit-platform.git && cd cyclewash-spirit-platform

Copy environment and start:

cp .env.example .env && docker compose up -d --build

Seed database (first time):

docker compose run --rm api npm run db:migrate && docker compose run --rm api npm run db:seed

Default credentials: admin@cyclewash.io / Admin123! · API: localhost:3001 · Dashboard: localhost:3000

Confidential · Series A

cycleWASH® — Investor Proposal

The World's First Automated Bicycle Washing Machine · Series A — €3M · March 2026

cycleWASH® Investor Deck v2

Confidential

Series A · €3M · 40% manufacturing · 25% SPIRIT platform · 20% sales · 15% operations

💼 View Full Deck
31+
Patents
250+
Machines Deployed
19
Countries
1M+
Bikes Washed
150M L
Water Saved

Product Lineup — Three Lines for Every Use Case

🚲 €5,990
cycleWASH® Mini
Euro-pallet footprint · Self-service kiosk · Solar option · Perfect for bike shops, campuses, residential
⚙️ €13,990
cycleWASH® Pro
Full-size automated wash · Hybrid brushes · Integrated drying · Connected diagnostics · High-throughput
🏙️ Custom
cycleWASH® OASIS
Complete bike service station · Wash + repair + charging + vending · For cities and transit hubs

Technology & IP — 36 Patents · 7-Year Head Start

🔬
Hybrid Brush System
Patented dual-brush adapts pressure for carbon frames, e-bikes, fat tires
💧
3 L Per Wash
Closed-loop recycling. Up to 80% less water than manual washing
🤖
Walter IoT
ESP32-S3 · 12 sensors · MQTT telemetry · OTA · Predictive maintenance
DEKRA Certified
Only certified automated bike wash worldwide for unattended public operation
☀️
Solar Ready
Mini stations run 100% solar-powered. Zero grid dependency
💨
Gentle Dry System
Integrated blower drying protects bearings and electronics. No water spots

Revenue Projections — Path to €10M ARR by 2028

€0.8M
2024
€1.2M
2025
€2.5M
2026E
€5.5M
2027E
€10M
2028E
Assumptions: 40% hardware margin · 80% SaaS margin · 500 new units/yr by 2028 · €99 avg SaaS ARPU

Series A — €3M Use of Funds

Open Round
40%
Manufacturing Scale-up
Expand production to 500 units/year
25%
SPIRIT Platform
Payment integration, AI features, mobile apps
20%
Sales & Marketing
EU expansion, trade shows, channel partners
15%
Operations & Team
Key hires in engineering and business dev

What Investors Get

Equity in the only certified automated bike wash company
36 patents providing 7-year competitive moat
250+ machines already generating recurring revenue
58-route digital platform ready for scale
$CYCLE coin economy creating network effects
€10M ARR target by 2028
Path to €50M+ exit via strategic acquisition
ESG-aligned investment (UN SDG 11
12
13)

Go-to-Market — Land & Expand Across 4 Segments

🏪
Bike Shops & Dealers
50K+ in Europe · Direct sales + demo program · Dealers become wash operators
🏙️
Cities & Transit
1,000+ cities · Municipal procurement · Bike-sharing fleet integration
🏢
Corporate Campuses
Fortune 500 · Employee bike programs · ESG reporting · Bulk fleet orders
🏨
Hospitality & Tourism
Hotels, Camping · Guest amenity upsell · OASIS installations at resorts

Let's Clean Up the Cycling World

Contact Sachin Kumar — CEO & Founder · CW Cleaning Solutions GmbH · Cologne, Germany

📧 sachin.kumar@cyclewash.de  ·  🌐 cyclewash.com
📬 Contact IR Team
LIVE INVESTOR PAGE

Open the investor page

See exactly what investors see. Shopify blocks iframing storefront pages via X-Frame-Options: DENY, so we open in a popup or new tab instead.

https://cyclewash.com/zh/pages/investors
↗ Open in new tab
Why popup instead of iframe? Shopify sets X-Frame-Options: DENY on every storefront page to prevent clickjacking. That's an HTTP header — no theme setting can override it. Popups simulate the viewport size exactly as investors would see it.
Live · IP Portfolio Tracker

Patent & trademark dashboard

Live mirror of Übersicht aller Schutzrechte. Filings grouped by family, annotated with fee due dates and renewal deadlines. Click a family card to expand or collapse its register entries.

Family
Status
Reading the dashboard. Fee due in < 90 days Fee due in < 180 days Fee due later Renewal / maintenance
Source: assets/cyclewash-ip-tracker.json — regenerated when the Übersicht aller Schutzrechte XLSX changes. To refresh, replace the XLSX and run scripts/build-ip-tracker-json.py.
Internal · AI Authoring

Content Generator

SEO- and AEO-optimised blog drafts, social captions and press copy for cycleWASH. Send to the blog-agent backlog and the next Mon/Thu run picks them up automatically.

New draft

Output

Nothing generated yet. Pick a content type, topic, audience and language on the left, then hit Generate Draft.
SEO metadata appears here. Title tag, meta description, slug, primary keyword and OpenGraph tags — one click to copy.
AEO JSON-LD appears here. Article + FAQPage schema, ready to paste between <script type="application/ld+json"> tags.
Social variants appear here. LinkedIn, Instagram, Facebook, TikTok — channel-fit length and tone.
Content · Blog

cycleWASH Journal

20 published articles. Read the live blog, or write & edit posts in Shopify's article editor — new drafts and edits publish straight to the storefront blog.

Journal Editor

Write and save drafts to Shopify — all from the admin. Drafts autosave to this browser.

Shopify editor ↗ Idle

Create

Publish to

Long-form writing saved as a draft in /blogs/news/.

Articles

View journal →
  • Loading…

Edit loads an entry into the form below. Save draft keeps it in this browser. Save draft to Shopify sends it as a draft (not yet published) via the Shopify Admin API.

Write a new article

Editing a new draft

Body

Site Background

Animated background shown behind page content. Applies in this browser across the whole site.

Brand & Visual System · v1 · June 2026

The cycleWASH visual system.

The canonical reference for anyone extending cycleWASH — designer, developer or partner studio. The language is Liquid Precision: German engineering clarity fused with the energy of water in motion. Precision is the aesthetic; restraint is the system.

01

Colour

Four named colours. Use the named tokens — never hard-code new hex values. The brand is light by default; Mist White is the daylight home, Midnight Ink is reserved for the 3D theatre and hero stages.

#1E82C8
Glacier Blue
PRIMARY
Interactive elements and focal points. Engineering trust, water, precision. Links, primary buttons, data accents.
#FFC300
Signal Gold
SECONDARY
The spark. CTA highlights and key signals only — the one action that matters per view. Never decoration.
#F0F4F8
Mist White
TERTIARY
The light — reading surfaces, product pages, sustained content. Bands alternate Mist ↔ pure white.
#1A1A2E
Midnight Ink
NEUTRAL
Typography and the dark stage. The 3D theatre, NDA posters and hero stages live one step deeper: #0B0F14.
Guardrail. Signal Gold is reserved for interaction and the single most important signal — never decoration. Don't add a fifth named colour. Depth comes from tonal layers (stepping Mist→Ink), not drop shadows; if a shadow is unavoidable, make it very large and ultra-soft.
02

Typography

Two families plus one editorial voice. Outfit carries the brand; Inter keeps it legible; Playfair Display speaks only in the Journal.

OUTFIT · DISPLAY & HEADLINES · 700–800tracking −0.02em
Engineered to keep
every bike rolling.
INTER · BODY, LABELS & UI · 400–700system fallback

Sentences are short and weighted. We name things by what they do — wash, dry, protect, recirculate — and we prove claims with numbers: 99% water recycled, 3 minutes per bike, 36 patent filings. Eyebrow labels are uppercase with .18em tracking.

Display 52H1 44H2 30H3 20Body large 16Body 14Eyebrow 11 · caps
PLAYFAIR DISPLAY · JOURNAL ONLY · 700editorial accent
Stories from the wash bay.

The serif appears exclusively in Journal heroes and headlines — the one place the brand slows down. Never in UI, never on product pages.

03

Logo & mark

The official 2016 mark: a water droplet carrying the rotating gold wash-cycle arrow. The wordmark pairs gold lowercase “cycle” with blue “WASH”.

cycleWASH official logo
  • Construction — Glacier Blue droplet outline (the water) around a Signal Gold rotating arrow (the wash cycle) with a blue hub. Wordmark: cycle in gold lowercase, WASH in blue caps.
  • Clearspace — one droplet-width on all sides; never crowd the mark.
  • Backgrounds — designed for white/light surfaces; on midnight, place it on a white chip. Never recolour, outline or rotate.
  • Source files — Dataroom › E. Marketing › cycleWASH Logo Datensatz 2016-04 (EPS/PDF, CMYK + RGB); web SVG ships with the theme.
04

Layout & depth

  • 8 px base unit; container max-width 1240 px, centred, 24 px side padding.
  • Section rhythm: 88 px band padding desktop / 56 px mobile; bands alternate Mist ↔ white ↔ midnight.
  • Cards: radius 16–20 px; buttons and inputs 10 px; pills 100 px.
  • Weight content toward the centre — negative space is engineering, not emptiness.
  • Depth = tonal layers; shadows only as 0 20px 48px -28px rgba(13,17,23,.45).
  • Hairlines: 1 px rgba-blue on light, #2E3140 on dark.
  • The 3D theatre is always full-bleed midnight with a single gold or blue accent.
  • Performance is part of the design: lazy-load below fold, content-visibility on long pages.
05

Motion

Water is the only thing allowed to move freely. Everything else moves like machinery — precise, damped, once.

  • Reveals: translateY 14 px → 0, .6 s ease-out, stagger 80 ms, play once.
  • Hovers: −2 px Y over 200 ms; buttons may deepen one ramp step.
  • 3D turntable: continuous, slow (≈12 s/rev), pointer-interruptible.
  • Bubbles & water effects: brand-coloured (blue/gold), physical, never looping ads.
  • No bounce, no parallax scroll-jacking. The brand does not jump.
  • Respect prefers-reduced-motion — reveals become fades.
06

Application

How the system behaves — light where functional, midnight where the machines perform.

LIGHT SURFACE
Mist White
Product pages & sustained reading. The brand's daylight home.
DARK SURFACE
Midnight Ink
3D theatre, hero stages, NDA posters. Where machines perform.
ACCENT
Primary Gold CTA
Glacier Blue interactive · Signal Gold for the one action that matters.
07

Reference sheet

The one-page palette & style sheet — drop it into decks, briefs and partner handoffs.

cycleWASH palette and style reference sheet
Download palette (SVG)
cycleWASH® — Bicycle washing systems. Made in Germany. Liquid Precision · pair with the Palette & Style Reference
Handbook · How this admin works

Every tab, in plain language.

This is the manual for the cycleWASH admin panel. One block per tab: what it is for, what you can actually do in it, and what to watch out for. Open a block by clicking its title. If you only read one thing, read Getting started and Where your data lives.

🚀Getting startedunlock, navigate, dark mode

Unlocking. The panel opens on an Admin Access card. Type the admin password and press Unlock Admin Area → (or just hit Enter). The eye icon next to the field shows what you typed. A wrong password shakes the card and clears the field — there is no lockout, just try again.

Session. You stay unlocked while you are working. After 5 minutes with no clicking, typing or scrolling the password card comes back. Anything that reloads the page (for example ImagePipe's Publish button) can also bring it back.

Navigating. The tabs run across the top: CRM, Documents, Deal Simulator, Finance, Automation, Content, ImagePipe, SPIRIT, Investors, Patents, Brand, Help, Keys. The left sidebar shows the same tabs grouped into three apps — cycleERP (O2C: CRM, Documents, Deal Simulator, plus Automation), Studio (Content Generator, ImagePipe) and More (SPIRIT, Investors, Gallery Manager, Patents, Brand). Top tabs and sidebar links do the same thing; use whichever you prefer.

Dark mode is the default across the whole site, admin included. The Brand tab also has a background-effect switch (Lava / Bubbles / Off) that applies to your browser everywhere on the site.

Leaving. ← Back to site in the top bar or the sidebar returns you to the storefront. Sign out shows the password card again.

Note. The password is checked in the browser, not on a server. Treat the admin page URL and the password as internal information — do not share the link with the password.
🗄️Where your data livesShopify, the Mac app, your browser
  1. Shopify is the single source of truth. Leads, quotes, invoices and closed accounting periods are stored on the shop as metaobjects (cw_lead, cw_quote, cw_invoice, cw_ledger_period), and this admin reads and writes them through the cyclewash-admin-proxy worker. Orders and customers stay native Shopify records — nothing is duplicated.
  2. The local cycleERP app on the Mac does the heavy work. It lives in ~/cycleERP (Docker, web UI on http://localhost:8765) and owns the raw ledger, the BWA / period close, the DATEV export and the bulk outreach sending; it pushes only the computed summaries up to Shopify. DATEV and tax data never leave the Mac.
  3. Your API keys stay in your browser. Gemini, fal.ai, ScrapeGraph, Apify and the Gmail connection are stored in this browser only — never in Shopify, never in the theme. A new laptop, a different browser or clearing your browsing data means entering them again.
  4. Drafts are not published. Everything the Content tab saves to Shopify is saved as a draft. Making something public is always a separate, deliberate step in the Shopify admin.
Rule of thumb. If a number looks wrong in the web admin, check the local app first — it computes, Shopify stores, this panel displays.

The tabs

📊CRMleads, pipeline, Gmail, scrapers, campaigns

What it is for. Your daily desk: every lead, the pipeline board, your mailbox and the tools that find new prospects.

  • Pipeline at a glance at the top: switch between Month, Quarter, Year and All-time for revenue, open pipeline, conversion, average cycle, campaign emails and replies, plus a funnel and source breakdown.
  • Leads desk. Switch between 📋 List and 📊 Board. In List you get search (name, company, email), tier chips (Quoted, Distributors, Warm inbound, OutreachPro, Exact only, NDA), a source filter, 50 rows per page, and Download CSV which exports exactly what the filter is currently showing. Click a row to expand the full record.
  • Board. Six columns — New, Contacted, Qualified, Opportunity, Won, Lost — with a lead count and a weighted euro value per column. Drag a card, or use the little stage dropdown on the card. Export stages JSON / Import stages JSON / Reset moves let you back up and restore your manual moves.
  • Gmail. Connect Gmail opens Google's consent screen. You then get your folders and labels on the left and threads on the right, a reader with ↩ Reply via Gmail, ✨ AI Summarize + Draft and + Add sender to pipeline, and a ✉ Compose window with attachments. The Folder Crawler below scans selected labels over a date range and pulls out every contact you have exchanged mail with, then offers Export CSV or + Push all to pipeline.
  • Lead scrapers. Three lanes: OpenStreetMap (free, no key), ScrapeGraph and Apify. Fill in keywords, industry, country, city and size, run it, review the results, keep what you want.
  • NDA 3D leads. Load NDA access log shows everyone who unlocked the 3D configurator behind the NDA gate; each row can be merged into the lead list.
  • Email campaigns. A four-step builder: 1 Audience → 2 Template → 3 AI Polish → 4 Review & Send, with merge tags, starter templates and a send rate in seconds between mails.
Scrapers: only OpenStreetMap is free. ScrapeGraph and Apify are paid outside services — you need your own account and API key (enter them here or in the Keys tab), and every run costs money on their side.
Board moves are saved in this browser first. The push up to Shopify happens quietly in the background with no success message, and Reset moves only clears the local copy. Export your stages before resetting if they matter.
Campaign test mode. The checkbox says "only send to me", but it actually sends one real email to the first matching recipient. Put your own address at the top of the list, or leave campaigns off until this is fixed. The "Replies" counter is never filled in and will always read 0.
Gmail AI draft needs the Gemini key (Keys tab). The price list and promotion wording it uses are written into the theme, so check numbers and dates in any AI draft before you send it.
📄Documentsoffer → invoice → delivery note, as real PDFs

What it is for. Turning a Shopify order or draft order into a proper German/English sales document as a PDF.

  • 1. Pick order. Start typing an order number or a customer name. Draft orders are listed first (amber Draft badge), live orders after (Live badge). ↻ Reload refetches the list.
  • Set the details on the left: reference number (leave blank and one is generated), document date, valid-until date, VAT handling (Auto by shipping country, 19% MwSt, 0% EU, 0% Export), payment terms (prepayment, on receipt, net 14, net 30) and document language (Deutsch or English).
  • 2. Generate. Six document types: Offer (Angebot), Sales Order (Auftragsbestätigung), Proforma Invoice, Invoice (Rechnung), Packing List (Packliste) and Delivery Note (Lieferschein). Click one and the PDF is built and shown in a preview window.
  • From the preview you can ⬇ Download PDF, ☁ Save to Shopify or open 📁 Saved documents. Saving happens automatically the moment the document is generated — the button is only a retry.
  • Saved documents keeps everything in folders (Offers, Sales Orders, Proforma Invoices, Invoices, Packing Lists, Delivery Notes). Per row you can download, archive (hide, reversible) or remove.
  • Document style sets the accent colour, logo on/off, company address, e-mail, web, VAT ID, bank, IBAN and BIC for all future documents.
Documents needs the admin proxy token. Order lists come from Shopify through the proxy worker. If the token is missing or wrong you get a red ✕ HTTP … line under the order box, no orders load, and all six document cards stay greyed out. Fix it with the small button at the top of the pick-order card: paste a Shopify custom-app token starting with shpat_ with the read_orders and read_draft_orders permissions, then Save & Reload Orders.
Reference numbers are not sequential. An auto-generated number like CW-RE-2026-4821 ends in random digits. If your bookkeeping needs a continuous invoice sequence, type the number yourself in the Reference # field.
Changing the document style does not update documents you already made. Regenerate them if the address or bank details changed.
💰Deal Simulatorwhat a discount really costs you

What it is for. Working out, before you promise anything, whether a discounted deal still makes money — and how far you can go.

  • Presets load a machine in one click: Mini Basic, Mini Platinum, Pro Black, Pro Platinum, OASIS. ⚡ Load Black Deals loads the promotion configuration.
  • Machines in this deal — add as many lines as you like with + Add machine, each with quantity, net unit price and its own margin percentage.
  • The discount slider is the main control. Under it you set the cost of the free cleaner and free commissioning per machine, the distributor/channel margin, your margin floor (the lowest margin you are willing to accept) and the deposit percentage.
  • Read the four numbers: Customer net, Gross profit, Gross margin % and Margin given away.
  • The verdict banner tells you where you stand: ✅ Healthy (above your floor, and how much more you could discount), ⚠️ Below floor (with the maximum discount that still holds the floor) or ⛔ Loss-making (you are selling below cost).
  • Turn this into a quote — enter the customer e-mail, optionally tick "also create Shopify draft order", press 💾 Save quote. The deal is stored on Shopify as a cw_quote record.
  • Deal content at the bottom generates ready-to-copy promotion text (campaign name, valid-from/until, order-by date, language), or hands the brief over to the Content Generator.
The preset prices belong to the simulator, not to your shop. They are written into the tool and do not update when you change a product price in Shopify. Check the unit price before you quote from it.
Saving a quote uses the admin proxy, the same connection as the Documents tab. If that is not working, the quote will not save.
📈FinanceBWA, P&L and open invoices — read only

What it is for. Looking at the books: period results computed by the local cycleERP app, and the list of invoices that are still unpaid.

  • Four headline numbers for the latest closed period: Revenue, Gross profit, Opex and Net result.
  • Periods · BWA / P&L — every closed period, newest first, with revenue, COGS, gross profit, opex, net, when it was computed, and a BWA link that opens the snapshot file the local app uploaded.
  • Open items (AR) — every invoice that is not marked paid, with amount, due date, days overdue in red, status and a link to the PDF, plus a Total open line.
  • DATEV exportOpen local cycleERP ↗ takes you to the local app where the export is generated; Re-check tests whether that app is currently running.
  • Reload refetches everything from Shopify.
Nothing is calculated here. If the tables are empty, no period has been closed yet. Start the local app (~/cycleERP, http://localhost:8765), run the period close there, let it sync, then come back and hit Reload.
Paid invoices are hidden on purpose. This card is the open-item (OPOS) view, not an invoice archive.
DATEV never leaves the Mac. This browser tab does not and will not compute or upload DATEV or tax data — only the computed period summaries you see above are ever synced to Shopify.
Automationevent → rule → action

What it is for. Making the system react on its own: when something happens, check some conditions, then do something.

  • How automation works is a short explainer you can fold open at the top. In one line: an event happens, a rule listening to that event checks its conditions, and if they all match its actions run.
  • State machines show the allowed paths. An entity only ever moves along the arrows — nothing can jump a stage.
  • Active rules lists what exists, each with an enable/disable toggle.
  • + New rule opens a builder with no JSON typing: give the rule a name, pick the WHEN event, add IF conditions (all must match; no conditions means it always fires) and THEN actions (they run in order). A live JSON preview shows exactly what will be saved. Then Save rule, Copy JSON or Cancel.
  • Recent activity shows rules that actually fired, plus a separate list of your own dry-runs from this browser.
  • Test is the dry-run console: pick an event, edit the little payload, press Run dry ▶ and see which rules would match — without anything actually happening.
Save mode: local draft. The rules service is not yet able to accept new rules, so Save rule currently keeps the rule in this browser. Use Copy JSON and paste it into the automation_rule record to make it real. The tab always tells you at the top which mode is live.
The enable/disable toggles are a local view flag for the same reason — they change what you see, not what the service does.
📝Contentdraft copy, pick images, write the Journal

What it is for. Producing blog posts, social captions and help articles — and saving them into Shopify as drafts.

  • Left: the brief. Choose content type (Blog Post, LinkedIn, Instagram Reel, Facebook, TikTok, Press Release, Newsletter), topic, target audience and language, add any extra context, then press ⚡ Generate Draft.
  • Five output tabs fill in at once: Content, SEO Meta, AEO Schema, Social and Internal links, with an SEO and AEO score above them.
  • Three buttons under the output: + Append FAQ, 📋 Copy active tab and ✉ Send to backlog →.
  • Right: media. Three sub-tabs — Library (everything already synced, filter by source and category), Generate (write a prompt, pick an aspect ratio, press ✦ Generate image) and Capture (text read out of your captured images; click a quote to drop it into the draft). Click several library tiles to select them in order, then use ↳ Insert into draft or ⚡ Queue + schedule.
  • Journal Editor at the bottom. The Publish to switch chooses 📓 Journal or 🛟 Help Center. Fill in title, slug, tags, author, lede and hero image, write the body, then Save draft (this browser) or Save draft to Shopify.
Articles save as DRAFTS. Nothing in this tab can publish. After Save draft to Shopify the article exists on the shop but is invisible to visitors — open it in the Shopify admin and publish it there.
The generator is a template, not an AI. It assembles pre-written scaffolding from your brief. Treat the result as a starting skeleton and rewrite it. If you pick a language other than English you get the English template with a note telling you to translate it.
Help Center articles are Journal drafts tagged help. There is no separate help blog. If that tag is removed, the article reappears in the public Journal list instead.
Image generation needs the fal.ai key (Keys tab). Without it, ✦ Generate image reports that the media service is not ready.
🌍Translationsthe storefront and blog in 9 languages, mostly automatic

The site runs in English plus 9 languages — German, French, Spanish, Italian, Dutch, Portuguese, Japanese, Korean and Chinese. There are two separate things that get translated, handled two different ways.

The interface (buttons, product specs, navigation, FAQs) is translated in the theme's own language files and is 100% complete in all 9. Nothing to do here; it is part of the theme.

Blog articles live in Shopify's database, not the theme, so they are translated by a machine translator (Gemini) and written back to Shopify as real translations. Two ways this happens:

  1. New articles translate themselves. In the Content tab's Journal editor there is an “Auto-translate to 9 languages on save” checkbox, on by default. Save an article and, a few seconds later, it exists in all 9 languages. A small toast counts them off (“Translating German… 1/9”) and ends with “Translations: 9 live”. You never touch it.
  2. The existing backlog was translated in one bulk pass with a script (scripts/blog-i18n-backfill.mjs). You would only re-run it if you imported a batch of old articles that pre-date the auto-translate checkbox — it skips anything already translated, so a re-run is safe and only fills gaps.

What is protected. Brand and product names — cycleWASH, LuftWASH, AntiGravity, ECO, STANDARD, Mini, Pro, OASIS — are kept in English in every language. Numbers, units and the HTML layout of an article are preserved exactly; only the readable text changes.

Seeing a translation. Add the language prefix to any blog URL: /de/blogs/news/… for German, /fr/… French, /pt/… Portuguese, /zh/… Chinese, and so on. The prefix is the short code even where the language is a regional one (Portugal, Simplified Chinese).

Requirements, already set up. Auto-translate needs two things that are in place: a Gemini key in the Keys tab, and the translations permission on the admin app. If either is ever missing, the article still saves and a toast tells you exactly which one to restore — it never fails silently.
📸ImagePipethe media library and where images appear on the site

What it is for. Browsing every photo and video in the media library, and deciding which image sits in which spot on the website.

  • Four views: Gallery (all media, filter by category, click for a full-size lightbox), Produced (text the pipeline generated, each with a Copy button), ⌂ Site and 🗂 Manage.
  • Search and category chips at the top narrow the grid; Full screen gives the gallery the whole window (Esc leaves).
  • Site view lists every page of the website — click one to open it in visual edit mode in a new tab. Below that, shop products can be opened with ◎ assign images to attach gallery images to a product carousel.
  • Manage points at the Gallery Manager for reordering, recaptioning, adding and deleting public gallery items.
  • With the local ImagePipe app running you also get a ● local pipe · edit mode badge and a gold Publish button, and each image in the lightbox gains Move (change category), + Tag, ◎ Place (put it in a named slot on the site) and ✦ Social (write a caption from the website copy).
Editing only works on the Mac that runs the pipeline. The tab talks to a local app on localhost:8787. On any other computer the tab is silently read-only — no error appears, the edit controls and the Publish button simply are not there. That is expected.
Publish reloads the page. If your 5-minute session has lapsed, the password card comes back afterwards. That is normal, just unlock again.
Use the sidebar entry for the Gallery Manager. The button inside the Manage view does nothing; the working link is 🖼️ Gallery Manager in the left sidebar under "More".
💬Testimonialscustomer quotes, shown above Proven Performance

What it does. Real quotes from real customers, rendered at the top of the Proven Performance block — so every product page closes with customers first, then the figures that back them up. Entries are stored on the shop, not in the theme, so one edit here updates every page at once.

Adding one. Press + Add testimonial, fill the card, then Save. Company, Person quoted and the Quote are required; an entry missing any of the three is skipped rather than rendered half-empty. Website URL must start https:// or it is ignored and the company shows as plain text. Role is optional.

The logo. Press Upload logo to Shopify and pick a file — it goes straight to the Shopify CDN and the link fills itself in. You can also paste a CDN link from Content → Files, or type the filename of an image already in the theme. Either way the preview under the field loads the real image, so a wrong path is obvious before you save rather than after it is live.

Ordering and removing. Each card has / to move it and Delete to drop it. Nothing takes effect until Save; dropping from several entries to fewer asks for confirmation first.

If Save fails. Copy JSON puts the whole list on your clipboard and Metafield editor ↗ opens the same field in Shopify admin, where you can paste it by hand. Same destination, manual route.

Only publish people who have agreed to be quoted. This section deliberately ships with no example entry — an invented testimonial is the one mistake here that costs real credibility. With no entries saved, the section renders nothing at all: no heading, no empty space.
🔧SPIRITthe IoT platform reference — read only

What it is for. A reference sheet for the SPIRIT platform: the app, the operator and technician portals, and the Walter controller in the machines. Nothing here is editable.

  • The four platforms and the end-to-end flow between customer, operator, technician and the transport layer.
  • Route breakdown for the three portals: Operator Dashboard, Customer App and Technician Portal.
  • Walter ESP32-S3 — the hardware pin layout and the commands the machine understands (start wash, stop wash, test pulse, status, reboot, set mode), plus the default cycle timings.
  • Technology stack and the product roadmap by quarter.
  • Four preview tiles open the live portals in correctly sized popup windows: Operator Dashboard (desktop), Customer App (mobile), Technician Portal (tablet) and Platform Overview. The 📋 button copies the dashboard link.
  • Docker setup with copy-ready commands for running the backend yourself.
Allow popups for this site, otherwise the four preview tiles are blocked. They all reuse one window, so opening a second tile replaces the first. Shopify does not allow these pages to be embedded, which is why they open as popups rather than inline.
Do not screen-share this tab. The Docker section prints the default backend login in plain text.
💼Investorsthe Series A story — read only

What it is for. The investor narrative in one place, so you can show it or send it without hunting for slides.

  • Key metrics, the product lineup with indicative prices, the technology and IP summary and the revenue projection chart.
  • Series A use of funds and what investors get.
  • Go-to-market by segment and the contact card for the IR enquiries.
  • 💼 View Full Deck opens the public investor page; 🔗 Copy Share Link copies its address.
  • Preview buttons show the live investor page at desktop, tablet and mobile size, or ↗ Open in new tab.
Everything on this tab is written into the theme, not pulled from live data. To change a figure, the page itself has to be edited — the numbers will not update on their own, and they do not always agree with the Patents tab.
Small display quirk. Both 🔗 Copy Share Link buttons are wired to the same label, so clicking the lower one makes the upper one flash "Copied". The link is still on your clipboard.
🛡️Patentsthe IP portfolio and fee deadlines — read only

What it is for. Keeping an eye on the whole protection portfolio — patents, utility models, registered designs and trademarks — and on which fees fall due next.

  • Four counters: active filings, granted, pending and fees due in the next 90 days.
  • Filter by family, by status (Granted / Pending / Abandoned), or tick Only entries with upcoming fees to see just what needs paying.
  • Family cards group the filings; click a card header to fold it open or closed. Each row shows country, reference, type, status and the next fee with a coloured dot.
  • The legend explains the dots: red for a fee due within 90 days, amber within 180 days, blue later.
  • PDF, XLSX and Register download the underlying overview files.
This tab is a mirror, not a live register. The data comes from a file inside the theme that is rebuilt from the DPMA overview spreadsheet. It only changes when someone regenerates and redeploys it — check the date in the legend before trusting a deadline.
Already-overdue fees show a red dot but are not counted in the "Fees due < 90d" number, which only counts fees still in the future. Scan the rows, not just the counter.
🎨Brandthe visual system, plus the background switch

What it is for. The canonical brand reference for anyone designing or building something cycleWASH — agency, developer or partner.

  • Site Background at the top: 🌋 Lava, 🫧 Bubbles or ✨ Off.
  • Colour — the four named colours (Glacier Blue, Signal Gold, Mist White, Midnight Ink), what each is for, and the rule that gold is reserved for the one action that matters.
  • Typography — Outfit for the brand, Inter for legibility, Playfair Display only in the Journal, with the size scale.
  • Logo & mark — construction, clearspace, background rules and where the original source files live.
  • Layout & depth and Motion — spacing rhythm, radii, hairlines, and how animation should behave.
  • Reference sheet — the one-page palette and style summary to drop into decks and partner handoffs.
The background switch is personal. It applies to the whole site in your browser only — it is not a shop-wide setting and visitors will not see your choice.
🔑Keysone place for every API key

What it is for. Entering and clearing the keys that the other tabs need, without hunting for the field that owns them.

  • Each key gets a card with a masked field, a show/hide eye, Save and Clear, and a status pill reading Set or Not set.
  • Gemini AI (free tier) — powers the AI e-mail drafting in Gmail and the campaign polish step. Get one from Google AI Studio.
  • FAL.ai Images (paid) — AI image generation in Content Studio → Generate.
  • ScrapeGraph (paid) and Apify (paid) — the two paid lead-scraper lanes.
  • Shopify Admin token — lets the CRM and the document generator read orders and products.
  • Admin proxy password — leave it blank unless you were told otherwise; blank means "use the default".
  • Gmail OAuth is shown here but connected from the Gmail panel in the CRM tab.
Keys live in this browser only. They are never stored in Shopify or in the theme. Clear your browsing data, switch browser or move to another computer and you will have to enter them all again. Nobody else can see them, and nobody else inherits them.
OpenStreetMap needs no key — it is the free scraper lane and always works.
Two keys are not in this vault. The NDA audit key is asked for by a popup in the CRM tab the first time you load the NDA log, and the Shopify token used for order documents is entered with the button in the Documents tab (that one is stored on the server, not in your browser).
📖Helpthis handbook, help articles, platform docs

What it is for. Everything explanatory in one tab: this handbook, the published help articles, and the SPIRIT platform documentation.

  • This handbook — the blocks you are reading now.
  • Help articles — the guides written for customers. They appear here and on the public help page.
  • SPIRIT Platform Documentation — the longer technical reference, available in every shop language.
To add a help article, go to Content → Journal Editor, set Publish to to 🛟 Help Center, write it and press Save draft to Shopify. Like every article it is saved as a draft — publish it in the Shopify admin before it appears here.

Glossary — the buttons with odd names

Queue + schedule
Content tab, media panel. Hands the images you have selected to the automation service so it can plan social posts from them. There is no queue list and no cancel button in this panel — once queued, it is out of your hands here.
Library / Generate / Capture
The three ways to get an image in the Content tab. Library = pictures already in the media pipeline. Generate = make a new one with AI from a text prompt (needs the fal.ai key). Capture = text that was read out of photos you captured, so you can quote a sign, label or slide.
Insert into draft
Drops the media you selected straight into the article you are writing, in the order you clicked them. Note it lands at the top of the output area rather than inside the text, so it is not included when you copy or send the draft — add the images again in the Journal Editor if the article needs them.
Append FAQ
Adds a ready-made block of questions and answers, matched to your topic, to the end of the generated text. Good for search engines and AI answer boxes. It refuses if the text already contains a FAQ block.
Copy active tab
Copies whichever output tab you are currently looking at (Content, SEO Meta, AEO Schema, Social or Internal links) to your clipboard. It does this silently — there is no confirmation message, so just paste to check.
Send to backlog
Hands the draft to the automated blog agent, which picks up its backlog on its next run (Monday and Thursday, 09:00). If the agent cannot be reached, the draft is downloaded as a small file instead, with instructions on where to drop it.
Dry-run
Automation tab. A rehearsal: you fire a pretend event and the system reports which rules would have matched and what they would have done — without sending anything, changing any stage or creating any document. Safe to press as often as you like.
BWA
Betriebswirtschaftliche Auswertung — the German monthly management report your accountant works from: revenue, cost of goods, gross profit, overheads and the result for the period. It is calculated by the local cycleERP app on the Mac; the Finance tab only displays it.
OPOS
Offene Posten — open items: invoices that have been issued but not yet paid. That is exactly what the Finance tab's "Open items (AR)" card lists. Paid invoices are deliberately left out.
O2C
Order-to-Cash — the whole chain from first contact to money in the bank: lead → quote → order → invoice → payment. It is the heading over the CRM, Documents and Deal Simulator group in the sidebar, because those three tabs are the steps of that chain.

This handbook describes the panel as it is built today. If a button behaves differently from what you read here, trust the button and tell whoever maintains the theme — the guide lives in snippets/cw-admin-guide.liquid and is meant to be corrected, not worked around.

SPIRIT平台文档

📊

运营者仪表板

在spirit.cyclewash.com实现实时监控、收入跟踪、车队管理

🔧

技师门户

远程诊断、维护排期、固件更新、警报管理

📱

客户应用

查找站点、开始清洗、支付、清洗记录、会员奖励

SPIRIT仪表板 — 快速入门

创建账户

访问spirit.cyclewash.com → 点击"注册" → 输入公司信息和铭牌上的设备序列号(格式:CW-XXXX-XXXXXX)。

连接您的设备

在设备LCD上:设置 → WiFi → 输入凭据。设备将在5分钟内出现在您的仪表板中。连接成功后状态LED常亮蓝色。

配置支付

仪表板 → 设置 → 支付 → 启用所需方式:Nayax(非接触卡)、二维码(应用)、投币器。设置每次清洗价格(建议:2–5欧元)。

设置警报

仪表板 → 警报 → 配置:缺水、清洗剂不足、维护到期、离线警报、收入里程碑。可通过邮件、短信或推送接收通知。

SPIRIT API参考

Base URL: https://api.spirit.cyclewash.com/v1
身份验证: Bearer令牌(通过OAuth2客户端凭证流程获取)

Endpoints

方式Endpoint说明
GET/machines列出车队中的所有设备
GET/machines/{id}/status实时设备状态(水、电池、最近清洗)
GET/machines/{id}/analytics使用分析(清洗次数、收入、用水量)
POST/machines/{id}/command发送命令(start_wash、stop、diagnostic)
GET/revenue按日期范围的收入报表
GET/alerts当前维护与系统警报
WS/ws/machines/{id}用于实时遥测流的WebSocket

示例:获取设备状态

curl -X GET https://api.spirit.cyclewash.com/v1/machines/CW-2024-001234/status \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json"

# Response:
{
  "machine_id": "CW-2024-001234",
  "model": "Pro Platinum",
  "status": "idle",
  "battery_level": 87,
  "water_level": 64,
  "detergent_level": 45,
  "total_washes": 12847,
  "today_washes": 23,
  "today_revenue": 92.00,
  "last_wash": "2026-04-06T14:32:00Z",
  "firmware": "3.2.1",
  "connectivity": "wifi",
  "solar_output_watts": 285,
  "location": { "lat": 50.9503, "lng": 6.9588 }
}

MQTT主题

# Subscribe to machine telemetry
cyclewash/{machine_id}/telemetry    → { battery, water, solar, temp }
cyclewash/{machine_id}/status       → { state: idle|washing|error }
cyclewash/{machine_id}/wash         → { started_at, duration, water_used }
cyclewash/{machine_id}/alert        → { type, severity, message }

# Publish commands
cyclewash/{machine_id}/command      → { action: "start_wash" | "stop" | "diagnostic" }
cyclewash/{machine_id}/config       → { price, wash_duration, eco_mode }

# MQTT Broker: mqtt.spirit.cyclewash.com:8883 (TLS)
# Protocol: MQTT v5.0 over WSS

cycleWASH iPhone应用

Download: App Store有售 — 搜索"cycleWASH"或在任意cycleWASH站点扫描二维码。

应用设置 — 分步指南

下载与安装

打开App Store → 搜索"cycleWASH SPIRIT" → 点按"获取" → 应用自动安装。需要iOS 15.0及以上,iPhone 8或更新机型。

创建账户

打开应用 → 点按"注册" → 输入邮箱并创建密码(或用Apple ID / Google登录)。使用发送到邮箱的6位验证码完成验证。

添加支付方式

个人资料 → 支付方式 → 添加:Apple Pay(推荐)、信用卡/借记卡或PayPal。也可购买清洗充值套餐(10次装、20次装)享受折扣。

启用定位服务

允许定位以查找附近站点。地图显示所有cycleWASH站点,含实时可用状态、等候时间和步行路线。

您的首次清洗

在地图上找到站点 → 点按"开始清洗" → 扫描设备上的二维码(或碰触NFC)→ 放好自行车 → 清洗自动开始 → 完成后扣款。

应用功能

功能说明等级
🗺️ 站点查找实时显示可用状态、营业时间、价格的地图免费
📱 二维码/NFC启动扫描站点二维码开始清洗免费
📊 清洗记录含日期、站点、费用的完整清洗记录免费
💳 数字钱包保存支付方式、购买充值套餐免费
⭐ 会员计划每次清洗积分 → 解锁奖励与折扣免费
🔔 通知清洗完成提醒、附近站点提醒、促销信息免费
🏆 成就赢取徽章:首次清洗、10次达成、环保卫士等免费
📈 环保影响跟踪相比手工清洗节省的水和减少的CO₂免费
🔗 车队模式管理多辆自行车、添加团队成员、批量充值Pro
📊 车队分析使用报表、成本明细、维护警报Pro

会员等级

等级要求权益
🥉 Bronze0次基础价格,每次清洗积1分
🥈 银10次95折优惠,每次清洗积1.5分,优先支持
🥇 金50次9折优惠,每次清洗积2分,免费护理产品小样
💎 Platinum200次8折优惠,每次清洗积3分,VIP权益,免费年度保养

故障排除

二维码无法扫描

1. 确认已开启相机权限(设置 → cycleWASH → 相机 → 允许)
2. 若设备上的二维码脏污,请先擦拭
3. 将手机保持在距二维码15–20厘米处
4. 仍无法扫描时,点按"手动输入代码",输入二维码下方显示的8位站点代码

支付失败

1. 确认支付方式有效(个人资料 → 支付方式)
2. 确保银行卡或清洗充值账户余额充足
3. 尝试其他支付方式(Apple Pay、银行卡、PayPal)
4. 使用充值套餐时,请检查剩余余额
5. 联系支持:info@cyclewash.de

应用崩溃或卡死

1. 强制关闭应用:从屏幕底部上滑并划走应用
2. 检查更新:App Store → 个人资料 → cycleWASH → 更新
3. 重启iPhone
4. 删除并重新安装应用(账户数据已云端同步)
5. 最低要求:iOS 15.0,iPhone 8或更新机型

运输与支付

运输区域与费率

区域个国家设备费率护理产品配送
🇩🇪 德国德国免费(超1万欧元)免费2–5天
🇪🇺 欧盟(近程)AT, NL, BE, LU, FR, DK, CZ, PL149欧元起€195–8天
🇪🇺 欧盟(远程)ES, IT, PT, GR, RO, SE, FI, NO249欧元起€297–12天
🇨🇭 瑞士瑞士199欧元起€355–8天
🇬🇧 英国英国249欧元起€357–10天
🇺🇸 美国东部美国东部各州499美元起$4910–15天
🇺🇸 美国西部美国西部各州599美元起$4912–18天
🇯🇵🇰🇷 亚洲日本、韩国599欧元起€5910–15天
🇦🇪 中东阿联酋、沙特阿拉伯549欧元起€498–12天
🌍 世界其他地区其他所有国家定制报价€6515–25天
所有设备发货均包含专业木箱包装、全额运输保险和实时跟踪。OASIS站点需要专用货运和白手套安装服务。

支付方式

方式类型地区状态
Shopify PaymentsVisa, MC, Amex全球✅ 运行中
Shop Pay快捷结账全球✅ 运行中
Apple Pay手机NFC全球✅ 运行中
Google Pay手机NFC全球✅ 运行中
PayPal数字钱包全球✅ 运行中
Sharpei租赁 / 出租欧盟、美国✅ 内置
银行转账B2B发票欧盟按需提供
Klarna先买后付欧盟、美国推荐

B2B采购流程

索取报价

请通过 /pages/contact-us 表单、邮件(info@cyclewash.de)或聊天窗口联系我们。请注明型号、数量和交付地点。

接收方案

我们将在24小时内发送详细方案,含产品价格、运费、安装计划和付款条件(合格买家可享NET 30/60/90账期)。

订购与支付

可在线下单(Shopify结账)或通过签署的采购订单订购。支付方式:全额预付、50/50分期,或通过Sharpei租赁。

配送与安装

生产:2–4周。运输按上方区域表。OASIS站点由我们的团队负责现场安装(2–3天)。

常见问题

Nico用10秒回答最常见的问题——完整FAQ见下方。

cycleWASH每次清洗用水多少?

每次清洗仅需3–5升水 — 比手工洗车(80升以上)少95%。我们的水循环系统可回收多达85%的用水。

对电动自行车和碳纤维车架安全吗?

是的!我们经过校准的低压喷淋系统专为电动自行车和碳纤维车架设计。与高压清洗机不同,我们的系统绝不会超过对电子元件和精密材料安全的压力水平。

一次清洗需要多长时间?

Mini:45秒。Pro:60秒。OASIS:90秒(含预冲洗和风干)。设备全自动运行 — 放好自行车按下启动即可。

没有阳光也能工作吗?

可以。太阳能型号配备LiFePO4电池组,充满一次可支持20–40次清洗。电池型号不依赖阳光运行。系统自动在太阳能、电池和可选电网备份之间切换。

投资回报率/回本周期是多少?

典型投资回报期:视地点和定价为8–18个月。按每次3欧元、每天50次计算,一台Mini每月可产生约4,500欧元收入。使用我们的ROI计算器进行个性化测算。

是否提供租赁或融资?

是的!通过合作伙伴Sharpei,我们提供灵活租赁,Mini每月199欧元起,Pro每月299欧元起。也有收入分成模式 — 零前期投入,按清洗次数付费。

使用什么清洗剂/清洗液?

我们专有的100%可生物降解清洗液(cycleWASH EcoClean)。pH中性,对包括碳纤维、漆面和橡胶在内的所有自行车表面安全。5升和20升装可在护理产品页面购买。

能否将cycleWASH集成到现有的共享单车系统?

当然可以。SPIRIT API可与所有主流车队管理系统集成。我们提供REST API + MQTT端点用于实时监控。API详情请参阅SPIRIT文档

提供什么保修?

依据我们的条款与条件提供有限保修。易损件(刷子、软管、过滤器、水泵、滚轮驱动电机、传动带)不在保修范围内。签订维护合同可获延长保修(1–5年,与合同期一致)。Premium或Enterprise支持请联系info@cyclewash.de。

cycleWASH设备在哪里制造?

所有设备均在我们位于德国科隆的工厂(CW Cleaning Solutions GmbH, Belfortstraße 8, 50668 Cologne)设计和制造。我们掌控整条供应链以保证品质稳定。36项国际专利保护我们的技术。

1. Pick order

Real Shopify orders + draft orders — type a name or number to filter.

Loading orders from Shopify…

VAT calculated on net (line items + shipping) and shown on its own line. §4 reference auto-switches based on shipping country.

2. Generate document

Click a card to open a preview, then save to Shopify or download.

Ready. Pick an order above, then click a document.

Saved documents 0

Every document you generate is stored here automatically. Click to preview, download as PDF, or save to Shopify.

No documents yet — pick an order and generate one above.

Document style

Adjust how every generated PDF looks — accent colour, logo, company & bank details. Saved to Shopify; applies to all new documents on every device.

Connect Shopify API Token

Paste a Custom App admin API token (scopes: read_orders, read_draft_orders). It starts with shpat_.

Document preview

📁 Saved documents

Generated PDFs are stored in this browser, grouped by type. Click any to preview, download, archive, or remove.
O2C · Pricing Strategy

Deal Simulator

Model discounts, free items & channel margins — see live impact on gross margin, P&L and cashflow. Decide how far you can discount before the deal stops paying.

Machines in this deal

25%Discount on list
Customer net (total)
Gross profit (total)
Gross margin %
Margin given away
Turn this into a quote Saves a cw_quote record and can open a Shopify draft order.

Deal P&L (all machines)

LineDeal total

Cashflow timeline (this deal)

Blue = cash in (deposit on order, balance on delivery ~6 weeks). Red = COGS cash out at production. Green = net cash by month.

📣 Deal content — ready to publish

Finance · BWA · P&L · open items

The books, computed locally.

Period results come out of the local cycleERP app — it owns the ledger, runs the BWA and holds every DATEV artefact — and are cached up to Shopify as cw_ledger_period metaobjects. This tab reads them, plus the cw_invoice open-item list. Nothing here recomputes accounting in the browser. Waiting for the Finance tab to open…

Revenue
Gross profit
Opex
Net result
Latest period — no data yet

Periods · BWA / P&L

Every cw_ledger_period record on the store, newest first. The BWA link opens the snapshot file the local app uploaded to Shopify Files.

Period Revenue COGS Gross profit Opex Net Computed BWA
Loading periods…

No periods have been synced yet

BWA and P&L figures are not calculated here. The local cycleERP app consolidates op.db, runs the period close and then pushes the result up as a cw_ledger_period metaobject — this tab is the read side of that pipe.

  1. Start the local app: ~/cycleERP (Docker), web UI on http://localhost:8765.
  2. Close a period there (BWA / P&L run).
  3. Let the sync module push the period up — it writes cw_ledger_period and uploads the BWA snapshot to Shopify Files.
  4. Come back and hit Reload. The KPI row and the table fill in.

Why the detour: Shopify is the system of record for what everyone may read; the Mac keeps the raw ledger, the tax data and the DATEV artefacts. Only the computed summary travels.

Open items (AR)

Every cw_invoice that is not marked paid. Overdue days are counted against due_date in red.

Invoice Customer Amount Due Overdue Status PDF
Loading open items…
Total open

No open invoices on the store

Either every invoice is settled, or the invoicing module has not synced yet. Invoice records (cw_invoice) are created by the local cycleERP app when it issues a document, and the PDF is uploaded to Shopify Files alongside it.

  1. Run the local app (~/cycleERP, http://localhost:8765).
  2. Issue or import invoices there — OPOS lives in cw-ar-ap.json.
  3. Let the sync module push them up as cw_invoice, then reload this tab.

Paid invoices are intentionally hidden here — this card is the open-item (OPOS) view, not the invoice archive.

DATEV export

Local-only. Always.

DATEV and tax data never leave the Mac. The export is generated by the local cycleERP app from op.db and written to disk there. This browser tab does not — and will not — compute, buffer or upload DATEV data. Only the computed period summaries you see above are ever synced to Shopify.

Checking whether the local app answers on localhost:8765

Source: Shopify metaobjects cw_ledger_period + cw_invoice, read through the cyclewash-admin-proxy worker. Write side and all heavy compute live in the local cycleERP app — see docs/ARCHITECTURE-CYCLEERP-ADMIN.md.

ImagePipecapture → produce
Source
imagepipe.sh ingest photos 10
🗂

Gallery Manager

Reorder, recaption, add or delete the 443 public gallery items. Opens in a focused window — Shopify blocks embedding pages inside pages.

Studio · Social proof

Customer Testimonials

Real quotes from real customers, shown at the bottom of the product pages. Only add people who have agreed to be quoted — never invent an example entry.

Entries 0 Metafield editor ↗

Company, person and quote are required. The website must start with https://. For the logo, upload the file in Shopify admin under Content → Files, copy the CDN link and paste it here (a theme-asset filename such as logo-acme.webp also works). Or press Upload logo to Shopify on the entry to send the file straight to the CDN. Nothing goes live until you press Save.

No testimonials yet. Add one once a customer has approved their quote.

Automation — cycleERP Rules Engine

Event → Rule → Action. Rules live in config (the automation_rule metaobject) — edit without a deploy.

How automation works
  1. Event — something happens (a lead replies, a quote is accepted, an image is generated).
  2. Rule — a rule listening on that event checks its conditions; if they all match, it fires.
  3. Action — the rule sets a stage, drafts an email, notifies sales, schedules a follow-up, creates a doc.
  4. Guarded transitions — an entity only ever moves along the arrows in the state machines below. Nothing can jump a stage.
  5. No deploy needed — rules are config, not code. Build one here, then test it with Dry-run: it reports which rules match and what they would do, without any side-effects.

State machines — entities advance only along guarded transitions (PLC interlock)

Active rules

loading…

Recent activity — rules that actually fired on the worker

checking the worker…

Dry-runs from this browser — local test log, no side-effects

No dry-runs yet in this browser.

Test — dry-run console: fire an event, see which rules match (no side-effects)


  
Admin · Integrations

Keys & Integrations

Every API key the admin panels use, in one place. Paste a key, hit Save, and the panel that needs it picks it up immediately.

Keys stay in this browser. They are saved in this browser’s localStorage only — never sent to Shopify, never stored in the theme, never written to a metaobject. A key is only passed on to the worker that needs it, at the moment you use that feature. Clearing your browser data, or opening the admin on another device, means entering them again.

Loading integrations…

Paid services bill you directly — cycleWASH never sees the usage or the key. The free lanes (OpenStreetMap / Overpass, Gemini’s free tier) cost nothing to run.

经过验证的性能
1,000,000
自行车洗涤次数
(刷具寿命)
设计可达
10,000
运行小时数
(持续运行)
太阳能 & 电池
无需电网连接
德国制造
科隆设计
IP
国际专利
36全球专利
ECO
100%可生物降解
闭合水循环
DEKRA 认证
DEKRA 认证
CE
CE 合规