Five intake forms, one configuration object
Every service on the site has a different intake form. Audio asks for genre, track count, and project type — recording, mixing, mastering, full production, or podcast. Software asks for budget range, company name, and whether you want an MVP, a web app, AI integration, or fractional CTO. Accessibility asks for a compliance target — WCAG 2.1 AA, WCAG 2.2 AAA, ADA, European Accessibility Act, or not sure. Musician asks which instrument you need and whether it is a session, a live gig, a recording, or a dep. Production asks for genre and creative direction. Five completely different sets of questions. One component renders all of them. The ServiceSidebar reads a serviceConfigs object that maps each service to its own typed field definitions, headings, descriptions, and success messages. The FormAccordion underneath does not know which service it is rendering. It just receives props and draws the accordion with three sections — packages, book a call, send a brief. Each field is a FieldConfig object with a name, label, type, placeholder, and optional list of select options. Adding a new field to any service means adding one object to an array. Adding a sixth service means adding one key to the config map. The sidebar, the form, and the validation all adapt because they read the config, not the service name.
Comments coming soon
Sign in with TikTok to leave a comment. Coming soon.