vek1 — atividade recente
Atividade recente
Sprint 2026-05-20 → 2026-05-21 — Billing end-to-end + landing 3D + pricing premium
Implementação completa das 3 fases do pricing (PRs A→B→C + UI), redesign da landing com 3D real CSS, reescrita do copy pra falar com lojista, premium positioning + páginas comparativas vs concorrentes.
Fase 1 do pricing (backend) — vek1#73 + vek1-api#24 + vek1-api#25
- vek1 #73 (
eb74c26) Schema billing + Stripe seed + beta migration- 4 tabelas novas:
subscription_plans,company_subscriptions,company_billing_settings,token_topups - Alter
token_usage: +billable, +topup_id, +reported_to_stripe_at - Scripts:
seed-stripe-plans.ts(idempotente, cria Meter + 3 Products + 6 Prices),migrate-beta-companies.ts(legacy →past_due) - Indexes em
recreate-indexes.ts - Aplicado em prod (Postgres VPS + Stripe test mode)
- 4 tabelas novas:
- vek1-api #24 (
7bf82e2) Billing service + endpoints + Stripe webhookservices/stripe_client.pysingleton +services/billing_service.pycomcheck_quota_or_block(state machine 3-day grace)routers/billing.py(10 endpoints: plans, summary, subscriptions, setup-intent, topup, settings, invoices, debug triggers)routers/stripe_webhook.pycom signature HMAC validation pros 6 events- 25 service tests + 18 endpoint tests + 7 webhook tests + 4 E2E reais Stripe
- vek1-api #25 (
660b739) /chat enforcement + apscheduler + emails Resendservices/chat_billing.pyextraído (resolve_company_id, quota_block_response, record_token_usage)services/billing_emails.py(cota_warning_80, grace_started, grace_expired, charge_succeeded/failed)- apscheduler in-process cron 5min reportando usage_record pro Stripe
- 223 tests passing + 4 E2E
Fase 2 do pricing (frontend UI) — vek1#74
- vek1 #74 (
b39a5d8) UI completa: /settings#billing + /pricing + signup wizardapiClient.billing(10 funções tipadas)app/actions/billing-actions.ts(server actions com validação)BillingSectioncomponente (planos + uso + cartão + topup + plan switch + invoices)AddCardModal(SetupIntent + Stripe Elements)TopupModal(PaymentIntent off-session ou Elements)PlanCompareModal(3 tiers comparativos)/pricingpágina pública com tiers + bônus 50% callout/onboarding/billingwizard 3-step (plano → cartão → ativar)company-registration.tsxredireciona pós-signup pra/onboarding/billing- Stripe Elements via
@stripe/stripe-js+@stripe/react-stripe-js
Landing redesign + copy
- vek1 #75 (
f66b8e6) Landing 3D Industrial Atelier- Substitui landing antiga (cards genéricos) por composição editorial maximalist
- 3D real CSS (
perspective+preserve-3d, sem Three.js) - Hero phone diorama com mouse parallax (
pointermove→ CSS vars) - 6 floating chips com
--z translateZ+ animationfloat-3d - Iso grid floor no backdrop
- Pricing 3D (Pro elevated
translateZ(35px)) - TiltCards no features
Instrument Serifitalic display + IBM Plex Mono labels- Helpers globais:
.editorial,.iso-stage,.float-3d,.stencil,.glow-primary,.reveal-up
- vek1 #77 (
afc...) Copy rewrite — remove jargão técnico- Status: "v3.0 · agentes RAG" → "ativo · pra lojistas no whatsapp"
- Marquee: stack tech (deepseek, bge-m3, postgres…) → tipos de negócio (petshops, salões, padarias…)
- Stats: stat fabricado "6.4× vs CRM" → value prop real "PIX confirmado direto no chat"
- Features: "function calling" → "Não só responde — vende de verdade"
- Reescrito tom: cliente PME, não dev
- vek1 #78 Hero 2-col + CTAs aware logged + /billing internal page
- CTAs detectam sessão (logged → "Ir pro painel" / anon → "Criar conta")
- Grid
md:grid-cols-2em vez de só lg+ (phone não sobrepõe texto em md) - Phone scene responsive: h-[400px] md:h-[460px] lg:h-[520px]
/billingpágina dedicada (era seção em /settings) + sidebar link
- vek1 #79 Comparativo + calculadora na /pricing
ComparisonTable3-col (vek vs chatbot tradicional vs atendente humano) — não nomeia concorrentesCostCalculatorclient interactive (salário CLT + headcount → economia)- Plano sugerido auto-pick
Pricing premium + páginas vs concorrentes
- vek1#80 Premium positioning (Stripe Prices v2)
- Starter R$ 79 → R$ 199 / 500k → 1M tokens / overage R$ 25 → R$ 39
- Pro R$ 299 → R$ 599 / overage R$ 18 → R$ 28
- Business R$ 899 → R$ 1.499 / overage R$ 12 → R$ 20
- Lookup keys versionados
_v2(Prices Stripe imutáveis); v1 antigos mantidos pra subs existentes - DB atualizada via SSH (script local timeout TCP firewall)
- vek1#80 Páginas SEO /pricing/vs/[slug]
lib/competitors.tscom 6 concorrentes: octadesk, socialhub, blip, zenvia, chatguru, wati- Dynamic route com generateStaticParams + generateMetadata SEO-otimizada
- Cada página: cards lado-a-lado preço, 5 advantages, seção "quando faz sentido escolher X" (sinal de honestidade), calculadora reaproveitada, cross-links
- Footer /pricing tem 6 chips discretos linkando pras vs pages
Fixes pricing infra
- vek1#76 Fallback hardcoded na /pricing quando DB inacessível
- vek1#81 Fail-fast 3s timeout (era 30s default) + console.warn (era error) — UX melhor em dev sem firewall liberado
- vek1-api #26 (
b277363) Endpoint público/billing/plans-public—/pricingconsome via HTTPS em vez de TCP direto Postgres - vek1#82
/pricingmigrada de Drizzle direto pra fetch via vek1-api — funciona em qualquer rede (HTTPS 443 nunca bloqueado)
Pequenos UX
- vek1#83 + vek1#84
/logine/registersão páginas simples — removido redirect/banner quando logado (over-engineered)
Sprint anterior 2026-05-15 → 2026-05-20 — Industrial Linear, Orders, Leads, api-first cutover
Documentado abaixo em resumo (era sprint focado em features + cutover arquitetural).
UI Industrial Linear
- PR #46-47 redesign agent settings + Evolution v2.3.6 align (dropou
evolution-manager-library) - PR #49 Industrial Linear redesign + real dashboard
- PR #57-58 sweep restante das pages
Leads + LLM enrichment
- PR #48 lead tracking + LLM-powered profile enrichment (
leads,lead_events,ensureLead,enqueueExtraction,buildLeadProfileSummary+ embedding)
Orders + payments
- PR #50 PIX (AbacatePay) + cash on delivery flow
- PR #51
/settingspage (account, company, store payment) - PR #59 orders real-time via SSE + Postgres LISTEN/NOTIFY
- PR #60-61 create_order fixes (drop fake product_ids + full envelope pra getBase64FromMediaMessage)
WhatsApp robustness
- PR #52-56 webhook Evolution nunca 500 + LID privacy handling (senderPn, key.remoteJidAlt)
Stock sync + audit
- PR #62-63 bidirectional stock sync (HMAC) + hardening
- PR #64
audit_logtable + indexes
Cutover api-first
- PR #65-71 vek1 fala 100% via HTTP com vek1-api; Better Auth via HTTP adapter;
lib/supabase.tsvirou shim snake_case - PR #72 forgot password Resend via vek1-api webhook scope
Hot fixes pós-cutover
72b72c4,5ed8b87,e6c6ff0,30e1afaauth-adapter camelKeys/snake_case/findMany/updateMany
Estado do remote (snapshot 2026-05-21)
- HEAD pós PR #84 —
/logine/registerplain - Branch:
main, sync com origin - Pricing live em prod com premium positioning
- 6 páginas /pricing/vs/[slug] prerendered
- SEO: layout metadata + sitemap.xml + robots.txt + JSON-LD SoftwareApplication
- Stripe webhook configurado pros 6 events em https://vek1-api.kodama.solutions/webhooks/stripe
- vek1-api
/billing/plans-publicendpoint público