Story 1.14: Company Management Screen - Wireframe

Story: Epic 1, Story 1.14 - Company Management Service Foundation

Last updated: January 2, 2026 Reading time: 26 minutes File size: 55.94 KB

Visual Wireframe

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ ← Back to Dashboard        Company Management           [+ Add New Company]          β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                                       β”‚
β”‚  β”Œβ”€β”€β”€ SEARCH & FILTERS ─────────────────────────────────────────────────────────────┐ β”‚
β”‚  β”‚                                                                                   β”‚ β”‚
β”‚  β”‚  [πŸ” Search companies...]                    [Partner Only ☐] [Verified Only ☐] β”‚ β”‚
β”‚  β”‚                                                                                   β”‚ β”‚
β”‚  β”‚  Industry: [All β–Ύ]  Sort By: [Name A-Z β–Ύ]                                        β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚                                                                                       β”‚
β”‚  β”Œβ”€β”€β”€ COMPANY LIST ──────────────────────────────────────────────────────────────────┐ β”‚
β”‚  β”‚                                                                                   β”‚ β”‚
β”‚  β”‚  Showing 23 companies                                            [Grid β–£] [List ☰]β”‚ β”‚
β”‚  β”‚                                                                                   β”‚ β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚ β”‚
β”‚  β”‚  β”‚ [Logo]  TechCorp AG                                    ⭐ PARTNER βœ… VERIFIEDβ”‚  β”‚ β”‚
β”‚  β”‚  β”‚         Zurich, Switzerland                                                 β”‚  β”‚ β”‚
β”‚  β”‚  β”‚         Cloud Computing & DevOps                                            β”‚  β”‚ β”‚
β”‚  β”‚  β”‚         πŸ”— techcorp.ch                                                      β”‚  β”‚ β”‚
β”‚  β”‚  β”‚         [View Details] [Edit] [12 Associated Users β†’]                      β”‚  β”‚ β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚ β”‚
β”‚  β”‚                                                                                   β”‚ β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚ β”‚
β”‚  β”‚  β”‚ [Logo]  SwissBank Ltd                                              βœ… VERIFIEDβ”‚  β”‚ β”‚
β”‚  β”‚  β”‚         Basel, Switzerland                                                  β”‚  β”‚ β”‚
β”‚  β”‚  β”‚         Financial Services                                                  β”‚  β”‚ β”‚
β”‚  β”‚  β”‚         πŸ”— swissbank.ch                                                     β”‚  β”‚ β”‚
β”‚  β”‚  β”‚         [View Details] [Edit] [5 Associated Users β†’]                       β”‚  β”‚ β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚ β”‚
β”‚  β”‚                                                                                   β”‚ β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚ β”‚
β”‚  β”‚  β”‚ [πŸ“·]    Digital Solutions GmbH                                 ⏳ PENDING    β”‚  β”‚ β”‚
β”‚  β”‚  β”‚         Bern, Switzerland                                                   β”‚  β”‚ β”‚
β”‚  β”‚  β”‚         Software Development                                                β”‚  β”‚ β”‚
β”‚  β”‚  β”‚         πŸ”— digitalsol.ch                                                    β”‚  β”‚ β”‚
β”‚  β”‚  β”‚         [View Details] [Edit] [2 Associated Users β†’]                       β”‚  β”‚ β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚ β”‚
β”‚  β”‚                                                                                   β”‚ β”‚
β”‚  β”‚  [Load More...] (20 more companies)                                              β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚                                                                                       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Create/Edit Company Modal

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ [X] Create New Company                                                                β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                                       β”‚
β”‚  β”Œβ”€β”€β”€ COMPANY DETAILS ───────────────────────────────────────────────────────────────┐ β”‚
β”‚  β”‚                                                                                   β”‚ β”‚
β”‚  β”‚  Company Name *                                                                   β”‚ β”‚
β”‚  β”‚  [_______________________________________________________________________]        β”‚ β”‚
β”‚  β”‚  πŸ’‘ Start typing to see suggestions and check for duplicates                     β”‚ β”‚
β”‚  β”‚                                                                                   β”‚ β”‚
β”‚  β”‚  Display Name (if different from legal name)                                     β”‚ β”‚
β”‚  β”‚  [_______________________________________________________________________]        β”‚ β”‚
β”‚  β”‚                                                                                   β”‚ β”‚
β”‚  β”‚  Swiss UID (Optional - for automatic verification)                               β”‚ β”‚
β”‚  β”‚  [CHE-___.___.___]  [πŸ” Verify]                                                  β”‚ β”‚
β”‚  β”‚  ℹ️ We'll validate this with the Swiss UID register                              β”‚ β”‚
β”‚  β”‚                                                                                   β”‚ β”‚
β”‚  β”‚  Website                                                                          β”‚ β”‚
β”‚  β”‚  [https://_______________________________________________________________]        β”‚ β”‚
β”‚  β”‚                                                                                   β”‚ β”‚
β”‚  β”‚  Industry *                                                                       β”‚ β”‚
β”‚  β”‚  [Select Industry β–Ύ]                                                             β”‚ β”‚
β”‚  β”‚  [Cloud Computing] [DevOps] [Financial Services] [Healthcare] [...]              β”‚ β”‚
β”‚  β”‚                                                                                   β”‚ β”‚
β”‚  β”‚  Sector (Optional)                                                                β”‚ β”‚
β”‚  β”‚  [Select Sector β–Ύ]                                                               β”‚ β”‚
β”‚  β”‚  [Public] [Private] [Non-profit] [Government]                                    β”‚ β”‚
β”‚  β”‚                                                                                   β”‚ β”‚
β”‚  β”‚  Location                                                                         β”‚ β”‚
β”‚  β”‚  City: [________________] Canton: [Select Canton β–Ύ] Country: [Switzerland β–Ύ]     β”‚ β”‚
β”‚  β”‚                                                                                   β”‚ β”‚
β”‚  β”‚  Description                                                                      β”‚ β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚ β”‚
β”‚  β”‚  β”‚ Brief description of the company's activities and expertise...            β”‚  β”‚ β”‚
β”‚  β”‚  β”‚                                                                            β”‚  β”‚ β”‚
β”‚  β”‚  β”‚                                                                            β”‚  β”‚ β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚ β”‚
β”‚  β”‚  0/500 characters                                                                β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚                                                                                       β”‚
β”‚  β”Œβ”€β”€β”€ LOGO UPLOAD ───────────────────────────────────────────────────────────────────┐ β”‚
β”‚  β”‚                                                                                   β”‚ β”‚
β”‚  β”‚  Company Logo                                                                     β”‚ β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚ β”‚
β”‚  β”‚  β”‚                                                                            β”‚  β”‚ β”‚
β”‚  β”‚  β”‚         πŸ“  Drag & drop logo here or click to browse                      β”‚  β”‚ β”‚
β”‚  β”‚  β”‚                                                                            β”‚  β”‚ β”‚
β”‚  β”‚  β”‚         Accepted: PNG, JPEG, SVG β€’ Max size: 5 MB                         β”‚  β”‚ β”‚
β”‚  β”‚  β”‚         Recommended: 500x500px square, transparent background             β”‚  β”‚ β”‚
β”‚  β”‚  β”‚                                                                            β”‚  β”‚ β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚ β”‚
β”‚  β”‚                                                                                   β”‚ β”‚
β”‚  β”‚  Preview:                                                                         β”‚ β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”                                                                     β”‚ β”‚
β”‚  β”‚  β”‚ [Logo]  β”‚ βœ… logo-techcorp.png (245 KB) [Remove]                              β”‚ β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                                                                     β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚                                                                                       β”‚
β”‚  β”Œβ”€β”€β”€ PARTNER STATUS (Organizer Only) - Managed in Partner Service ────────────────┐ β”‚
β”‚  β”‚                                                                                   β”‚ β”‚
β”‚  β”‚  ⭐ Partner Status                                                                β”‚ β”‚
β”‚  β”‚  [☐ This company is a BATbern partner]                                           β”‚ β”‚
β”‚  β”‚  ℹ️  Creates partnership via Partner Coordination Service                        β”‚ β”‚
β”‚  β”‚                                                                                   β”‚ β”‚
β”‚  β”‚  Partner Benefits (when enabled):                                                β”‚ β”‚
β”‚  β”‚  β€’ Priority speaker invitations                                                  β”‚ β”‚
β”‚  β”‚  β€’ Enhanced analytics dashboard access                                           β”‚ β”‚
β”‚  β”‚  β€’ Topic voting privileges                                                       β”‚ β”‚
β”‚  β”‚  β€’ Logo display on event pages                                                   β”‚ β”‚
β”‚  β”‚                                                                                   β”‚ β”‚
β”‚  β”‚  Partner Level: [Bronze β–Ύ] [Silver] [Gold] [Platinum]                           β”‚ β”‚
β”‚  β”‚  Partnership Start Date: [DD/MM/YYYY]                                            β”‚ β”‚
β”‚  β”‚  Partnership End Date: [DD/MM/YYYY]                                              β”‚ β”‚
β”‚  β”‚                                                                                   β”‚ β”‚
β”‚  β”‚  βš™οΈ API: POST /api/v1/partnerships                                                β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚                                                                                       β”‚
β”‚  β”Œβ”€β”€β”€ VERIFICATION ──────────────────────────────────────────────────────────────────┐ β”‚
β”‚  β”‚                                                                                   β”‚ β”‚
β”‚  β”‚  Verification Status: ⏳ PENDING                                                  β”‚ β”‚
β”‚  β”‚                                                                                   β”‚ β”‚
β”‚  β”‚  [☐ Manually verify this company] (Organizer only)                              β”‚ β”‚
β”‚  β”‚                                                                                   β”‚ β”‚
β”‚  β”‚  Verification Method:                                                             β”‚ β”‚
β”‚  β”‚  β€’ Swiss UID Register: ⏳ Pending validation                                      β”‚ β”‚
β”‚  β”‚  β€’ Website Domain: βœ… Verified (techcorp.ch)                                      β”‚ β”‚
β”‚  β”‚  β€’ Manual Review: ⏳ Pending organizer approval                                   β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚                                                                                       β”‚
β”‚                                                   [Cancel] [Save Draft] [Save & Create]β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Company Detail View

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ ← Back to Companies        TechCorp AG                    [Edit] [βš™ Settings]        β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                                       β”‚
β”‚  β”Œβ”€β”€β”€ COMPANY PROFILE ───────────────────────────────────────────────────────────────┐ β”‚
β”‚  β”‚                                                                                   β”‚ β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”  TechCorp AG                                    ⭐ PARTNER βœ… VERIFIEDβ”‚ β”‚
β”‚  β”‚  β”‚        β”‚  Cloud Computing & DevOps                                            β”‚ β”‚
β”‚  β”‚  β”‚  Logo  β”‚  Zurich, Switzerland                                                 β”‚ β”‚
β”‚  β”‚  β”‚        β”‚  πŸ”— techcorp.ch                                                      β”‚ β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜  Swiss UID: CHE-123.456.789                                          β”‚ β”‚
β”‚  β”‚             Sector: Private β€’ Founded: 2010                                      β”‚ β”‚
β”‚  β”‚                                                                                   β”‚ β”‚
β”‚  β”‚  β”Œβ”€β”€β”€ DESCRIPTION ───────────────────────────────────────────────────────────┐  β”‚ β”‚
β”‚  β”‚  β”‚ Leading provider of cloud-native solutions and DevOps consulting services β”‚  β”‚ β”‚
β”‚  β”‚  β”‚ in Switzerland. Specializing in Kubernetes orchestration, infrastructure  β”‚  β”‚ β”‚
β”‚  β”‚  β”‚ automation, and cloud migration strategies for enterprise clients.        β”‚  β”‚ β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚                                                                                       β”‚
β”‚  β”Œβ”€β”€β”€ ASSOCIATED USERS (From User Service) ──────────────────────────────────────────┐ β”‚
β”‚  β”‚                                                                                   β”‚ β”‚
β”‚  β”‚  12 Associated Users                                          [+ Link User]       β”‚ β”‚
β”‚  β”‚  βš™οΈ Data from: GET /api/v1/users?companyId={companyId}                           β”‚ β”‚
β”‚  β”‚                                                                                   β”‚ β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚ β”‚
β”‚  β”‚  β”‚ [Photo] Dr. Peter Muller β€’ Principal Cloud Architect                      β”‚  β”‚ β”‚
β”‚  β”‚  β”‚         8 Talks β€’ 4.7β˜… Average Rating                                      β”‚  β”‚ β”‚
β”‚  β”‚  β”‚         [View Profile β†’]                                                   β”‚  β”‚ β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚ β”‚
β”‚  β”‚                                                                                   β”‚ β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚ β”‚
β”‚  β”‚  β”‚ [Photo] Anna Schmidt β€’ Senior DevOps Engineer                             β”‚  β”‚ β”‚
β”‚  β”‚  β”‚         5 Talks β€’ 4.9β˜… Average Rating                                      β”‚  β”‚ β”‚
β”‚  β”‚  β”‚         [View Profile β†’]                                                   β”‚  β”‚ β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚ β”‚
β”‚  β”‚                                                                                   β”‚ β”‚
β”‚  β”‚  [View All Speakers (12) β†’]                                                       β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚                                                                                       β”‚
β”‚  β”Œβ”€β”€β”€ PARTNER INFORMATION (From Partner Service) ───────────────────────────────────┐ β”‚
β”‚  β”‚                                                                                   β”‚ β”‚
β”‚  β”‚  Partnership Level: Gold Partner                                                 β”‚ β”‚
β”‚  β”‚  Partnership Period: Jan 2023 - Dec 2025                                         β”‚ β”‚
β”‚  β”‚  Primary Contact: Maria Weber (maria.weber@techcorp.ch)                          β”‚ β”‚
β”‚  β”‚                                                                                   β”‚ β”‚
β”‚  β”‚  Partnership Benefits Active:                                                     β”‚ β”‚
β”‚  β”‚  βœ… Priority speaker invitations                                                  β”‚ β”‚
β”‚  β”‚  βœ… Enhanced analytics dashboard                                                  β”‚ β”‚
β”‚  β”‚  βœ… Topic voting (3 votes per event)                                              β”‚ β”‚
β”‚  β”‚  βœ… Logo on event pages and marketing materials                                   β”‚ β”‚
β”‚  β”‚                                                                                   β”‚ β”‚
β”‚  β”‚  βš™οΈ Data from: GET /api/v1/partnerships?companyId={companyId}                    β”‚ β”‚
β”‚  β”‚  [πŸ“Š View Partner Analytics β†’]                                                    β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚                                                                                       β”‚
β”‚  β”Œβ”€β”€β”€ STATISTICS ────────────────────────────────────────────────────────────────────┐ β”‚
β”‚  β”‚                                                                                   β”‚ β”‚
β”‚  β”‚  Event Participation                                                              β”‚ β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚ β”‚
β”‚  β”‚  β”‚ Total Events with Speakers:     18 events                                 β”‚  β”‚ β”‚
β”‚  β”‚  β”‚ Total Presentations:            42 presentations                          β”‚  β”‚ β”‚
β”‚  β”‚  β”‚ Total Attendees from Company:   156 attendees                            β”‚  β”‚ β”‚
β”‚  β”‚  β”‚ First Event:                    Spring 2015                               β”‚  β”‚ β”‚
β”‚  β”‚  β”‚ Most Recent Event:              Autumn 2024                               β”‚  β”‚ β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚ β”‚
β”‚  β”‚                                                                                   β”‚ β”‚
β”‚  β”‚  Topic Expertise (from speaker presentations)                                     β”‚ β”‚
β”‚  β”‚  [Kubernetes: 12] [Cloud Architecture: 8] [DevOps: 15] [CI/CD: 7] [...]          β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚                                                                                       β”‚
β”‚  β”Œβ”€β”€β”€ ACTIVITY HISTORY ──────────────────────────────────────────────────────────────┐ β”‚
β”‚  β”‚                                                                                   β”‚ β”‚
β”‚  β”‚  Recent Activity                                                                  β”‚ β”‚
β”‚  β”‚  β€’ 2024-03-10: Dr. Peter Muller invited to speak at Spring 2024 Conference       β”‚ β”‚
β”‚  β”‚  β€’ 2024-02-15: Company verified via Swiss UID register                            β”‚ β”‚
β”‚  β”‚  β€’ 2024-01-20: Partnership renewed until Dec 2025                                 β”‚ β”‚
β”‚  β”‚  β€’ 2023-11-05: Anna Schmidt confirmed for Autumn 2023 workshop                    β”‚ β”‚
β”‚  β”‚                                                                                   β”‚ β”‚
β”‚  β”‚  [View Full History β†’]                                                            β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚                                                                                       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Key Interactive Elements

Company List View

  • Search Bar: Real-time autocomplete search with Caffeine-backed suggestions
  • Filter Controls: Partner status, verification status, industry
  • View Toggle: Switch between grid and list view
  • Sort Dropdown: Sort by name, industry, number of speakers, partnership status
  • Company Cards: Clickable cards showing key company information
  • Quick Actions: View, Edit, View Speakers buttons
  • Load More: Pagination or infinite scroll for large company lists

Create/Edit Company Form

  • Company Name Field: Real-time duplicate detection and name suggestions
  • UID Verification: Swiss UID register integration for automatic verification
  • Logo Upload: Drag-and-drop file upload with preview and validation
  • Industry Tags: Multi-select industry/topic tags
  • Partner Toggle: Enable/disable partner status with privilege configuration
  • Verification Controls: Manual verification checkbox (organizer-only)
  • Save Options: Save draft, save and continue, save and close

Company Detail View

  • Profile Section: Complete company information display
  • Speaker List: Associated speakers with quick links to profiles
  • Partner Info: Partnership details and benefits (if applicable)
  • Statistics Dashboard: Event participation and engagement metrics
  • Activity Timeline: Recent company-related activities
  • Action Buttons: Edit company, manage speakers, view analytics

Functional Requirements Met

  • FR3: Core company management with CRUD operations and Swiss UID validation
  • FR12: Partner company management (via Partner Coordination Service) with special status indicators, partnership levels, and benefit tracking
  • Logo Management: S3-based logo upload with CDN integration for fast delivery
  • Search & Discovery: Caffeine-backed autocomplete search for efficient company lookup
  • Data Integrity: Duplicate detection, UID verification, and data validation
  • User-Company Associations: User-company relationships managed via User Management Service

User Interactions

For Organizers (Full Access)

  1. Create Company: Click [+ Add New Company] β†’ Fill form β†’ Upload logo β†’ Set partner status β†’ Save
  2. Search Companies: Type in search bar β†’ Filter by partner/verified status β†’ Sort results
  3. Edit Company: Click company card β†’ Click [Edit] β†’ Modify fields β†’ Save changes
  4. Verify Company: Open company β†’ Check verification β†’ Click [Manually verify] (if needed)
  5. Manage Partner Status: Create partnership β†’ POST /api/v1/partnerships with company ID β†’ Set partnership level β†’ Save
  6. Link Speakers: Company detail β†’ Click [+ Link Speaker] β†’ Search and select speaker
  7. View Statistics: Company detail β†’ Review participation metrics and topic expertise
  8. View Analytics: Click [πŸ“Š View Partner Analytics] (for partner companies)

For Speakers (Limited Access)

  1. Create Own Company: Click [+ Add New Company] β†’ Fill basic details β†’ Submit for verification
  2. View Company: Search and view company details (read-only for others’ companies)
  3. Update Own Company: Edit company they created or are affiliated with
  4. See Associated Speakers: View list of colleagues from same company

Common Interactions

  1. Autocomplete Search: Start typing company name β†’ Select from suggestions
  2. Filter Results: Apply filters β†’ Results update automatically
  3. Toggle View: Switch between grid and list view for companies
  4. Upload Logo: Drag file to upload area OR click to browse β†’ Preview β†’ Confirm
  5. UID Verification: Enter Swiss UID β†’ Click [πŸ” Verify] β†’ Automatic validation

Technical Notes

Component Structure

  • CompanyManagementScreen.tsx: Main screen component with search and list
  • CompanyList.tsx: Paginated company list with grid/list views
  • CompanyCard.tsx: Individual company card component
  • CompanyForm.tsx: Create/edit form with validation
  • CompanyDetailView.tsx: Detailed company profile display
  • LogoUpload.tsx: Drag-and-drop logo upload component
  • CompanySearch.tsx: Autocomplete search with Caffeine cache backend
  • PartnerManagementPanel.tsx: Partner status and benefits configuration

State Management

  • Local State: Form data, upload progress, UI toggles (grid/list)
  • Zustand Store: Company search cache, filter preferences
  • React Query: Server state for companies, speakers, statistics
    • companies query: Cached for 5 minutes
    • companyDetail query: Cached for 10 minutes
    • companySuggestions query: Cached for 15 minutes

API Integration (Updated from Story 1.14 Refactoring)

Company Management Service (Company data only):

  • List/Search: GET /api/v1/companies?filter={}&sort={}&page={}
  • Autocomplete: GET /api/v1/companies/search?query={}&limit=20 (Caffeine cached)
  • Get Detail: GET /api/v1/companies/{id}?include=statistics,logo
  • Create: POST /api/v1/companies
  • Update: PUT /api/v1/companies/{id} or PATCH /api/v1/companies/{id}
  • Delete: DELETE /api/v1/companies/{id}
  • Swiss UID Validation: GET /api/v1/companies/validate-uid?uid={}
  • Verify: POST /api/v1/companies/{id}/verify
  • Logo Upload: POST /api/v1/companies/{id}/logo (presigned S3 URL)
  • Statistics: GET /api/v1/companies/{id}/statistics

Partner Coordination Service (Partnership management - Epic 8):

  • List Partnerships: GET /api/v1/partnerships?companyId={}
  • Create Partnership: POST /api/v1/partnerships
  • Update Partnership: PUT /api/v1/partnerships/{id}
  • Get Partnership Details: GET /api/v1/partnerships/{id}
  • Partner Analytics: GET /api/v1/partnerships/{id}/analytics

User Management Service (User-company associations):

  • List Company Users: GET /api/v1/users?companyId={}
  • Associate User with Company: POST /api/v1/users/{userId}/company
  • Update User Company: PUT /api/v1/users/{userId}/company

Benefits:

  • Caffeine caching for <100ms (P95) autocomplete performance
  • Swiss UID validation integration for automated verification
  • Clear service boundaries following DDD principles
  • Partnership data managed separately in Partner Coordination Service

File Upload Workflow

  1. User selects logo file (drag-and-drop or browse)
  2. Client validates file (type: PNG/JPEG/SVG, size: max 5MB)
  3. Client requests presigned URL: POST /api/v1/files/presigned-upload-url
  4. Client uploads directly to S3 using presigned URL
  5. Client confirms upload: POST /api/v1/files/{fileId}/confirm
  6. Server returns CDN URL for logo display
  7. Client updates company with logo CDN URL

Validation Rules

  • Company Name: Required, 2-200 characters, duplicate check
  • UID Format: CHE-XXX.XXX.XXX (Swiss format), optional
  • Logo: PNG/JPEG/SVG, max 5MB, recommended 500x500px
  • Website: Valid URL format, https preferred
  • Industry: Required, select from predefined list
  • Description: Max 500 characters

Caching Strategy

  • Caffeine Autocomplete: Company name suggestions cached with 15-minute TTL
  • React Query: Company details cached for 10 minutes
  • CDN: Logo files cached with CloudFront (1-year max-age)
  • Search Results: Cached for 5 minutes, invalidated on company updates

Security Considerations

  • Role-Based Access: Organizers have full access, speakers limited to create/edit own
  • Logo Upload: Presigned URLs valid for 15 minutes, MIME type validation
  • UID Verification: Swiss UID register API integration with rate limiting
  • Duplicate Prevention: Server-side duplicate detection before creation
  • Audit Trail: All company changes logged with user ID and timestamp

API Requirements

Initial Page Load APIs

Updated with Story 1.22 Consolidated APIs

When the Company Management Screen loads, the following APIs are called:

  1. GET /api/v1/companies?filter={}&sort={}&page={}

    • Query params: limit=20, page=1, sort=name, order=asc
    • Returns: Paginated list of companies with basic info
    • Used for: Initial company list display
    • Response includes: id, name, displayName, isPartner (from partnership join), logo CDN URL, industry, verificationStatus
    • Consolidated: Replaces GET /companies, /companies/stats, /companies/filter (3 β†’ 1 endpoint)
    • Note: isPartner flag set if partnership exists in Partner Service
  2. GET /api/v1/companies/search?query={}&limit=20

    • Triggered by: User typing in search bar (debounced)
    • Returns: Autocomplete suggestions from Caffeine cache
    • Response: { suggestions: [{ id, name, displayName, logo }] }
    • Used for: Autocomplete dropdown
    • Performance: <100ms (P95) with Caffeine caching

Action APIs

APIs called by user interactions:

Search & Filter (Consolidated)

  1. GET /api/v1/companies?filter={}&sort={}&page={}

    • Triggered by: Search input (debounced), filter changes, sort changes
    • Query params: filter={"isPartner":true,"industry":"Cloud"}&sort=name&page=1&limit=20
    • Returns: Filtered and paginated company list
    • Used for: Real-time search and filtering
    • Consolidated: Single endpoint replaces /companies, /companies/filter, /companies/search
  2. GET /api/v1/companies/search?query={}&limit=10

    • Triggered by: Search input (autocomplete, debounced)
    • Returns: Autocomplete suggestions from Caffeine cache
    • Response: { suggestions: [{ id, name, displayName, logo }] }
    • Used for: Autocomplete dropdown
    • Performance: <100ms (P95) with Caffeine caching

CRUD Operations (Consolidated)

  1. POST /api/v1/companies

    • Triggered by: [Save & Create] button in create form
    • Payload: Company data (JSON)
    • Returns: Created company with ID
    • Side effects: Creates company, publishes CompanyCreatedEvent
    • Note: Logo upload now uses separate endpoint
  2. PUT /api/v1/companies/{id} or PATCH /api/v1/companies/{id}

    • Triggered by: [Save] button in edit form
    • Payload: Full (PUT) or partial (PATCH) company data
    • Returns: Updated company object
    • Side effects: Updates company, invalidates cache, publishes CompanyUpdatedEvent
    • Consolidated: Supports both full and partial updates
  3. DELETE /api/v1/companies/{id}

    • Triggered by: [Delete] button confirmation
    • Returns: { success: true }
    • Side effects: Soft delete company, removes from search index, publishes CompanyDeletedEvent
  4. GET /api/v1/companies/{id}?include=statistics,logo

    • Triggered by: Click company card, navigate to detail view
    • Query params: include parameter for related data (statistics, logo)
    • Returns: Complete company details with included relations
    • Used for: Detail view display
    • Consolidated: Single endpoint with flexible includes (replaces 3 separate calls)
    • Note: User-company associations retrieved from User Service separately

Logo Management (Consolidated)

  1. POST /api/v1/companies/{id}/logo
    • Triggered by: Logo file selected in upload component
    • Payload: Form data with logo file
    • Returns: { logoUrl, cdnUrl, uploadedAt }
    • Used for: Upload company logo with presigned S3 URL workflow
    • Consolidated: Single endpoint handles presigned URL generation and confirmation (replaces 3-step workflow)
    • Benefits: Simpler integration, automatic S3 upload

Swiss UID Validation & Partner Management (Consolidated)

  1. GET /api/v1/companies/validate-uid?uid={CHE-XXX.XXX.XXX}

    • Triggered by: [πŸ” Verify] button for UID verification
    • Query params: uid (Swiss UID format)
    • Returns: { valid: true, companyName, verificationSource: "uid_register" }
    • Used for: Automatic Swiss UID verification against Swiss Business Registry
    • New in Story 1.22: Swiss UID validation integration
  2. POST /api/v1/companies/{id}/verify

    • Triggered by: Manual verification or after UID validation
    • Payload: { method: "uid|manual|domain", verificationData }
    • Returns: { verified: true, verifiedAt, verificationMethod }
    • Side effects: Updates verification status
    • Consolidated: Unified verification endpoint

Partner Management (Partner Service)

  1. POST /api/v1/partnerships

    • Triggered by: Partner status toggle (organizer-only)
    • Payload: { companyId, partnerLevel: "bronze|silver|gold|platinum", startDate, endDate, primaryContact }
    • Returns: Created partnership object
    • Side effects: Publishes PartnershipCreatedEvent
    • Service: Partner Coordination Service (Epic 8)
  2. GET /api/v1/partnerships?companyId={companyId}

    • Triggered by: Company detail view load (if company has partnership)
    • Returns: Partnership details for the company
    • Used for: Display partner information section
    • Service: Partner Coordination Service
  3. PUT /api/v1/partnerships/{id}

    • Triggered by: Edit partnership details
    • Payload: Partial partnership update
    • Returns: Updated partnership object
    • Service: Partner Coordination Service

User-Company Relationships (User Service)

  1. GET /api/v1/users?companyId={companyId}

    • Triggered by: Company detail view load
    • Query params: companyId, limit=10, page=1
    • Returns: Paginated list of users associated with company
    • Used for: Display associated users list in detail view
    • Service: User Management Service
  2. POST /api/v1/users/{userId}/company

    • Triggered by: [+ Link User] button
    • Payload: { companyId, jobTitle, role }
    • Returns: { success: true, association }
    • Used for: Associate user with company
    • Service: User Management Service
  3. DELETE /api/v1/users/{userId}/company

    • Triggered by: [Unlink] button
    • Returns: { success: true }
    • Used for: Remove user-company association
    • Service: User Management Service

Statistics (Company Service)

  1. GET /api/v1/companies/{id}/statistics
    • Triggered by: Company detail view load or [View Statistics] button
    • Returns: Comprehensive participation statistics
    • Response: { totalEvents, totalPresentations, totalAttendees, firstEvent, mostRecentEvent, topicExpertise }
    • Used for: Statistics section in detail view
    • Consolidated: Single endpoint replaces /statistics and /activity (activity now included in statistics)
    • Service: Company Management Service

Primary Navigation Actions

  1. ← Back to Dashboard β†’ Navigate to Event Management Dashboard

  2. [+ Add New Company] button β†’ Opens create company modal

    • Type: Modal overlay
    • Opens: Create Company Form (inline modal)
    • Role-based access: Organizer (full), Speaker (basic create only)
    • Closes on: Save, Cancel, or ESC key
  3. Company Card click β†’ Navigate to company detail view

    • Type: Full page navigation
    • Target: Company Detail View (same file, different section)
    • Context: Company ID passed as route parameter
  4. [Edit] button β†’ Opens edit company modal

    • Type: Modal overlay
    • Opens: Edit Company Form (inline modal)
    • Pre-fills: Current company data
    • Role-based access: Organizer (all companies), Speaker (own company only)

Secondary Navigation (Data Interactions)

  1. [View Details] button β†’ Navigate to company detail view

    • Type: Full page navigation
    • Same as company card click
  2. [12 Associated Speakers β†’] link β†’ Navigate to filtered speaker list

  3. Search input (autocomplete) β†’ Show suggestions dropdown

    • Type: In-place dropdown
    • No navigation, displays suggestions below search bar
    • Click suggestion β†’ Filters company list
  4. Filter controls β†’ Update company list

    • Type: In-place content update
    • No navigation, updates company list with filtered results
    • Visual feedback: Loading spinner during API call
  5. [Grid/List] toggle β†’ Switch view mode

    • Type: In-place view change
    • No navigation, re-renders company list in different layout
  6. [Load More] button β†’ Load additional companies

    • Type: In-place content expansion
    • API call: Increments offset, appends results
    • Visual feedback: Loading spinner, then additional cards appear

Company Detail View Navigation

  1. [View Profile β†’] link (Speaker card) β†’ Navigate to speaker profile

  2. [+ Link Speaker] button β†’ Opens speaker search modal

    • Type: Modal overlay
    • Opens: Speaker search and selection modal
    • API call: POST /api/v1/companies/{companyId}/speakers/{speakerId} on selection
  3. [πŸ“Š View Partner Analytics β†’] button β†’ Navigate to partner analytics

    • Type: Full page navigation
    • Target: Partner Analytics Dashboard story-6.1-partner-analytics.md
    • Context: Company ID and partner data passed
    • Role-based access: Organizer and Partner users only
  4. [βš™ Settings] button β†’ Opens company settings modal

    • Type: Modal overlay
    • Opens: Company settings (advanced configuration)
    • Includes: Notifications, visibility, data export options
  5. [View All Speakers (12) β†’] link β†’ Navigate to speaker list

  6. [View Full History β†’] link β†’ Opens activity history modal or page

    • Type: Modal or full page (depending on data volume)
    • Shows: Complete activity timeline for company
    • API call: GET /api/v1/companies/{companyId}/activity with full pagination

Logo Upload Workflow Navigation

  1. Logo upload area click β†’ Opens file browser

    • Type: OS file dialog
    • No navigation, returns to form with selected file
  2. Drag & drop logo β†’ Upload and preview

    • Type: In-place file upload
    • Shows: Upload progress bar, then preview
    • API calls:
      • POST /api/v1/files/presigned-upload-url
      • Direct S3 upload via presigned URL
      • POST /api/v1/files/{fileId}/confirm
  3. [Remove] logo button β†’ Delete logo and clear preview

    • Type: In-place action
    • API call: DELETE /api/v1/files/{fileId} (if already uploaded)
    • Visual feedback: Preview clears, upload area resets

Error States & Redirects

  1. Company not found β†’ Navigate to company list with error

    • Type: Full page navigation with error message
    • Target: Company Management Screen (list view)
    • Message: β€œCompany not found or has been deleted”
  2. Unauthorized edit attempt β†’ Show permission error

    • Type: Inline error message
    • Message: β€œYou don’t have permission to edit this company”
    • No automatic navigation, edit button disabled
  3. API error during save β†’ Show error state

    • Type: In-page error message above form
    • Message: β€œUnable to save company. Please try again.”
    • Action: [Retry] button to resubmit
  4. Network error β†’ Show offline state

    • Type: Banner notification
    • Message: β€œYou are offline. Changes will be saved when connection is restored.”
    • Shows: Last cached data
  5. Upload quota exceeded β†’ Show quota error

    • Type: Modal dialog
    • Message: β€œStorage quota exceeded. Please remove old files or contact support.”
    • Action: [Manage Files] button β†’ User file management screen

Form Submission Flows

  1. [Save Draft] button β†’ Save without validation

    • Type: API call with partial data
    • No navigation, shows success toast: β€œDraft saved”
    • Allows: Incomplete data for later completion
  2. [Save & Create] button β†’ Validate and save

    • Type: API call with full validation
    • On success: Close modal, refresh company list, show toast: β€œCompany created successfully”
    • On validation error: Show inline errors, keep modal open
  3. [Cancel] button β†’ Discard changes

    • Type: Close modal
    • If unsaved changes: Show confirmation dialog
    • Confirmation: β€œDiscard unsaved changes?”
    • Actions: [Discard] [Keep Editing]

Responsive Design Considerations

Mobile Layout Changes

  • Search Bar: Full-width search with filters in collapsible panel
  • Company Cards: Full-width cards, stacked vertically
  • Logo Upload: Simplified upload button (no drag-and-drop on mobile)
  • Form Fields: Full-width fields, stacked layout
  • Partner Status: Collapse benefits into expandable accordion
  • Statistics: Swipeable cards for different stat categories

Tablet Layout Changes

  • Company Cards: Two-column grid layout
  • Search & Filters: Side-by-side layout with search and filters
  • Form Layout: Two-column form for better space utilization
  • Detail View: Side-by-side profile and statistics sections

Mobile-Specific Interactions

  • Swipe to Delete: Swipe left on company card to reveal delete option
  • Pull to Refresh: Refresh company list by pulling down
  • Bottom Sheet: Open filters and actions in bottom sheet instead of dropdown
  • FAB Button: Floating action button for [+ Add New Company]
  • Sticky Header: Company name sticky at top when scrolling detail view

Accessibility Notes

  • Keyboard Navigation: All interactive elements accessible via Tab key
  • ARIA Labels:
    • aria-label="Search companies" on search input
    • aria-label="Upload company logo" on upload area
    • aria-label="Mark as partner" on partner checkbox
    • aria-label="Verify company via Swiss UID" on verify button
  • Focus Indicators: 2px solid border on focused elements
  • Screen Reader Support:
    • Form fields have associated labels
    • Error messages announced with aria-live="polite"
    • Loading states announced: β€œLoading companies…”
    • Success/error toasts announced automatically
  • Color Contrast: All text meets WCAG 2.1 AA standards (4.5:1 minimum)
  • Alt Text: Company logos include descriptive alt text: β€œCompany name logo”
  • Skip Links: β€œSkip to company list” link for keyboard users
  • ARIA Live Regions: Search results and filters update announced to screen readers

State Management

Local Component State

  • searchQuery: string - Current search text
  • filters: object - Active filters (isPartner, industry, verificationStatus)
  • viewMode: β€˜grid’ | β€˜list’ - Current view mode
  • sortBy: string - Current sort field
  • isModalOpen: boolean - Create/edit modal state
  • selectedCompany: Company | null - Currently selected company for editing
  • uploadProgress: number - Logo upload progress percentage

Global State (Zustand Store)

  • companies.searchCache: Map - Cached search results
  • companies.filterPreferences: object - User’s saved filter preferences
  • auth.currentUser: User - Current authenticated user
  • auth.currentRole: UserRole - Current user role (organizer, speaker)
  • ui.notifications: Notification[] - Toast notifications

Server State (React Query)

  • companies: Company list (cached for 5 minutes)
  • companyDetail: Individual company (cached for 10 minutes)
  • companySuggestions: Autocomplete suggestions (cached for 15 minutes)
  • companyStatistics: Company stats (cached for 5 minutes)
  • associatedUsers: Company users (cached for 10 minutes, from User Service)
  • partnerships: Company partnership details (cached for 10 minutes, from Partner Service)

Real-Time Updates

  • WebSocket: Real-time company updates when other users make changes
  • Company Created: Toast notification when new company added
  • Partner Status Changed: Live update of partner badge and benefits
  • Verification Status: Real-time verification updates from Swiss UID register

Edge Cases & Error Handling

  • Empty Company List: Show β€œNo companies found” with [+ Add New Company] suggestion
  • No Search Results: Show β€œNo companies match your search” with suggestion to clear filters
  • Duplicate Company Name: Show warning: β€œA company with this name already exists. Continue anyway?”
  • Missing Logo: Display default company icon placeholder
  • Failed Logo Upload: Show error with [Retry Upload] button
  • UID Verification Timeout: Show β€œVerification taking longer than expected. We’ll notify you when complete.”
  • Loading State: Display skeleton screens while data loads
  • API Error: Show error message with [Retry] button
  • Permission Denied: Hide edit/delete buttons for unauthorized users
  • Offline Mode: Show cached data with banner β€œViewing offline version”
  • Slow Network: Show progress indicators for >2 seconds
  • Upload Too Large: Prevent upload, show β€œFile too large (max 5MB)”
  • Invalid File Type: Reject upload, show β€œPlease upload PNG, JPEG, or SVG files only”
  • Quota Exceeded: Block upload, show quota usage and [Manage Files] link
  • Concurrent Edit Conflict: Show β€œThis company was modified by another user. Refresh to see latest?”

Change Log

Date Version Description Author
2025-10-14 2.0 Architectural Refactoring: Updated wireframe to reflect Story 1.14 service boundary refactoring. Company Service now only manages company data (name, logo, Swiss UID, description, verification). Removed employee/user count fields and employee management features. Partnership management moved to Partner Coordination Service (Epic 8) with separate API endpoints. User-company associations moved to User Management Service. Updated all API Integration sections, UI elements, and data flows to use correct service boundaries per DDD principles. Winston (Architect)
2025-10-04 1.0 Initial wireframe creation for Company Management Screen Sally (UX Expert)

Review Notes

Open Questions

  1. Company Ownership: Should speakers be allowed to claim/verify their company affiliation?
  2. Auto-Verification: Should we auto-verify companies based on email domain matching?
  3. Company Merging: What workflow for merging duplicate companies discovered later?
  4. Historical Data: How to handle company data from 20+ years of historical events?
  5. Multi-Company Affiliation: Can speakers be associated with multiple companies over time?
  6. Partner Self-Service: Should partner companies have self-service access to update their info?

Design Iterations

  • v1.0: Initial comprehensive design with UID verification and partner management
  • Consider adding: Company relationship graph showing connections between companies and speakers
  • Consider adding: Company timeline showing participation history across all events
  • Consider adding: Bulk import feature for migrating historical company data

Stakeholder Feedback

  • Pending review from organizers for partner management workflow validation
  • Need to validate Swiss UID verification integration with actual register API
  • Confirm storage quota limits and CDN configuration with infrastructure team
  • Validate duplicate detection logic with historical data patterns