Skip to Main Content

A structured, wizard-based interface that allows you to create a new Baseplate application. The feature solves a critical bottleneck: the inefficiency and inconsistency involved in manually bootstrapping a new SaaS app. Today, launching a new app requires cloning the repo, setting up configs, environments, and infrastructure — a process that is error-prone, undocumented, and requires senior developer intervention. This workflow provides a repeatable and user-friendly method for doing this in minutes.

The MVP includes:

The workflow is designed for users with platform administration privileges — System Administrators or Customer Success team members – bootstrapping a new app. Practically the UI will be used infrequently so having it “basic” and bare bones – a UI only a developer could love.

In the future, this workflow will get extending to fully automate environment buildout:

While these are out of scope for the MVP, the architecture will be built in a modular way to support these additions.

Interaction Model

A user navigates to “New App Creation” from the admin dashboard. They’re guided through a 4-step process:

  1. App Details – enter metadata such as name, description, default domain, and customer info.
  2. Branding & Options – upload a logo, pick theme color, set app title/subtitle.
  3. Config Variables – list Firebase Remote Config keys and values.
  4. Generate App – click a button to generate a zip file with configured source code + display the Remote Config table.

This reduces time-to-app-launch from weeks to hours, while enforcing consistent patterns across all new SaaS products built on the Stock App.

Developer Inspiration

Inspiration for this flow can be drawn from:

This feature combines the speed and simplicity of tools like Divjoy with the structure and enterprise guardrails needed for high-trust SaaS development.

🔐 Role Access

System Administrator

System Administrators need full access to the New App Creation Workflow. They are the primary audience for the feature in MVP and will be responsible for setting up new applications across tenants. They manage the Firebase configuration and ensure apps are initialized with correct compliance and branding info.

User Stories

  1. As a System Administrator, I want to create a new app from the Stock App framework so I can onboard a new business unit.
  2. As a System Administrator, I want to enter the application’s name, domain, and description to define the identity of the app.
  3. As a System Administrator, I want to upload a logo and pick theme colors so the new app reflects the customer’s brand.
  4. As a System Administrator, I want to enter in API secret keys for the standard services and configuration options provided by Firebase Remote Config keys so I can ensure the app is pre-configured on launch.
  5. As a System Administrator, I want to generate a downloadable ZIP of the new app so that the dev team can start working immediately.
  6. As a System Administrator, I want to view and copy the Firebase keys after generation so I can quickly configure them in Firebase Console.
  7. As a System Administrator, I want to re-generate an app if I made a mistake during config entry.
  8. As a System Administrator, I want to see audit logs of who created which app and when.

Customer Success

Customer Success users may assist in setting up new apps, especially when onboarding new enterprise customers. They may run the workflow on behalf of a customer and help with configuration values but may not generate code directly in all environments.

User Stories

  1. As a Customer Success Manager, I want to launch the New App Creation Wizard for a new enterprise client.
  2. As a Customer Success Manager, I want to fill out app details and branding on behalf of a customer to speed up onboarding.
  3. As a Customer Success Manager, I want to preview the Remote Config table before generating code so I can validate with the customer.
  4. As a Customer Success Manager, I want to send the generated ZIP to a developer on the client’s side for implementation.
  5. As a Customer Success Manager, I want to log support tickets if the generated app fails to build.
  6. As a Customer Success Manager, I want to export the app details (including Firebase keys) as a PDF or doc to share with external teams.
  7. As a Customer Success Manager, I want to impersonate the client’s administrator to confirm configuration settings.
  8. As a Customer Success Manager, I want to log notes about the app setup to track customer-specific modifications.

Customer Administrator

Customer Administrators will not use the workflow directly in MVP. In future iterations of the 1 to 100 Site and Application , however, we may expose app generation as a feature to this user group.

Manager / Standard User

These roles do not interact with the New App Creation Workflow and should not have access to the feature in any way. If they attempt to access it, they should receive a “Permissions Error” screen.

📄 Pages and Screens

The MVP of the New App Creation Workflow will include the following screens:

  1. New App Wizard Landing Page
  2. Step 1: App Identity
  3. Step 2: Branding & Options
  4. Step 3: Firebase Config
  5. Step 4: App Generation & Download
  6. App Summary / Success Page

🧭 New App Wizard Landing Page

This is the entry screen for the New App Creation Workflow. It provides a short overview of the process, describes what will be created, and lets users begin the wizard. It also shows a list of previously created apps for transparency and auditability. Only System Administrators and Customer Success roles can access this page.

Screen Content

NameQuery and SetupConstraintsError CheckingNotes
Start New App (Button)NoneVisible to permitted roles onlyNoneNavigates to Step 1
Created Apps TableQuery previous app generation logs from DBN/AN/AShows app name, created by, created at

🧾 Step 1: App Identity

Captures core metadata for the app being created. These details are used in directory structure, branding, and Firebase config variables.

Screen Content

NameQuery and SetupConstraintsError CheckingNotes
App NameNoneRequired, max 64 charactersRequired, show “App Name is required”Used in folder structure, branding
App DescriptionNoneOptional, max 256 charactersNoneAppears in summary view
DomainAuto-suggest from previous appsRequired, must be valid domain formatShow “Invalid domain”Used in Firebase config
Internal Code NameAuto-generated based on App NameRequired, slug-format only“Code name must be URL-friendly”Used in repo names, identifiers
Associated CustomerDrop-down of all CustomersOptionalNoneUsed for audit linkage. Not needed for MVP but would be implemented if / as we launch on 1 to 100.com

🎨 Step 2: Branding & Options

Allows for setting visual and UX options that will personalize the app out of the gate. These values will be injected into theme files and config variables.

Screen Content

NameQuery and SetupConstraintsError CheckingNotes
App Logo UploadNoneJPEG/PNG only, max 2MBFile type and size checkStored in app/assets dir
Primary Theme ColorPredefined palette or hex inputRequired, must be valid hex colorValidate with regexUsed in Material UI config
App TitleDefaults to App NameOptionalNoneAppears in browser title
Subtitle / TaglineNoneOptionalNoneUsed on splash and auth screens
Enable Dark ModeToggleOptionalNoneBoolean injected to theme config, defaults to true

🔧 Step 3: Firebase Config Variables

Description

Captures environment variable values that will be injected into firebase.remoteConfig setup and into .env files. A table lists expected variables based on a predefined schema.

Screen Content

NameQuery and SetupConstraintsError CheckingNotes
Config Variable TablePreloaded list from schema (editable)Each row requires name and valueInline validation, missing name/valueEach app can override defaults
Add New Variable ButtonAdds row to tableOptionalNoneCustom configs allowed
Reset to DefaultsReverts config to stock templateOptionalConfirm dialogUseful if values get messy

📦 Step 4: App Generation & Download

Description

The user clicks a button to generate the app. The backend runs a codegen script that creates a ZIP file with all configured elements (branding, config, boilerplate). Once done, the file is available for download and a success message is shown.

Screen Content

NameQuery and SetupConstraintsError CheckingNotes
Generate App ButtonTriggers backend generation scriptEnabled only if all prior steps validHandle backend failure gracefullyDisable while generating
Spinner/Progress DisplayShow while generating appN/AN/AShows build logs optionally
Download ZIP LinkShows after generation completesVisible only if ZIP exists“Generation failed” fallback messageDirect link to ZIP blob
View Firebase KeysOpens table with all keys & valuesOptionalNoneCan copy to clipboard

✅ App Summary / Success Page

Description

Summarizes all inputted information and allows user to copy relevant data. Also provides a reminder of next steps (setting up GitHub, Firebase project, etc.).

Screen Content

NameQuery and SetupConstraintsError CheckingNotes
App Summary TableLoad from workflow sessionN/ANoneView-only
Firebase Config DisplayPull from previous screenN/ANoneCopy/paste interface
Action ChecklistStatic contentN/ANone“Now do this next…” links

🧱 Data Model

Below is the MVP data model to support the New App Creation Workflow. This is PostgreSQL-based and follows existing design patterns from the Stock SaaS Application.

NameDescriptionConstraintsNotes
app_idUUID for the generated appRequired, PK 
app_nameHuman-friendly nameRequired, 64 char max 
code_nameInternal name for folders/reposRequired, slug, unique 
descriptionApp descriptionOptional, 256 char max 
domainMain domain or subdomainRequired, must be a domain 
logo_urlURL/path to uploaded logoOptional 
theme_colorHex color stringRequired, must be valid hex 
titleApp title overrideOptional 
subtitleApp subtitleOptional 
dark_mode_enabledBoolean toggleOptional, defaults to false 
created_by_user_idForeign key to user tableRequired 
created_atTimestamp of app creationDefault now() 
firebase_config_jsonJSON of key-value pairsRequiredStored as raw JSON blob
zip_blob_pathPath to generated ZIP (S3/Firebase link)Optional, added after generation