LuchoBazz / express-ts-rest-starter-kit

Express.js + Postgresql + Prisma + Typescript Starter Kit
MIT License
1 stars 0 forks source link

Implement lemonsqueezy #48

Open LuchoBazz opened 1 day ago

LuchoBazz commented 1 day ago

https://www.lemonsqueezy.com/

https://www.youtube.com/watch?v=dHo7lvpU6gs

Claro, te puedo ayudar a diseñar una base de datos básica para gestionar suscripciones usando LemonSqueezy. Este diseño te permitirá almacenar información de clientes, productos, suscripciones y pagos.

Tablas principales Customers (clientes)

Almacena la información de los clientes suscriptores de tu plataforma. Plans (productos)

Almacena los productos o planes de suscripción que ofreces a través de LemonSqueezy. Subscriptions (suscripciones)

Registra las suscripciones activas o pasadas de los clientes a los productos. Payments (pagos)

Almacena el historial de pagos y transacciones de los clientes. Esquema de la base de datos plaintext Copy code Customers

---------
- id: UUID (Primary Key)
- email: string
- name: string (optional)
- lemon_squeezy_customer_id: string (ID del cliente en LemonSqueezy)
- created_at: datetime
- updated_at: datetime

Plans
--------
- id: UUID (Primary Key)
- name: string
- lemon_squeezy_product_id: string (ID del producto en LemonSqueezy)
- price: decimal (precio del producto)
- billing_cycle: enum ('monthly', 'yearly')
- created_at: datetime
- updated_at: datetime

Subscriptions
-------------
- id: UUID (Primary Key)
- customer_id: UUID (Foreign Key to Customers.id)
- product_id: UUID (Foreign Key to Plans.id)
- lemon_squeezy_subscription_id: string (ID de la suscripción en LemonSqueezy)
- status: enum ('active', 'cancelled', 'past_due', 'paused')
- start_date: datetime (fecha de inicio de la suscripción)
- end_date: datetime (fecha de finalización, si aplica)
- created_at: datetime
- updated_at: datetime

Payments
--------
- id: UUID (Primary Key)
- subscription_id: UUID (Foreign Key to Subscriptions.id)
- amount: decimal (cantidad pagada)
- currency: string (moneda del pago, ej. 'USD')
- payment_date: datetime (fecha del pago)
- lemon_squeezy_payment_id: string (ID del pago en LemonSqueezy)
- status: enum ('completed', 'failed', 'pending')
- created_at: datetime
- updated_at: datetime