Skip to content

Feat/add new pricing#137

Merged
Siumauricio merged 7 commits intomainfrom
feat/add-new-pricing
Feb 27, 2026
Merged

Feat/add new pricing#137
Siumauricio merged 7 commits intomainfrom
feat/add-new-pricing

Conversation

@Siumauricio
Copy link
Contributor

@Siumauricio Siumauricio commented Feb 19, 2026

Greptile Summary

This PR refactors the pricing page to introduce a cleaner, more organized pricing structure with three tiers (Hobby, Startup, Enterprise) and an Agency plan option. The changes include creating a comprehensive feature comparison table, adding a new partners page with partner programs, and preserving the old pricing component as pricing-legacy.tsx.

Key changes:

  • Simplified pricing component with clear tier-based pricing (Hobby, Startup, Enterprise, Agency)
  • Created new PricingFeatureTable component to display feature comparison across plans
  • Added comprehensive pricing-data.ts with 100 features organized into 11 categories
  • Created new /partners page with Agency Plan, Referral Program, and Reseller Program information
  • Added PartnerForm component for partner inquiries

Critical issues found:

  • Annual pricing calculations are incorrect - they compute total annual costs but display them as monthly rates (lines 83, 85 in pricing.tsx)
  • TypeScript type error in PricingFeatureTable.tsx line 32

Confidence Score: 2/5

  • This PR has critical pricing calculation bugs that will display incorrect pricing to customers
  • The annual pricing calculations (lines 83 and 85) are mathematically incorrect and will show wrong prices to users. For example, Hobby annual displays $43.20/mo when it should show $3.60/mo. These are critical business logic errors that directly impact revenue and customer expectations
  • Pay close attention to apps/website/components/pricing.tsx lines 83 and 85 - the pricing calculations must be fixed before deployment

Last reviewed commit: f5407ff

- Introduced a new Partners page with program details and a call-to-action for potential partners.
- Implemented a PartnerForm component for user inquiries, including validation and submission handling.
- Added pricing feature data structure and a PricingFeatureTable component to display pricing options and features.
- Updated UI components for better integration with the new features.
- Changed "Starting @" to "Starting at $" for improved clarity in the Pricing component.
Copy link

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

7 files reviewed, 4 comments

Edit Code Review Agent Settings | Greptile

acc[row.category].push(row);
return acc;
},
{} as Record<string, typeof pricingFeatures>,
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the type Record<string, typeof pricingFeatures> is incorrect - should be Record<string, FeatureRow[]> since typeof pricingFeatures represents the entire array type, not an array of FeatureRow

Suggested change
{} as Record<string, typeof pricingFeatures>,
{} as Record<string, FeatureRow[]>,

{ category: "Security", feature: "UFW Firewall Guidance", hobby: true, startup: true, enterprise: true },
// User and Organization Management
{ category: "User and Organization Management", feature: "User Management", hobby: "1 user", startup: "Unlimited", enterprise: "Unlimited" },
{ category: "User and Organization Management", feature: "Organizations", hobby: "1 Organizations", startup: "3 Organizations", enterprise: "10+ Organizations" },
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"1 Organizations" should be "1 Organization" (singular)

Suggested change
{ category: "User and Organization Management", feature: "Organizations", hobby: "1 Organizations", startup: "3 Organizations", enterprise: "10+ Organizations" },
{ category: "User and Organization Management", feature: "Organizations", hobby: "1 Organization", startup: "3 Organizations", enterprise: "10+ Organizations" },

const [openPartnerModal, setOpenPartnerModal] = useState(false);

const hobbyMonthlyPrice = 4.5;
const hobbyAnnualPrice = hobbyMonthlyPrice * 12 * 0.8; // 20% discount
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hobbyAnnualPrice calculation is incorrect - it computes the total annual cost ($43.20) but displays it as "/mo" on line 174. Should be hobbyMonthlyPrice * 0.8 (which equals $3.60/mo) to show the discounted monthly rate

Suggested change
const hobbyAnnualPrice = hobbyMonthlyPrice * 12 * 0.8; // 20% discount
const hobbyAnnualPrice = hobbyMonthlyPrice * 0.8; // 20% discount on monthly rate

const hobbyMonthlyPrice = 4.5;
const hobbyAnnualPrice = hobbyMonthlyPrice * 12 * 0.8; // 20% discount
const startupBaseMonthly = 15;
const startupBaseAnnual = startupBaseMonthly * 12 * 0.8;
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

startupBaseAnnual calculation is incorrect - same issue as hobbyAnnualPrice. It computes total annual cost ($144) but displays as "/mo" on line 228. Should be startupBaseMonthly * 0.8 (which equals $12/mo) for the discounted monthly rate

Suggested change
const startupBaseAnnual = startupBaseMonthly * 12 * 0.8;
const startupBaseAnnual = startupBaseMonthly * 0.8;

- Eliminated the hosting type selection (cloud vs self-hosted) from the Pricing component to streamline the user experience.
- Adjusted the layout to maintain visual consistency and ensure clarity in pricing presentation.
- Renamed variables for clarity, changing hobbyAnnualPrice to hobbyAnnualTotal and introduced hobbyAnnualPerMonth for monthly display.
- Adjusted the pricing display to show annual totals and monthly equivalents more clearly, enhancing user understanding of pricing options.
- Added new sections for Cloud and Self Hosted pricing options to provide users with clearer choices.
- Included descriptions for each option to improve understanding of hosting solutions.
- Adjusted layout to accommodate the new pricing display while maintaining visual consistency.
- Added logic to unwrap nested OpenAPI specifications from migrated APIs, improving compatibility with various API structures.
- Updated the condition for writing the fixed schema to include unwrapped status, ensuring all necessary changes are saved.
@Siumauricio Siumauricio merged commit aa524f5 into main Feb 27, 2026
1 check failed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant