Commit Graph

57 Commits

Author SHA1 Message Date
Giancarlo Buomprisco
f208332445 Update dependencies and version bump to 2.16.1 (#376)
* Update dependencies and version bump to 2.16.1

- Incremented package version from 2.16.0 to 2.16.1 in package.json.
- Updated various dependencies across multiple packages, including:
  - `@ai-sdk/openai` from `^2.0.38` to `^2.0.42`
  - `ai` from `5.0.56` to `5.0.59`
  - `@types/node` to `^24.6.1`
  - `@types/react` to `19.1.16`
  - `typescript` to `^5.9.3`
  - Updated `@stripe/react-stripe-js`, `@stripe/stripe-js`, and `stripe` to their latest versions.
- Ensured compatibility with the latest versions of dependencies to maintain stability and performance.

* Update package manager and TypeScript version in package.json

- Bumped `packageManager` from `pnpm@10.14.0` to `pnpm@10.17.1`.
- Updated `typescript` dependency from `^5.9.2` to `^5.9.3`.
- Adjusted `pnpm-lock.yaml` to reflect the changes in dependency versions.
2025-10-01 15:01:53 +08:00
Giancarlo Buomprisco
caf86ce09b chore(dependencies): update multiple packages to latest versions (#342)
- Upgraded `@types/react` to `19.1.12` and `@types/react-dom` to `19.1.9` for improved type definitions.
- Bumped `react-i18next` to `^15.7.3` for localization fixes.
- Updated `@manypkg/cli` to `^0.25.1` for dependency management improvements.
- Incremented `@sentry/nextjs` to `^10.8.0` and `stripe` to `^18.5.0` to incorporate recent enhancements.
- Adjusted `ai` to `5.0.28` and `@ai-sdk/openai` to `^2.0.23` for AI-related updates.
- Introduced sorting improvements and code examples in `DataTable` for server-side and client-side capabilities.
2025-08-29 22:25:36 +08:00
Giancarlo Buomprisco
1bb9022c9e Updated dependencies (#315)
* chore(dependencies): update package versions for improved compatibility

- Bumped `typescript` from `5.8.3` to `5.9.2` across multiple packages for enhanced type safety and features.
- Updated `@tanstack/react-query` from `5.83.0` to `5.84.1` to incorporate the latest improvements.
- Incremented `lucide-react` from `0.534.0` to `0.536.0` for better performance and compatibility.
- Updated `react-hook-form` from `7.61.1` to `7.62.0` to leverage new features and fixes.
- Incremented `@stripe/react-stripe-js` from `3.8.1` to `3.9.0`, `@stripe/stripe-js` from `7.7.0` to `7.8.0`, and `stripe` from `18.3.0` to `18.4.0` for enhanced functionality.
- Updated `@markdoc/markdoc` from `0.5.2` to `0.5.3` for better integration.
- Incremented `@sentry/nextjs` from `9.43.0` to `10.1.0` to utilize the latest features and improvements.

* chore(dependencies): update eslint-related packages for improved compatibility

- Updated `@typescript-eslint/parser` from `8.38.0` to `8.39.0` to leverage the latest features and fixes.
- Adjusted dependencies in `eslint-import-resolver-typescript` and `eslint-plugin-import` to reflect the updated parser version, ensuring better integration and compatibility across the codebase.
2025-08-05 03:47:49 +08:00
Giancarlo Buomprisco
50337298fd Dependencies Updates, Sidebar fixes, default plan, Radix single package (#297)
* Refactor Radix UI imports and update package dependencies, fix Sidebar "group" references, add default value to plan picker to preselect a plan
2025-07-11 17:57:27 +08:00
Giancarlo Buomprisco
856e9612c4 Improve billing plan lookup (#270)
Retrieve plan from Stripe/LS if not found in billing configuration. Useful for legacy plans.
2025-06-13 17:45:55 +08:00
Giancarlo Buomprisco
2b21b7bed4 Enhance EmbeddedCheckoutPopup to prevent default behavior on escape key down (#278)
- Added an onEscapeKeyDown handler to the EmbeddedCheckoutPopup component to prevent default actions when the escape key is pressed, improving user experience and accessibility.
2025-06-13 10:59:51 +08:00
Giancarlo Buomprisco
67663b32d9 Deps update + basic Claude.md and Agents.md (#268)
* Add comprehensive guides for OpenAI Codex and Claude Code

- Introduced `AGENTS.md` and `CLAUDE.md` files to provide detailed guidance for working with OpenAI Codex and Claude Code within the project.
- Updated project architecture and common commands sections to reflect the multi-tenant SaaS application structure and core technologies.
- Enhanced documentation on database operations, schema management, security guidelines, and development patterns to improve developer onboarding and project maintainability.

Additionally, updated various package dependencies across the codebase to their latest versions, ensuring compatibility and performance improvements.
2025-06-06 13:10:14 +08:00
gbuomprisco
804fb7fbe3 Handle trial periods for existing customers in Stripe checkout
Updated logic to skip trial periods for existing customers by setting `trialDays` to undefined when a customer is already provided. Modified subscription data and trial settings to use the adjusted `trialDays`. Additionally, added handling for metered billing line items and included a sample trial period configuration in the billing sample config.
2025-05-15 23:42:39 +08:00
Giancarlo Buomprisco
f66c269e79 Upgrade dependencies across packages for stability and features. (#250)
Updated various dependencies, including `@tanstack/react-query`, `@types/node`, `react-i18next`, and more to their latest compatible versions. This improves compatibility, fixes potential bugs, and ensures access to the latest features.
2025-05-01 17:37:35 +08:00
Giancarlo Buomprisco
903ef6dc08 Update Stripe SDK to v18 and dependencies (#236)
* Update Stripe SDK and dependencies

1. Upgrade `stripe` package from version 17.7.0 to 18.0.0 in `package.json`.
2. Update `STRIPE_API_VERSION` in `stripe-sdk.ts` to '2025-03-31.basil'.
3. Refactor `StripeWebhookHandlerService` to retrieve subscription details using Supabase client, ensuring compatibility with the new Stripe version.
4. Introduce helper methods `getPeriodStartsAt` and `getPeriodEndsAt` for better handling of subscription periods based on the Stripe API changes.

These changes enhance the integration with the latest Stripe API and improve the overall reliability of the billing service.

* Refactor billing payload builders to remove config dependency

Removed direct dependency on `BillingConfig` in subscription payload builders.

Introduced `PlanTypeMap` to streamline plan type resolutions. Updated webhook handlers and event processing functions to handle plan types more efficiently and improve extensibility.

* Refactor Stripe subscription handling for improved accuracy
2025-04-22 10:42:12 +08:00
Giancarlo Buomprisco
7c4dd23e5d FIx metered subscriptions (#224) 2025-03-29 10:34:46 +08:00
Giancarlo Buomprisco
d14d19f330 Dependencies + Next.js 15.2.0 (#193)
- Updated All dependencies
- Updated Next.js 15.2.0
- Updated Stripe API version
- Remove Sentry replayIntegration by default
- Added IMPROVEMENT.yml file
- Bump version to 2.5.1
2025-03-02 11:41:12 +08:00
Giancarlo Buomprisco
e0975da387 Add DialogTitle using a hidden class to prevent runtime warnings (#178) 2025-02-20 08:40:34 +08:00
gbuomprisco
d799f54ede Update dependencies. Fixed linting issues discovered after update. 2025-01-28 10:41:05 +07:00
Giancarlo Buomprisco
9bdab95909 Do not use "line_items" expand when getting the subscription object (#101) 2025-01-03 11:47:39 +08:00
gbuomprisco
970f901d05 Updated Dependencies (Next.js 15.1.2) 2024-12-23 08:35:34 +08:00
gbuomprisco
ae9c33aea4 Fix Stripe embedded checkout height using inline styles instead of a TW class 2024-12-11 16:03:13 +08:00
Giancarlo Buomprisco
5cc936b982 Dependencies Updates (#83)
* Keystatic: Use the correct variable when fetching content from GitHub
* Revert default layout style
2024-11-22 15:55:15 +08:00
gbuomprisco
27ef8f7510 1. Rebuild lock fle
2. Fix import
3. Update Stripe API version
2024-11-05 23:03:49 +08:00
Giancarlo Buomprisco
5b9285a575 Next.js 15 Update (#26)
* Update Next.js and React versions in all packages
* Replace onRedirect function with next/link in BillingSessionStatus, since it's no longer cached by default
* Remove unused revalidatePath import in billing return page, since it's no longer cached by default
* Add Turbopack module aliases to improve development server speed
* Converted new Dynamic APIs to be Promise-based
* Adjust mobile layout
* Use ENABLE_REACT_COMPILER to enable the React Compiler in Next.js 15
* Report Errors using the new onRequestError hook
2024-10-22 14:39:21 +08:00
Giancarlo Buomprisco
8f5690b959 Allow customers to subscribe for a free trial without the need to enter their CC details (#68) 2024-10-12 12:19:46 +08:00
gbuomprisco
b912e6376b Allow restricted keys in Stripe line item IDs 2024-10-02 22:16:23 +02:00
gbuomprisco
f2118e97f8 Stripe: allow passing custom parameters to the Checkout session 2024-09-20 18:38:44 +02:00
gbuomprisco
089fd37ece Refactor Supabase type imports for improved clarity
Replaced specific object paths with generic type helpers across several files to enhance readability and maintainability. This change standardizes the import patterns and type definitions for database tables and enums.
2024-08-16 12:48:29 +02:00
gbuomprisco
23154c366d Remove Cloudflare mailer implementation, update dependencies and updated code to reflect stricter EsLint settings
Deleted CloudflareMailer class and its implementation from the mailers package. Updated dependencies across various packages, converting certain imports to use `type` only, and bumped versions for packages like `react-query`, `lucide-react`, and others.
2024-08-01 14:57:55 +02:00
gbuomprisco
6e218dc47b Update multiple packages and fix warning logs indentation
This commit includes the upgrade of multiple packages to their latest versions, including "@supabase/ssr", "stripe", "@playwright/test", "@typescript-eslint/eslint-plugin" and "@typescript-eslint/parser". It also ensures consistent warning logs indentation in route.ts.
2024-06-25 09:43:17 +08:00
gbuomprisco
9294e1c823 Refactor code for readability and order
Made several changes across different files primarily focusing on readability. Arranged CSS classes in a standardized order for easier reading and maintenance. Arranged and formatted import lines, function declarations, and component return statements for legibility. Removed unnecessary React imports in some files.
2024-06-21 17:58:20 +08:00
gbuomprisco
ccf3b38b06 Refactor stripe subscription retrieval process
The process of retrieving stripe subscriptions has been updated in the 'stripe-webhook-handler.service.ts' file. Instead of expanding to 'line_items', the process now retrieves just the subscription and proceeds to build the payload. The refactor aims to improve the performance and simplicity of the subscription retrieval process.
2024-06-21 13:04:23 +08:00
gbuomprisco
95fa8fb7c6 Add handling for paid invoices in billing services
In response to paid invoices, a new callback method has been introduced in the billing services. This feature includes changes in billing-webhook-handler.service.ts, lemon-squeezy-webhook-handler.service.ts, and other related files. The new method fetches and handles paid invoice information from Stripe and LemonSqueezy subscriptions.
2024-06-20 00:02:25 +08:00
Giancarlo Buomprisco
6a339a4b02 Billing get subscription enhancement (#36)
* Filter out metered line items from billing schema

This update refines the process of creating a billing schema by filtering out metered line items. The change is necessary as metered line items can be shared across different plans, potentially causing conflicts or duplicates in the schema.

* Update packages to newer versions

This update upgrades several packages across multiple project files to their latest version. These packages include "supabase-js", "react-query", "react-hook-form", and "pnpm". The commit ensures the project is up-to-date with recent package versions, potentially benefiting from bug fixes, new features, and performance improvements.

* Add subscription retrieval in billing services

Added a function to retrieve subscription info in both Stripe and LemonSqueezy billing services. To accomplish this, new methods were added to related services and types. This allows querying specific subscription data based on its id, and throws an error if it fails. Furthermore, PayloadBuilder classes were created to systematically build the subscription payload.

* Remove account ID retrieval from Lemon Squeezy billing service

The code that was querying the database to fetch the accountId has been removed from lemon-squeezy-billing-strategy.service.ts. It was unnecessary as the Lemon Squeezy API does not provide account ID and therefore it is always left empty. Also, adjustments have been made in billing-strategy-provider.service.ts to reflect that the target account ID can be optional.

* Extract 'next' parameter from callback URL

The update allows for the extraction of the 'next' parameter from the callback URL. If such a parameter is available, it is subsequently added to the search parameters. The enhancement improves URL parameter handling in the authentication callback service.

* Refactor URL redirection in auth-callback service

The update simplifies the redirection logic in the authentication callback service. This is achieved by setting the url pathname directly to the redirect path, instead of first setting it to the callback parameter. Moreover, the code handling the 'next' path has also been streamlined, setting the url pathname to the next path when available.
2024-06-19 23:00:00 +08:00
gbuomprisco
bb6f26f240 Update and refactor billing services and types
Several updates and refactorings have been made to the billing services and types. The "onInvoicePaid" method and some types related to line items have been removed. The comments and arguments for the "verifyWebhookSignature" and "handleWebhookEvent" methods in service classes have been updated for clarity. The "onEvent" method's arguments have also been adjusted in multiple places to improve consistency.
2024-06-11 23:35:32 +08:00
giancarlo
390e01535b Remove 'invoice.paid' event handler in Stripe webhook service
The 'invoice.paid' event has been removed from the Stripe webhook handler service. The corresponding method handleInvoicePaid and the case in the switch statement have been deleted.
2024-06-07 01:46:36 +07:00
giancarlo
3cf3c263bc Fixed issue with one-time payments; Updated packages 2024-05-18 22:56:57 +07:00
giancarlo
09c24346a6 Update logging and return statements in billing services
The commit modifies the logging level in the billing services from 'error' to 'info'. Moreover, the error statement has been modified to clarify that the subscription cancellation has possibly been done by the user. Also, it reduces redundant imports and beefs up the return structure in stripe-billing-strategy.service.
2024-05-15 11:28:37 +07:00
Giancarlo Buomprisco
4e50094808 Fix upsert billing (#24)
This commit updates the product_id and variant_id in both the subscription_items and order_items in the billing tests. Updates also include adding new checks to verify these changes. Changes are reflected in corresponding SQL files for personal and team billing subscriptions/orders tests.
2024-05-15 11:08:19 +07:00
giancarlo
dbce7e38ae Refactor route handlers and CMS clients
Refactored the route handlers to use a new `enhanceRouteHandler` function for better control over request handlers and user authentication. CMS clients are now created using factory functions for better encapsulation and control over instance creation. Renamed `client.ts` in 'keystatic' to `keystatic-client.ts`.
2024-05-02 12:37:58 +07:00
giancarlo
3efbf6029f Optimize code for accounts and roles management
The large update includes optimization for account and role management. The code has been revised for better readability and efficiency. Changes include formatting updates and enhancements to the creation and handling of accounts, roles, and memberships. Privacy settings have also been adjusted to provide more secure handling of user data. Code comments have been updated for better understanding of the functions.
2024-04-28 12:55:01 +07:00
giancarlo
07deb28e12 1. Updated packages
2. Added comments to schema
3. Minor API updates
2024-04-27 14:39:28 +07:00
giancarlo
8d04624b1d Add queryUsage method to billing services
A new method, queryUsage, has been added to the billing strategy classes and the gateway service to offer usage querying capabilities for Stripe and Lemon Squeezy. QueryBillingUsageSchema has also been introduced in the schema-related changes. Changes also include updates to the functions' comment descriptions. A minor tweak was made to the Button and Link components in the `faq/page.tsx' file.
2024-04-25 11:34:47 +07:00
giancarlo
70da6ef1fa Adjusted Per seat billing and added example to the sample schema 2024-04-22 22:48:02 +08:00
giancarlo
cad729670f Update dependencies and import dynamic method
This commit updates multiple dependencies in the pnpm-lock.yaml file and imports the dynamic method from 'next/dynamic' in the site-header-account-section.tsx file. These updates are part of routine maintenance and improvement of the codebase. The import allows for dynamic imports, which can enhance performance.
2024-04-16 20:56:18 +08:00
giancarlo
ebb8fc08fe Add custom handlers for billing events
The code introduces custom handlers for different billing events like subscription deletion, subscription update, checkout session completion, payment successes and failures, invoice payment,  and a generic event handler. These customer handlers allow consumers to add their own custom behaviors when certain billing events occur. This flexibility can be utilized to better adapt the system to various business requirements and rules. Also, the invoice payment event and a generic event handler were added.
2024-04-16 11:55:43 +08:00
giancarlo
4e305bf8c9 Update UI, improve E2E tests and modify trial period configuration
The code changes incorporate UI updates for better usability and user experience. E2E test scripts(in `user-billing.spec.ts` and `team-billing.spec.ts`) were also updated for improved efficiency and accuracy, primarily replacing 'Active' status check with 'Trial'. Changes have been made in the trialDays configuration, with the term 'trialPeriod' now replaced by 'trialDays' across different components. Notably, a new error handling case is included in `lemon-squeezy-billing-strategy.service.ts` for failed subscription cancellation attempts.
2024-04-15 01:18:27 +08:00
giancarlo
d8e44772f2 Add cancellation alert and refactor subscription handling
Added a 'Subscription Cancelled' alert in the billing component to improve visibility of subscription status. Also, removed an unnecessary check for target_account_id in billing-event-handler service as it lead to early exits. Fixed a typo in stripe-webhook-handler service for better consistency in naming conventions.
2024-04-14 19:16:18 +08:00
giancarlo
a549d2d08f Add detailed error messages for missing environment variables
The commit adds detailed error messages for missing environment variables across different configuration files. It updates the zod schema validations in different files, such as feature-flags.config.ts, personal-accounts-server-actions.ts, and others to provide more informative error messages when environment variables are not provided.
2024-04-14 18:50:09 +08:00
giancarlo
7dcd688ca9 Update user billing flow and improve error handling
Updated the user billing process to add a return to home function and redirect users to their specific account page after payment. Enhanced error handling in the billing event handler to handle scenarios where no account id is found in the subscription. Removed unused billing page object from the stripe page object.
2024-04-14 18:25:33 +08:00
giancarlo
d078e0021c Add end-to-end tests for user and team billing features
This commit introduces end-to-end tests for the user and team billing features. It also enhances existing billing configurations, logging, and error handling mechanisms. Refactoring has been done to simplify the code and make it more readable. Adjustments have also been made in the visual aspects of some components. The addition of these tests will help ensure the reliability of the billing features.
2024-04-14 17:15:04 +08:00
giancarlo
5b837d2fa8 Update UI style and enhance billing services
Several changes have been made in this commit. Firstly, updates have been made to the site-header-account-section and the pricing-table components to enhance UI aesthetics. Secondly, billing services have been significantly improved. A new method for retrieving plan information by an ID has been introduced. This method is available for all strategy services, including Stripe and Lemon-Squeezy. Furthermore, the way context and logging are handled during the billing process has been streamlined for better readability and efficiency.
2024-04-11 10:29:52 +08:00
giancarlo
37c5e3ed76 Refactor logger usage and add discount field to checkout
This commit refactors the logger usage in various files to make it more streamlined and consistent. It also introduces a new 'enableDiscountField' feature for the checkout that can be toggled on specific products. This allows customers to apply discounts at checkout if the product or subscription plan has the 'enableDiscountField' set to true.
2024-04-10 22:04:38 +08:00
giancarlo
a9eaaafd3d Update packages and refactor logging in diverse services
This commit updates diverse packages such as "@makerkit/data-loader-supabase-core" and "@makerkit/data-loader-supabase-nextjs" to the new versions in the package.json files. Also, several refactorings were done in logging within services and loaders by progressing 'server-only' imports and improving context handling. Additionally, type annotations have been added to several exported functions for better code readability and maintainability.
2024-04-09 17:23:48 +08:00