Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Onboarding redo #3302

Open
wants to merge 26 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
091103b
Add onboarding flow for new organizations
colegottdank Feb 17, 2025
96b0908
Refactor onboarding UI and add form validation
colegottdank Feb 18, 2025
8466598
Merge remote-tracking branch 'origin/main' into onboarding-redo
colegottdank Feb 18, 2025
5139814
Refactor Onboarding Flow with Zustand Store and Modular Components
colegottdank Feb 19, 2025
786ebaf
Add Stripe Embedded Checkout and UI Mode Support
colegottdank Feb 19, 2025
c7ac795
Enhance Onboarding Integration with Proxy and Async Options
colegottdank Feb 20, 2025
c52871c
Refactor Integration Pages with Shared CodeIntegrationPage Component
colegottdank Feb 20, 2025
1cd416e
Fix code snippet generation and improve error handling
colegottdank Feb 20, 2025
7f174c9
Update code snippets with generic placeholders for Azure and OpenAI i…
colegottdank Feb 20, 2025
bf9f0c8
Enhance Onboarding and Organization Creation Flow
colegottdank Feb 21, 2025
d756bad
Add onboarding_status column and update organization onboarding flow
colegottdank Feb 21, 2025
c392a81
Set organization cookie during main org creation
colegottdank Feb 21, 2025
2fefa2b
Implement Starter Organization Creation and Onboarding Status Update
colegottdank Feb 22, 2025
14aa166
Refactor OnboardingHeader to Support Flexible Child Rendering
colegottdank Feb 22, 2025
a5faaa6
Add navigation to dashboard for "Do it later" button in integration page
colegottdank Feb 22, 2025
3d4e6e9
Improve Onboarding UI Responsiveness and State Management
colegottdank Feb 22, 2025
a7f20b4
init the name
colegottdank Feb 22, 2025
1b9d405
Refactor Onboarding Flow and Org Context Management
colegottdank Feb 22, 2025
7f9f257
Add is_main_org flag to organization types and update related components
colegottdank Feb 22, 2025
a4e55f6
Improve Help Dropdown and External Link Interactions in Onboarding
colegottdank Feb 22, 2025
3a295b5
Clean up unused imports and replace apostrophe escape characters
colegottdank Feb 23, 2025
8808a42
Simplify Billing Page by Removing Unused Hooks and Imports
colegottdank Feb 23, 2025
da385e2
Refactor Onboarding Type Definitions and Imports
colegottdank Feb 23, 2025
e83b30d
Update Stripe API Version to Latest Release
colegottdank Feb 23, 2025
70244e5
Update Stripe API Version to 2025-01-27.acacia
colegottdank Feb 23, 2025
bf8f926
Merge remote-tracking branch 'origin/main' into onboarding-redo
colegottdank Feb 23, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -442,7 +442,7 @@ const featureGroups: FeatureGroup[] = [
enterprise: true,
},
{
name: "HIPPA",
name: "HIPAA",
hobby: false,
pro: false,
team: true,
Expand Down
2 changes: 1 addition & 1 deletion bifrost/app/components/templates/pricing/TeamCard.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ const TeamCard: React.FC = () => {
"Everything in Pro",
"Unlimited seats",
"Prompts, Experiments and Evals.",
"SOC-2 Compliance & HIPPA",
"SOC-2 Compliance & HIPAA",
"Dedicated Slack channel",
].map((feature, index) => (
<div key={index} className="px-2 py-1.5 flex items-start gap-2">
Expand Down
92 changes: 86 additions & 6 deletions bifrost/lib/clients/jawnTypes/private.ts
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,9 @@ export interface paths {
"/v1/organization/create": {
post: operations["CreateNewOrganization"];
};
"/v1/organization/create/starter": {
post: operations["CreateStarterOrganization"];
};
"/v1/organization/{organizationId}/update": {
post: operations["UpdateOrganization"];
};
Expand Down Expand Up @@ -270,6 +273,9 @@ export interface paths {
"/v1/organization/setup-demo": {
post: operations["SetupDemo"];
};
"/v1/organization/update_onboarding": {
post: operations["UpdateOnboardingStatus"];
};
"/v1/log/request": {
post: operations["GetRequests"];
};
Expand Down Expand Up @@ -1206,6 +1212,12 @@ Json: JsonObject;
};
/** Format: double */
seats?: number;
/** @enum {string} */
ui_mode?: "embedded" | "hosted";
};
UpgradeToTeamBundleRequest: {
/** @enum {string} */
ui_mode?: "embedded" | "hosted";
};
LLMUsage: {
model: string;
Expand All @@ -1226,7 +1238,7 @@ Json: JsonObject;
completion_token: number;
};
};
NewOrganizationParams: {
NewOrganizationParams: ({
tier?: string | null;
subscription_status?: string | null;
stripe_subscription_item_id?: string | null;
Expand All @@ -1244,29 +1256,43 @@ Json: JsonObject;
owner: string;
organization_type?: string;
org_provider_key?: string | null;
onboarding_status?: components["schemas"]["Json"];
name: string;
logo_path?: string | null;
limits?: components["schemas"]["Json"] | null;
is_personal?: boolean;
is_main_org?: boolean;
id?: string;
icon?: string;
has_onboarded?: boolean;
governance_settings?: components["schemas"]["Json"] | null;
domain?: string | null;
created_at?: string | null;
color?: string;
}) & {
is_main_org?: boolean;
};
"ResultSuccess__demoOrgId-string--starterOrgId-string__": {
data: {
starterOrgId: string;
demoOrgId: string;
};
/** @enum {number|null} */
error: null;
};
"Result__demoOrgId-string--starterOrgId-string_.string_": components["schemas"]["ResultSuccess__demoOrgId-string--starterOrgId-string__"] | components["schemas"]["ResultError_string_"];
/** @description From T, pick a set of properties whose keys are in the union K */
"Pick_NewOrganizationParams.name-or-color-or-icon-or-org_provider_key-or-limits-or-reseller_id-or-organization_type_": {
"Pick_NewOrganizationParams.name-or-color-or-icon-or-org_provider_key-or-limits-or-reseller_id-or-organization_type-or-onboarding_status_": {
name: string;
color?: string;
icon?: string;
org_provider_key?: string;
limits?: components["schemas"]["Json"];
reseller_id?: string;
organization_type?: string;
onboarding_status?: components["schemas"]["Json"];
};
UpdateOrganizationParams: components["schemas"]["Pick_NewOrganizationParams.name-or-color-or-icon-or-org_provider_key-or-limits-or-reseller_id-or-organization_type_"] & {
UpdateOrganizationParams: components["schemas"]["Pick_NewOrganizationParams.name-or-color-or-icon-or-org_provider_key-or-limits-or-reseller_id-or-organization_type-or-onboarding_status_"] & {
variant?: string;
};
UIFilterRowTree: components["schemas"]["UIFilterRowNode"] | components["schemas"]["FilterRow"];
Expand Down Expand Up @@ -1322,6 +1348,19 @@ Json: JsonObject;
error: null;
};
"Result_OrganizationOwner-Array.string_": components["schemas"]["ResultSuccess_OrganizationOwner-Array_"] | components["schemas"]["ResultError_string_"];
/** @description Make all properties in T optional */
"Partial__currentStep-string--selectedTier-string--hasOnboarded-boolean--members-any-Array--addons_58__prompts-boolean--experiments-boolean--evals-boolean___": {
currentStep?: string;
selectedTier?: string;
hasOnboarded?: boolean;
members?: unknown[];
addons?: {
evals: boolean;
experiments: boolean;
prompts: boolean;
};
};
OnboardingStatus: components["schemas"]["Partial__currentStep-string--selectedTier-string--hasOnboarded-boolean--members-any-Array--addons_58__prompts-boolean--experiments-boolean--evals-boolean___"];
HeliconeMeta: {
heliconeManualAccessKey?: string;
lytixHost?: string;
Expand Down Expand Up @@ -2060,7 +2099,7 @@ Json: JsonObject;
count: number | null;
};
"PostgrestSingleResponse__created_at-string--id-string--name-string--settings-Json__": components["schemas"]["PostgrestResponseSuccess__created_at-string--id-string--name-string--settings-Json__"] | components["schemas"]["PostgrestResponseFailure"];
"PostgrestResponseSuccess__color-string--created_at-string--domain-string--governance_settings-Json--has_onboarded-boolean--icon-string--id-string--is_personal-boolean--limits-Json--logo_path-string--name-string--org_provider_key-string--organization_type-string--owner-string--percent_to_log-number--referral-string--request_limit-number--reseller_id-string--size-string--soft_delete-boolean--stripe_customer_id-string--stripe_metadata-Json--stripe_subscription_id-string--stripe_subscription_item_id-string--subscription_status-string--tier-string_-Array_": {
"PostgrestResponseSuccess__color-string--created_at-string--domain-string--governance_settings-Json--has_onboarded-boolean--icon-string--id-string--is_main_org-boolean--is_personal-boolean--limits-Json--logo_path-string--name-string--onboarding_status-Json--org_provider_key-string--organization_type-string--owner-string--percent_to_log-number--referral-string--request_limit-number--reseller_id-string--size-string--soft_delete-boolean--stripe_customer_id-string--stripe_metadata-Json--stripe_subscription_id-string--stripe_subscription_item_id-string--subscription_status-string--tier-string_-Array_": {
/** Format: double */
status: number;
statusText: string;
Expand All @@ -2084,10 +2123,12 @@ Json: JsonObject;
owner: string;
organization_type: string;
org_provider_key: string;
onboarding_status: components["schemas"]["Json"];
name: string;
logo_path: string;
limits: components["schemas"]["Json"];
is_personal: boolean;
is_main_org: boolean;
id: string;
icon: string;
has_onboarded: boolean;
Expand All @@ -2099,7 +2140,7 @@ Json: JsonObject;
/** Format: double */
count: number | null;
};
"PostgrestSingleResponse__color-string--created_at-string--domain-string--governance_settings-Json--has_onboarded-boolean--icon-string--id-string--is_personal-boolean--limits-Json--logo_path-string--name-string--org_provider_key-string--organization_type-string--owner-string--percent_to_log-number--referral-string--request_limit-number--reseller_id-string--size-string--soft_delete-boolean--stripe_customer_id-string--stripe_metadata-Json--stripe_subscription_id-string--stripe_subscription_item_id-string--subscription_status-string--tier-string_-Array_": components["schemas"]["PostgrestResponseSuccess__color-string--created_at-string--domain-string--governance_settings-Json--has_onboarded-boolean--icon-string--id-string--is_personal-boolean--limits-Json--logo_path-string--name-string--org_provider_key-string--organization_type-string--owner-string--percent_to_log-number--referral-string--request_limit-number--reseller_id-string--size-string--soft_delete-boolean--stripe_customer_id-string--stripe_metadata-Json--stripe_subscription_id-string--stripe_subscription_item_id-string--subscription_status-string--tier-string_-Array_"] | components["schemas"]["PostgrestResponseFailure"];
"PostgrestSingleResponse__color-string--created_at-string--domain-string--governance_settings-Json--has_onboarded-boolean--icon-string--id-string--is_main_org-boolean--is_personal-boolean--limits-Json--logo_path-string--name-string--onboarding_status-Json--org_provider_key-string--organization_type-string--owner-string--percent_to_log-number--referral-string--request_limit-number--reseller_id-string--size-string--soft_delete-boolean--stripe_customer_id-string--stripe_metadata-Json--stripe_subscription_id-string--stripe_subscription_item_id-string--subscription_status-string--tier-string_-Array_": components["schemas"]["PostgrestResponseSuccess__color-string--created_at-string--domain-string--governance_settings-Json--has_onboarded-boolean--icon-string--id-string--is_main_org-boolean--is_personal-boolean--limits-Json--logo_path-string--name-string--onboarding_status-Json--org_provider_key-string--organization_type-string--owner-string--percent_to_log-number--referral-string--request_limit-number--reseller_id-string--size-string--soft_delete-boolean--stripe_customer_id-string--stripe_metadata-Json--stripe_subscription_id-string--stripe_subscription_item_id-string--subscription_status-string--tier-string_-Array_"] | components["schemas"]["PostgrestResponseFailure"];
"ResultSuccess__organization_id-string--name-string--flags-string-Array_-Array_": {
data: {
flags: string[];
Expand Down Expand Up @@ -3304,6 +3345,11 @@ export interface operations {
};
};
UpgradeToTeamBundle: {
requestBody?: {
content: {
"application/json": components["schemas"]["UpgradeToTeamBundleRequest"];
};
};
responses: {
/** @description Ok */
200: {
Expand All @@ -3314,6 +3360,11 @@ export interface operations {
};
};
UpgradeExistingCustomerToTeamBundle: {
requestBody?: {
content: {
"application/json": components["schemas"]["UpgradeToTeamBundleRequest"];
};
};
responses: {
/** @description Ok */
200: {
Expand Down Expand Up @@ -3497,6 +3548,16 @@ export interface operations {
};
};
};
CreateStarterOrganization: {
responses: {
/** @description Ok */
200: {
content: {
"application/json": components["schemas"]["Result__demoOrgId-string--starterOrgId-string_.string_"];
};
};
};
};
UpdateOrganization: {
parameters: {
path: {
Expand Down Expand Up @@ -3711,6 +3772,25 @@ export interface operations {
};
};
};
UpdateOnboardingStatus: {
requestBody: {
content: {
"application/json": {
has_onboarded: boolean;
name: string;
onboarding_status: components["schemas"]["OnboardingStatus"];
};
};
};
responses: {
/** @description Ok */
200: {
content: {
"application/json": components["schemas"]["Result_null.string_"];
};
};
};
};
GetMemberLimits: {
parameters: {
path: {
Expand Down Expand Up @@ -4012,7 +4092,7 @@ export interface operations {
/** @description Ok */
200: {
content: {
"application/json": components["schemas"]["PostgrestSingleResponse__color-string--created_at-string--domain-string--governance_settings-Json--has_onboarded-boolean--icon-string--id-string--is_personal-boolean--limits-Json--logo_path-string--name-string--org_provider_key-string--organization_type-string--owner-string--percent_to_log-number--referral-string--request_limit-number--reseller_id-string--size-string--soft_delete-boolean--stripe_customer_id-string--stripe_metadata-Json--stripe_subscription_id-string--stripe_subscription_item_id-string--subscription_status-string--tier-string_-Array_"];
"application/json": components["schemas"]["PostgrestSingleResponse__color-string--created_at-string--domain-string--governance_settings-Json--has_onboarded-boolean--icon-string--id-string--is_main_org-boolean--is_personal-boolean--limits-Json--logo_path-string--name-string--onboarding_status-Json--org_provider_key-string--organization_type-string--owner-string--percent_to_log-number--referral-string--request_limit-number--reseller_id-string--size-string--soft_delete-boolean--stripe_customer_id-string--stripe_metadata-Json--stripe_subscription_id-string--stripe_subscription_item_id-string--subscription_status-string--tier-string_-Array_"];
};
};
};
Expand Down
16 changes: 16 additions & 0 deletions bifrost/lib/clients/jawnTypes/public.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1686,6 +1686,12 @@ Json: JsonObject;
};
/** Format: double */
seats?: number;
/** @enum {string} */
ui_mode?: "embedded" | "hosted";
};
UpgradeToTeamBundleRequest: {
/** @enum {string} */
ui_mode?: "embedded" | "hosted";
};
LLMUsage: {
model: string;
Expand Down Expand Up @@ -3953,6 +3959,11 @@ export interface operations {
};
};
UpgradeToTeamBundle: {
requestBody?: {
content: {
"application/json": components["schemas"]["UpgradeToTeamBundleRequest"];
};
};
responses: {
/** @description Ok */
200: {
Expand All @@ -3963,6 +3974,11 @@ export interface operations {
};
};
UpgradeExistingCustomerToTeamBundle: {
requestBody?: {
content: {
"application/json": components["schemas"]["UpgradeToTeamBundleRequest"];
};
};
responses: {
/** @description Ok */
200: {
Expand Down
44 changes: 42 additions & 2 deletions docs/swagger.json
Original file line number Diff line number Diff line change
Expand Up @@ -4727,6 +4727,26 @@
"seats": {
"type": "number",
"format": "double"
},
"ui_mode": {
"type": "string",
"enum": [
"embedded",
"hosted"
]
}
},
"type": "object",
"additionalProperties": false
},
"UpgradeToTeamBundleRequest": {
"properties": {
"ui_mode": {
"type": "string",
"enum": [
"embedded",
"hosted"
]
}
},
"type": "object",
Expand Down Expand Up @@ -11485,7 +11505,17 @@
"api_key": []
}
],
"parameters": []
"parameters": [],
"requestBody": {
"required": false,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpgradeToTeamBundleRequest"
}
}
}
}
}
},
"/v1/stripe/subscription/existing-customer/upgrade-to-team-bundle": {
Expand All @@ -11511,7 +11541,17 @@
"api_key": []
}
],
"parameters": []
"parameters": [],
"requestBody": {
"required": false,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpgradeToTeamBundleRequest"
}
}
}
}
}
},
"/v1/stripe/subscription/manage-subscription": {
Expand Down
Loading
Loading