Unlock subscriptions with the right payment path.
Taiwlin is a subscription access page for logged-in users where they must choose between Pay-as-you-go or Bayar di awal before activation. It helps businesses control subscription access based on payment status, with instant activation for prepay customers and automatic activation for usage-based customers with per-transaction fees.
Subscriber Dina, 29 - Dina is a returning user who logs in to manage access to a paid service. She wants the fastest way to get active without confusion about payment terms.
Operations Admin Rafi, 38 - Rafi manages subscription access and payment exceptions. He needs a reliable system that reflects payment status and minimizes manual follow-up.
Finance Lead Sari, 41 - Sari cares about revenue recognition and transaction fees. She needs the plan logic to produce predictable billing behavior and clean reporting.
Dina logs in expecting to unlock her subscription quickly, but she is met with a clear choice instead of a confusing pricing wall. She sees Bayar di awal for an upfront commitment and Pay-as-you-go for immediate access with a per-transaction fee, so she chooses the option that matches how often she plans to use the service.
She selects Bayar di awal, pays, and the page updates to Active as soon as payment status is confirmed. Because the system only activates authenticated users and uses payment-state rules automatically, Dina gets access in less than two minutes without waiting for manual approval.
For the business, that means fewer support requests, fewer unpaid activations, and cleaner billing records. The subscription page becomes both a conversion point and a reliable access control layer.
Team & resourcing - Small team - 2 engineers, 1 designer, part-time PM, shared QA support
Paste this into Cursor, Bolt, Lovable, or v0 to start building.
Build a SvelteKit subscription access page called Taiwlin. Product summary: Authenticated users can access a subscriptions page with exactly two plan options: Pay-as-you-go and Bayar di awal. The page must be protected so only logged-in users can view it. Bayar di awal becomes active only when payment status is confirmed active. Pay-as-you-go becomes active immediately after confirmation, but each transaction must include a visible fee per transaction. Core screens and flows: 1. Login gate with redirect back to subscriptions after authentication 2. Subscriptions page showing two selectable plan cards 3. Checkout/payment status panel for Bayar di awal 4. Immediate activation confirmation for Pay-as-you-go 5. Subscription status and transaction history section 6. Error, pending, failed, expired, and retry states Tech stack: Use SvelteKit, TypeScript, Tailwind CSS, Prisma, PostgreSQL, and server-side auth protection. Use Auth0 or Clerk for authentication. Mock payment provider integration with a clean service layer that can later connect to Midtrans or Xendit. Add Sentry-compatible error handling hooks. Data model: User id, email, auth provider id Subscription id, user id, plan type, status, activated at, expires at, created at Payment id, subscription id, provider, provider reference, status, amount, fee, currency, created at, updated at Transaction id, subscription id, amount, fee, description, created at AuditEvent id, user id, event type, metadata json, created at Behavior requirements: Protect the route on the server, redirect unauthenticated users to login, and preserve return URL. Render two plan cards with single-select behavior. For Bayar di awal, create a pending subscription and update to active only after verified payment status becomes active via webhook or polling. For Pay-as-you-go, activate immediately and record a fee per transaction. Show clear status chips, loading skeletons, and accessible buttons. Prevent duplicate submissions and handle payment failure, pending, and retry cases. Log analytics events for page view, plan select, checkout started, payment status changed, subscription activated, and support clicked. Implementation notes: Use server load functions and actions for protection and mutations. Use idempotent webhook processing. Add reusable UI components for plan cards, status badges, and transaction rows. Create seed data and simple test coverage for auth gate and activation rules. Generate production-ready code with sensible folder structure, accessible markup, and mobile-first layout.
Design by The Resonance | Powered by GPC – The AI Transformation Company