23 Commits

Author SHA1 Message Date
Timo
e3a28b0a1c feat(billing): add weekly_pro subscription plan
Adds a 2.99 EUR/week plan with a 3-day free trial alongside the existing
monthly and yearly subscriptions.

Backend: weekly_pro joins the supported subscription products, the
available product list and the Discord sales label. No schema change --
weekly Pro grants the same 100 credits per calendar month as monthly Pro,
so no column is needed to tell the two apart.

Paywall: weekly and yearly are the two prominent cards, monthly is a
selectable row below them. Weekly is preselected. Cards only render when
their RevenueCat package exists, and the selection falls back to a
visible plan so the CTA can never buy a product that is not loaded.

Trial eligibility: checkTrialOrIntroductoryPriceEligibility now gates the
trial copy. Apple grants one intro offer per subscription group, so with
two trial products a second free-trial promise would otherwise be shown
to users who get charged immediately. Anything but a clear ELIGIBLE is
treated as no trial, as the RevenueCat SDK recommends.

Analytics: trial_started previously fired on every subscription purchase,
including monthly which never had a trial. It now fires only for products
that actually carry one. paywall_viewed distinguishes trial_enabled from
trial_eligible and reports selected_plan.

Tests: 9 new cases covering the entitlement path, credits, renewal period
and trial allowance.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-10 12:50:38 +02:00
018b751723 App copy 2026-07-27 16:42:04 +02:00
52c9dfb472 Onboarding 2026-07-16 17:09:00 +02:00
824ad69bf2 Download ping 2026-07-13 00:03:28 +02:00
5c48def4e1 TTikotok V4 2026-07-10 11:29:04 +02:00
6b57a2acfc Onboarding flow 2026-07-06 22:25:52 +02:00
99cd885833 Testflight 2026-07-06 15:33:53 +02:00
Timo Knuth
c24544a1b7 feat(app): buffer onboarding answers before auth, flush to profile after sign-up/login
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 13:50:22 +02:00
41327f9557 Fehler webhook discod 2026-07-02 23:28:30 +02:00
3505bc149d Webhook Discord 2026-07-02 18:38:04 +02:00
2658c37453 App chrash + seo 2026-05-10 22:37:01 +02:00
9386ae1be7 Onboarding 2026-05-08 13:00:30 +02:00
d37b49f1f6 Harte Paywall 2026-04-29 21:17:49 +02:00
86631a9bc0 Hard paywall 2026-04-28 20:35:53 +02:00
3e9f863121 Onboarding 2026-04-22 21:37:52 +02:00
77b98a3ebf Not a Plant Fehlermeldung 2026-04-17 13:12:36 +02:00
de8130686a feat: implement plant health scanning functionality with backend integration and UI support 2026-04-08 19:34:43 +02:00
c13eb331be feat: add data privacy settings screen and initialize backend service infrastructure 2026-04-03 19:41:04 +02:00
08483c7075 Slefhostet und postgres 2026-04-02 11:39:57 +02:00
b1c99893a6 Launch 2026-03-29 10:26:38 -05:00
Timo Knuth
05d4f6e78b Initial commit for Greenlens 2026-03-16 21:31:46 +01:00
Timo Knuth
98e5bfbafd fix: add auth endpoints to server, fix auth bypass and registration
- server/: commit server code for the first time (was untracked)
  - POST /auth/signup and /auth/login endpoints now deployed
  - GET /v1/billing/summary now verifies user exists in auth_users
    (prevents stale JWTs from bypassing auth → fixes empty dashboard)
- app/_layout.tsx: dual-marker install check (SQLite + SecureStore)
  to detect fresh installs reliably on Android
- app/auth/login.tsx, signup.tsx: replace Ionicons leaf logo with
  actual app icon image (assets/icon.png)
- services/authService.ts: log HTTP status + server message on auth errors

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-02 11:08:32 +01:00
024eec6686 feat: Initialize GreenLens project with core dependencies and structure
Sets up the project using Vite, React, and TypeScript. Includes initial configuration for Tailwind CSS, Gemini API integration, and local storage management. Defines basic types for plant data and UI elements. The README is updated with local development instructions.
2026-01-28 11:43:24 +01:00