On this page
4 min read

Day 9 - Public pricing, trust, and open registration

Pricing page with market comparison, legal and security pages in four languages, public registration on cloud.km0digital.com, email alert to the dev team when an idea is submitted, and conversion polish on the landing and blog.

Introduction

Day 8 set strategy and numbers; day 9 turns them into shippable product. Between 9 and 10 June 2026 we deployed the pricing page, legal and security sections, self-registration on cloud.km0digital.com, and conversion improvements on the home page and blog.

KM0 stops being "something that works if we explain it" and becomes a service anyone can discover, compare, sign up for, and use without a middleman.

Summary

Day milestones

  • Pricing: /pricing/ with 500 GB / €1.99 hero, indicative comparison table, model explanation, and CTA to cloud (#24, #25).
  • Trust: legal (notice, GDPR privacy, cookies) and security (AMVARA ISO 27001, responsible disclosure) pages in four languages (#21).
  • Registration: public email/password self-registration via register-api on OpenCloud; Dex login with dex-auth.js and post-register auto sign-in.
  • Conversion: landing with more visible KM0 Cloud (#26); refined blog and tutorial typography (#27); polished service card CTAs.
  • Ideas: immediate email to the development team when someone submits an idea on /ideas/ (f41329c).

Pricing

Public page and comparison

The offer agreed on day 8 reaches the website with localised copy (ES, CA, EN, DE) and brand-consistent design.

  • Hero: gradient price block - €1.99/month · 500 GB - and "Start using now" button to cloud.km0digital.com.
  • Comparison: indicative references (Google Drive, OneDrive, iCloud, Dropbox, MEGA) with monthly price, storage, and approximate cost per TB.
  • Claim: up to five times more space than reference basic plans at a similar price; operational trust copy below the table.
  • Transparency: "Why is our price different?" section - optimised infrastructure, operational efficiency, enough margin to sustain the service.

Key commits: 7a7e9da (comparison, 9 Jun), 9d7906c (messaging and trust rework, #25), 82a3ef0 / 65a32d2 (hero and CTA, 10 Jun).

Trust

Multilingual legal and security

Before asking for registration and payment, the site must answer "who operates this?" and "what happens to my data?" The new pages centralise legal information for km0digital.com and cloud.km0digital.com.

  • Legal (cd5579e, #21): AMVARA CONSULTING S.L. notice, GDPR privacy policy, cookies, and KM0 Cloud-specific section.
  • Security: operational practices (TLS, headers, EU/Hetzner), AMVARA ISO/IEC 27001:2022 scope, and responsible disclosure policy.
  • FAQ: existing answers now link to /security/ and /legal/ across all four locales.

OpenCloud

Public registration (km0-opencloud)

User → /register (register.html)
        ↓
  POST /api/register → register-api (:8091, nginx rate limit)
        ↓
  Graph API (app token) creates LDAP user
        ↓
  dex-auth.js + auto sign-in → Dex session → OpenCloud
  • Self-registration (67fe250, 10 Jun): register.html, loopback API, nginx /api/register proxy, ES/CA/EN/DE i18n.
  • Graph auth (7d52675): fix using GRAPH_SERVICE_APP_TOKEN (app Basic auth, not user password); health graph_auth_ok.
  • dex-auth.js (efefcd3): shared OIDC/PKCE module for login, register, and Dex password pages; post-register auto sign-in via session storage.
  • Operations: setup-register-api-graph-token.sh and verify-register-api.sh scripts; canonical URL /register (301 from /register.html).

Corporate site

Conversion and readability (km0-web, 10 Jun)

  • Landing (5f021e4, #26): more visible KM0 Cloud, accessibility, and refined conversion CTAs.
  • Services (471e407): KM0 Cloud card with clear CTAs to registration and tutorials.
  • Blog (2425cc1, 4487bef, #27): article typography, definition-style lists, mobile TOC, and general readability.
  • Styles (e5223f4): global CSS import in layout; fixed .doc-body selectors.

Site version at close: 1.1.70.

Ideas

Email alert to the team (last-minute)

The day 7 loop already queued ideas and generated GitHub tickets, but the team only found out when checking the queue or repository. With day 8's marketing push, we needed to react sooner.

POST /hooks/ideas → receive-idea.sh
        ↓
  JSON in /var/spool/km0-ideas/incoming/
        ↓
  notify-idea-email.sh (background, fire-and-forget)
        ↓
  AutoMail API → email to dev team (subject + first 100 characters)
        ↓
  (unchanged) autoissue → gh issue create
  • Script: scripts/notify-idea-email.sh - calls AutoMail (AUTOMAIL_TOKEN in repo .env); no cursor-agent.
  • Trigger: receive-idea.sh launches it in the background right after writing JSON to the queue.
  • Content: subject "Nueva idea km0digital" and message preview (100 characters); destination configurable via AUTOMAIL_NOTIFY_TO.
  • Receiver: Docker webhook sidecar moved to host systemd (km0-ideas-receiver.service); secrets from repo .env.

The automated ticket and waiting for human validation label stay the same; the email is an early heads-up so someone on the team reads the idea as soon as it arrives.

Verification

Check day 9

  1. Pricing: visit /pricing/ and check hero, table, and CTA in each language.
  2. Legal: review /legal/ and /security/; links from FAQ and footer.
  3. Registration: create a test account at cloud.km0digital.com/register; verify auto sign-in.
  4. Ideas: submit a test on /ideas/; check JSON in spool and team email via AutoMail.
  5. Smoke: autoagents loop - issues #21, #24, #25, #26, #27 closed; register-api health OK.

Next step

Day 11

We did not publish a day 10 entry (internal mail deployment). Day 11 documents KM0 Mail in production: mail.km0digital.com, DNS, deliverability, and partial OpenCloud integration. Meanwhile, try KM0 Cloud or see pricing.