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.
Every lead, opportunity and customer in one place — unified inbox, visual pipeline, Gmail and lead scrapers.
One-time configuration to unlock Gmail, AI drafting and lead scrapers. Everything below already works with what's available.
cd /Users/sachin/claude/.claude/worktrees/gallant-banach-0ecc0e/cyclewash-theme-v3/scripts && npx --yes wrangler@latest login && npx --yes wrangler@latest deploy
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.
https://cw-contact-spam-guard.vvlars.workers.dev/proxy/gmail/callbackcd cyclewash-theme-v3/scripts wrangler secret put GMAIL_CLIENT_ID wrangler secret put GMAIL_CLIENT_SECRET
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.
| Name | Company | Country | Tier | Source | Stage | |
|---|---|---|---|---|---|---|
Activate this tab to load the unified lead list. | ||||||
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).
Order revenue & invoice roll-up.
Drag cards (or use each card’s stage select) — manual moves persist in this browser, keyed by lead email.
Weighted pipeline value by stage — machine price estimate × stage probability.
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.
Pull prospects from any website. API keys stay in your browser — never sent to Shopify.
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.
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.
Launch your first outbound campaign — pick a lead source, draft a template with Gemini, send in batches via Gmail.
Hardware + Software + Coin Economy · 56+ App Routes · 24 Revenue Features · 8 Languages
Fleet analytics, machine health, customer data. Each view opens at the correct viewport size — Shopify blocks iframing storefront pages, so we use popups.
Full-stack SPIRIT platform: API (Node.js + Prisma + PostgreSQL), web dashboard (React + Vite), MQTT broker, Redis cache.
Copy environment and start:
Seed database (first time):
Default credentials: admin@cyclewash.io / Admin123! · API: localhost:3001 · Dashboard: localhost:3000
The World's First Automated Bicycle Washing Machine · Series A — €3M · March 2026
Series A · €3M · 40% manufacturing · 25% SPIRIT platform · 20% sales · 15% operations
Contact Sachin Kumar — CEO & Founder · CW Cleaning Solutions GmbH · Cologne, Germany
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.
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.
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.
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.
<script type="application/ld+json"> tags.
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.
Write and save drafts to Shopify — all from the admin. Drafts autosave to this browser.
Create
Publish to
Long-form writing saved as a draft in /blogs/news/.
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.
Editing a new draft
Body
Animated background shown behind page content. Applies in this browser across the whole site.
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.
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.
Two families plus one editorial voice. Outfit carries the brand; Inter keeps it legible; Playfair Display speaks only in the Journal.
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.
The serif appears exclusively in Journal heroes and headlines — the one place the brand slows down. Never in UI, never on product pages.
The official 2016 mark: a water droplet carrying the rotating gold wash-cycle arrow. The wordmark pairs gold lowercase “cycle” with blue “WASH”.
0 20px 48px -28px rgba(13,17,23,.45).Water is the only thing allowed to move freely. Everything else moves like machinery — precise, damped, once.
prefers-reduced-motion — reveals become fades.How the system behaves — light where functional, midnight where the machines perform.
The one-page palette & style sheet — drop it into decks, briefs and partner handoffs.
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.
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.
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.~/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.The tabs
What it is for. Your daily desk: every lead, the pipeline board, your mailbox and the tools that find new prospects.
What it is for. Turning a Shopify order or draft order into a proper German/English sales document as a PDF.
✕ 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.CW-RE-2026-4821 ends in random digits. If your bookkeeping needs a continuous invoice sequence, type the number yourself in the Reference # field.What it is for. Working out, before you promise anything, whether a discounted deal still makes money — and how far you can go.
cw_quote record.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.
~/cycleERP, http://localhost:8765), run the period close there, let it sync, then come back and hit Reload.What it is for. Making the system react on its own: when something happens, check some conditions, then do something.
automation_rule record to make it real. The tab always tells you at the top which mode is live.What it is for. Producing blog posts, social captions and help articles — and saving them into Shopify as drafts.
help. There is no separate help blog. If that tag is removed, the article reappears in the public Journal list instead.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:
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).
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.What it is for. Browsing every photo and video in the media library, and deciding which image sits in which spot on the website.
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.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.
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.
What it is for. The investor narrative in one place, so you can show it or send it without hunting for slides.
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.
What it is for. The canonical brand reference for anyone designing or building something cycleWASH — agency, developer or partner.
What it is for. Entering and clearing the keys that the other tabs need, without hunting for the field that owns them.
What it is for. Everything explanatory in one tab: this handbook, the published help articles, and the SPIRIT platform documentation.
Glossary — the buttons with odd names
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.
Guides and answers — continuously updated.
spirit.cyclewash.com에서 실시간 모니터링, 매출 추적, 플릿 관리
원격 진단, 유지보수 일정 관리, 펌웨어 업데이트, 알림 관리
스테이션 찾기, 세척 시작, 결제, 세척 기록, 로열티 리워드
spirit.cyclewash.com 접속 → '등록' 클릭 → 회사 정보와 명판의 기기 일련번호 입력(형식: CW-XXXX-XXXXXX).
기기 LCD에서: 설정 → WiFi → 인증 정보 입력. 5분 이내에 대시보드에 기기가 표시됩니다. 연결되면 상태 LED가 파란색으로 켜집니다.
대시보드 → 설정 → 결제 → 원하는 방식 활성화: Nayax(비접촉 카드), QR 코드(앱), 동전 투입기. 세척 1회당 요금 설정(권장: 2~5유로).
대시보드 → 알림 → 설정: 물 부족, 세제 부족, 유지보수 시기, 오프라인 경고, 매출 마일스톤. 이메일, SMS 또는 푸시 알림으로 받을 수 있습니다.
https://api.spirit.cyclewash.com/v1| 방법 | 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 }
}
# 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
App Store 열기 → 'cycleWASH SPIRIT' 검색 → '받기' 탭 → 앱이 자동 설치됩니다. iOS 15.0 이상, iPhone 8 이상 필요.
앱 열기 → '가입' 탭 → 이메일 입력 및 비밀번호 생성(또는 Apple ID / Google로 로그인). 받은 편지함의 6자리 코드로 이메일을 인증하세요.
프로필 → 결제 수단 → 추가: Apple Pay(권장), 신용/체크카드, 또는 PayPal. 세척 크레딧을 패키지(10개, 20개)로 할인 구매할 수도 있습니다.
위치 접근을 허용하면 주변 스테이션을 찾을 수 있습니다. 지도에는 모든 cycleWASH 스테이션이 실시간 이용 가능 여부, 대기 시간, 도보 경로와 함께 표시됩니다.
지도에서 스테이션 찾기 → '세척 시작' 탭 → 기기의 QR 코드 스캔(또는 NFC 태그) → 자전거 거치 → 세척 자동 시작 → 완료 후 결제 청구.
| 기능 | 설명 | 등급 |
|---|---|---|
| 🗺️ 스테이션 찾기 | 실시간 이용 가능 여부·영업시간·요금이 표시되는 지도 | 무료 |
| 📱 QR/NFC 시작 | 스테이션 QR 코드를 스캔하여 세척 시작 | 무료 |
| 📊 세척 기록 | 날짜·스테이션·비용이 포함된 전체 세척 기록 | 무료 |
| 💳 디지털 지갑 | 결제 수단 저장, 크레딧 패키지 구매 | 무료 |
| ⭐ 로열티 프로그램 | 세척마다 포인트 적립 → 리워드와 할인 잠금 해제 | 무료 |
| 🔔 알림 | 세척 완료 알림, 주변 스테이션 알림, 프로모션 | 무료 |
| 🏆 업적 | 배지 획득: 첫 세척, 10회 달성, 에코 워리어 등 | 무료 |
| 📈 환경 영향 | 수동 세척 대비 절약한 물과 감축한 CO₂ 추적 | 무료 |
| 🔗 플릿 모드 | 여러 자전거 관리, 팀원 추가, 대량 크레딧 | Pro |
| 📊 플릿 분석 | 사용 보고서, 비용 내역, 유지보수 알림 | Pro |
| 등급 | 요구 사항 | 혜택 |
|---|---|---|
| 🥉 Bronze | 0회 | 기본 요금, 세척당 1포인트 |
| 🥈 실버 | 10회 | 5% 할인, 세척당 1.5포인트, 우선 지원 |
| 🥇 골드 | 50회 | 10% 할인, 세척당 2포인트, 케어 제품 샘플 무료 |
| 💎 Platinum | 200회 | 20% 할인, 세척당 3포인트, VIP 액세스, 연간 서비스 무료 |
1. 카메라 권한이 켜져 있는지 확인(설정 → cycleWASH → 카메라 → 허용)
2. 기기의 QR 코드가 더러우면 닦기
3. 코드에서 15~20cm 거리를 두고 스캔
4. 그래도 안 되면 '코드 직접 입력'을 누르고 QR 아래 표시된 8자리 스테이션 코드 입력
1. 결제 수단이 유효한지 확인(프로필 → 결제 수단)
2. 카드 또는 세척 크레딧 계정의 잔액이 충분한지 확인
3. 다른 결제 수단 시도(Apple Pay, 카드, PayPal)
4. 크레딧 패키지 사용 시 잔여 크레딧 확인
5. 지원팀 문의: info@cyclewash.de
1. 앱 강제 종료: 화면 아래에서 위로 스와이프 후 앱을 밀어 닫기
2. 업데이트 확인: App Store → 프로필 → cycleWASH → 업데이트
3. 아이폰 재시동
4. 앱 삭제 후 재설치(계정 데이터는 클라우드에 동기화됨)
5. 최소 요건: iOS 15.0, iPhone 8 이상
| 지역 | 개국 | 기기 요금 | 케어 제품 | 배송 |
|---|---|---|---|---|
| 🇩🇪 독일 | 독일 | 무료(1만 유로 초과) | 무료 | 2~5일 |
| 🇪🇺 EU(근거리) | AT, NL, BE, LU, FR, DK, CZ, PL | 149유로부터 | €19 | 5~8일 |
| 🇪🇺 EU(원거리) | ES, IT, PT, GR, RO, SE, FI, NO | 249유로부터 | €29 | 7~12일 |
| 🇨🇭 스위스 | 스위스 | 199유로부터 | €35 | 5~8일 |
| 🇬🇧 영국 | 영국 | 249유로부터 | €35 | 7~10일 |
| 🇺🇸 미국 동부 | 미국 동부 주 | 499달러부터 | $49 | 10~15일 |
| 🇺🇸 미국 서부 | 미국 서부 주 | 599달러부터 | $49 | 12~18일 |
| 🇯🇵🇰🇷 아시아 | 일본, 대한민국 | 599유로부터 | €59 | 10~15일 |
| 🇦🇪 중동 | UAE, 사우디아라비아 | 549유로부터 | €49 | 8~12일 |
| 🌍 기타 지역 | 기타 모든 국가 | 맞춤 견적 | €65 | 15~25일 |
| 방법 | 유형 | 지역 | 상태 |
|---|---|---|---|
| Shopify Payments | Visa, MC, Amex | 전 세계 | ✅ 활성 |
| Shop Pay | 빠른 결제 | 전 세계 | ✅ 활성 |
| Apple Pay | 모바일 NFC | 전 세계 | ✅ 활성 |
| Google Pay | 모바일 NFC | 전 세계 | ✅ 활성 |
| PayPal | 디지털 지갑 | 전 세계 | ✅ 활성 |
| Sharpei | 리스 / 렌털 | EU, 미국 | ✅ 내장 |
| 계좌 이체 | B2B 인보이스 | EU | 문의 시 제공 |
| Klarna | 선구매 후결제 | EU, 미국 | 권장 |
/pages/contact-us 양식, 이메일(info@cyclewash.de), 또는 채팅 위젯으로 문의하세요. 모델, 수량, 배송지를 명시해 주세요.
24시간 이내에 제품 가격, 배송비, 설치 계획, 결제 조건(적격 구매자는 NET 30/60/90 가능)을 포함한 상세 제안서를 보내드립니다.
온라인(Shopify 결제) 또는 서명된 구매 주문서로 주문하세요. 결제 옵션: 전액 선불, 50/50 분할, 또는 Sharpei 리스.
제조: 2~4주. 배송은 위 지역별 표 참조. OASIS 스테이션은 당사 팀이 현장 설치를 수행합니다(2~3일).
Nico가 자주 묻는 질문에 10초 만에 답합니다 — 전체 FAQ는 아래에 있습니다.
세척 1회에 단 3~5리터 — 수동 세척(80리터 이상)보다 95% 적습니다. 물 재활용 시스템이 사용한 물의 최대 85%를 회수합니다.
네! 보정된 저압 분사 시스템은 e바이크와 카본 프레임을 위해 특별히 설계되었습니다. 고압 세척기와 달리 전자 부품과 민감한 소재에 안전한 압력 수준을 절대 초과하지 않습니다.
Mini: 45초. Pro: 60초. OASIS: 90초(사전 헹굼 및 공기 건조 포함). 기기가 모든 것을 자동으로 처리합니다 — 자전거를 거치하고 시작 버튼만 누르세요.
네. 태양광 모델에는 완충 시 20~40회 세척이 가능한 LiFePO4 배터리 뱅크가 포함됩니다. 배터리 모델은 햇빛과 무관하게 작동합니다. 시스템이 태양광, 배터리, 선택형 전력망을 자동으로 전환합니다.
일반적인 ROI: 위치와 요금에 따라 8~18개월. 세척당 3유로, 하루 50회 기준 Mini는 월 약 4,500유로의 매출을 창출합니다. ROI 계산기로 맞춤 추정치를 확인하세요.
네! 파트너 Sharpei를 통해 월 199유로(Mini) 또는 299유로(Pro)부터 유연한 리스를 제공합니다. 수익 공유 모델도 가능합니다 — 초기 투자 없이 세척당 지불하는 방식입니다.
자체 개발한 100% 생분해성 세척액(cycleWASH EcoClean)입니다. pH 중성으로 카본, 도장, 고무를 포함한 모든 자전거 표면에 안전합니다. 5L 및 20L 용기를 케어 제품 페이지에서 구매할 수 있습니다.
물론입니다. SPIRIT API는 모든 주요 플릿 관리 시스템과 통합됩니다. 실시간 모니터링을 위한 REST API + MQTT 엔드포인트를 제공합니다. API 세부 정보는 SPIRIT 문서를 참조하세요.
이용약관에 따른 제한 보증입니다. 마모 부품(브러시, 호스, 필터, 펌프, 롤러 구동 모터, 구동 벨트)은 보증 대상이 아닙니다. 유지보수 계약 체결 시 연장 보증(1~5년, 계약 기간에 따름)이 제공됩니다. Premium 또는 Enterprise 지원은 info@cyclewash.de로 문의하세요.
모든 기기는 독일 쾰른의 자사 시설(CW Cleaning Solutions GmbH, Belfortstraße 8, 50668 Cologne)에서 설계·제조됩니다. 일관된 품질을 위해 전체 공급망을 직접 관리합니다. 36건의 국제 특허가 당사 기술을 보호합니다.
Real Shopify orders + draft orders — type a name or number to filter.
Click a card to open a preview, then save to Shopify or download.
Ready. Pick an order above, then click a document.
Every document you generate is stored here automatically. Click to preview, download as PDF, or save to Shopify.
Adjust how every generated PDF looks — accent colour, logo, company & bank details. Saved to Shopify; applies to all new documents on every device.
Paste a Custom App admin API token (scopes: read_orders, read_draft_orders). It starts with shpat_.
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.
cw_quote record and can open a Shopify draft order.
| Line | Deal total |
|---|
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…
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… | |||||||
Every cw_invoice that is not marked paid. Overdue days are counted against due_date in red.
| Invoice | Customer | Amount | Due | Overdue | Status | |
|---|---|---|---|---|---|---|
Loading open items… | ||||||
| Total open | — | |||||
Local-only. Always.
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.
imagepipe.sh ingest photos 10
Reorder, recaption, add or delete the 443 public gallery items. Opens in a focused window — Shopify blocks embedding pages inside pages.
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.
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.
Event → Rule → Action. Rules live in config (the automation_rule metaobject) — edit without a deploy.
loading…
checking the worker…
No dry-runs yet in this browser.
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.
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.