vault backup: 2026-02-27 10:43:35

This commit is contained in:
2026-02-27 10:43:36 +01:00
parent cf4bb46286
commit dcfaa481bd
13 changed files with 1405 additions and 139 deletions

View File

@@ -0,0 +1,149 @@
---
tags:
- eventkit
- discovery-questions
---
# Discovery Questions
Fill in your answers below each question. These will feed back into the existing documentation — see [[08 - Open Questions]] for the current list of unresolved items.
---
## 🎨 Frontend & User Experience
### 1. Frontend Framework
Do you have a preference? (e.g. React, Vue, Svelte, HTMX + Go templates, or something else?) Will it be a SPA or server-rendered?
> **Answer:** Personally, I'm mostly experienced with React. Since SEO isn't really an requirement I'd go with React. Personal preference: @tanstack/router & @tanstack/query.
### 2. Mobile App
Is a native mobile app planned (iOS/Android), or will a PWA / responsive web app cover mobile scanning use cases?
> **Answer:** A native mobile app is planned, but not prioritized. The native app should be written in react-native / expo using @tanstack/query.
### 3. Offline Support
How important is offline capability? Should warehouse staff be able to scan and queue operations when connectivity drops?
> **Answer:** If possible, not a 100% requirement
---
## 💰 Commercial & Business Logic
### 4. Pricing Model
How is equipment hire priced? Per-day? Per-event? Tiered rates for longer hires? Weekend vs weekday rates?
> **Answer:** It depends. Per day (rental) or per Event (service). Yes tiered rates would be an interesting feature and weekend vs. weekday rates. Or on and off season rates would also be an interesting feature, but without priority.
### 5. Accounting Integration
You mentioned Xero/QuickBooks — is one of these the priority? How deep should the sync go (invoices only, or also payments/purchase orders)?
> **Answer:** I want to provide users with integrated accounting features, but also give the options to use Xero / QuickBooks. But integrated accounting features have the priority and Xero and QuickBooks is optional. Invoices, payments and purchases.
### 6. Multi-Currency
Is this a real requirement now, or a future nice-to-have? If now, do you need live exchange rates or manual rates?
> **Answer:** It's a future nice-to-have. Live exchange rates.
---
## 👥 Users & Access
### 7. Multi-Tenancy
In the managed SaaS model, is it one database per tenant (instance), or a shared database with tenant isolation?
> **Answer:** In the SaaS model a shared database with tenant isolation is prefered
### 8. Crew Portal
Do crew members get their own login to see schedules, confirm availability, submit timesheets? Or is crew management admin-only?
> **Answer:** Crewmembers should be able to login and confirm availability.
### 9. Client Portal
Should clients be able to log in to view/approve quotes, see event status, or download invoices?
> **Answer:** Yes Client should also be able to login an view/approve/deny/... quotes/...
---
## 🔗 Federation & Sub-hire
### 10. Federation Discovery
How do companies find each other? Manual URL exchange? A public directory? An invite-link mechanism?
> **Answer:** Manual URL exchange
### 11. Sub-hire Pricing
When sub-hiring from a partner, are prices negotiated per-transaction, or are rate cards pre-agreed in the trust relationship?
> **Answer:** Prices should be negotiated per-transaction
### 12. Asset Ownership Transfer
Can an asset permanently change ownership between instances (e.g. selling equipment to a partner)?
> **Answer:** Yes
---
## 📦 Inventory Specifics
### 13. Existing Barcodes
Many companies already have barcode/label systems. Should EventKit support importing/mapping legacy barcodes alongside the new QR system?
> **Answer:** Yes, but only if possible
### 14. Consumable Procurement
Should the system generate actual purchase orders, or just alert that stock is low?
> **Answer:** Generate purchase orders, which should be manually confirmed.
### 15. Insurance & Compliance
Should the system track PAT testing, LOLER certificates, insurance expiry, and gate these against dispatch?
> **Answer:** Yes, but with Austrian / European testing standards.
---
## 🚀 Deployment & Operations
### 16. Target Scale
What's a "typical" customer? 100 assets or 100,000? 5 concurrent events or 500? This affects architecture decisions significantly.
> **Answer:** This is not completely discussed. Both should be possible, but main target are small to medium sized companies wanting to share ressources.
### 17. Data Migration
Will customers be migrating from existing systems (CurrentRMS, Rentman, HireTrack, spreadsheets)? Should import tooling be a priority?
> **Answer:** Importing should be a cool nice to have future feature
### 18. Notification Channels
Email only, or also push notifications, SMS, Slack/Teams webhooks?
> **Answer:** EMail, Web and Native push. Webhooks. No SMS
---
## Related Documentation
- [[00 - System Overview]] — High-level system overview
- [[08 - Open Questions]] — Existing open questions list
- [[07 - Technical Requirements]] — Technical decisions already made

View File

@@ -0,0 +1,243 @@
---
tags:
- eventkit
- discovery-questions
---
# Discovery Questions — Round 2
Deeper questions building on your earlier answers. These target the remaining open items from [[08 - Open Questions]] and drill into implementation details.
---
## 🎯 Scope & MVP
### 1. Primary Equipment Sectors
Which sectors should the MVP support first? Pick the top 2-3 that you'd want to demo:
- [x] Audio (PA systems, microphones, mixing desks)
- [x] Lighting (moving heads, LED fixtures, dimmers)
- [ ] Video (projectors, LED walls, cameras)
- [ ] Staging (decks, legs, railings)
- [x] Rigging (truss, motors, chains, shackles)
- [x] Power distribution (distros, cables, generators)
- [ ] Furniture (tables, chairs, bars, décor)
- [ ] Other: \_\_\_
> **Answer:**
### 2. MVP Build Order
The natural order seems to be: Inventory + Scanning → Planning → CRM → Federation. Do you agree, or would you re-order?
> **Answer:** I agree with the order.
### 3. EventKit's Own Pricing Model
How will EventKit itself be offered to customers?
- [ ] Fully open source (self-hosted only, community support)
- [x] Open core (free self-hosted, paid SaaS with premium features)
- [ ] Paid licence (self-hosted with per-seat or per-instance licence)
- [ ] SaaS only
- [ ] Other: \_\_\_
> **Answer:**
---
## ⚙️ Technical Architecture
### 4. Search
For asset/product search across potentially large inventories — start with PostgreSQL full-text search and add a dedicated engine later, or use something like Meilisearch from the start?
> **Answer:** Seems good to start with PostgreSQL full-text search and add a dedicated engine later.
### 5. File Storage
Where should uploaded files (photos, manuals, certificates) live?
- [ ] Local filesystem (simplest for self-hosted)
- [ ] S3-compatible object storage (MinIO for self-hosted, AWS S3 for SaaS)
- [x] Support both, configurable per deployment
> **Answer:**
### 6. Real-time Updates
Should the UI update in real-time (e.g. when another user scans an asset, dashboards update live)? If yes, gRPC server-streaming via ConnectRPC is the natural fit. Do you want this from the start?
> **Answer:** Not from the start, but it would be nice to have in the future.
### 7. Background Jobs
For tasks like sending emails, generating reports, processing federation messages — use Go's built-in concurrency (goroutines + internal queue), or an external broker like NATS or Redis?
> **Answer:** I want to deploy this on a Kubernetes cluster, so I would prefer to use an external broker like NATS or Redis.
---
## 📧 Communication & Integration
### 8. Email Integration
How should the CRM handle email?
- [ ] Just log emails manually (no integration)
- [ ] SMTP sending only (send from within EventKit, no inbox)
- [x] Full IMAP/SMTP integration (send and receive within EventKit)
- [ ] Gmail/Outlook API integration
- [ ] Start simple, expand later
> **Answer:** SMTP and IMAP integration would be nice to have utilizing features like sub-addressing to route emails to specific projects or clients.
### 9. Marketing Features
Should EventKit include any marketing tools (e.g. email campaigns, newsletters), or leave this to dedicated tools like Mailchimp?
> **Answer:** Not for now.
### 10. Calendar Sync
Should crew schedules and events sync with external calendars?
- [x] Google Calendar
- [x] Outlook / Exchange
- [x] CalDAV (generic)
- [x] iCal export only (manual, no live sync)
- [ ] Not needed for now
> **Answer:** CalDAV and iCal export only would be nice to have. And Google Calendar and Outlook / Exchange integration would be nice to have in the future.
---
## 📱 Scanning & Hardware
### 11. Primary Scanning Device
What should the primary scanning experience be?
- [ ] Phone camera only (lower cost of entry)
- [ ] Bluetooth barcode scanner paired to phone/tablet (faster for bulk ops)
- [x] Support both — phone camera as default, Bluetooth scanner as optional power-user feature
- [ ] Dedicated rugged scanner devices
> **Answer:**
### 12. Label Printing
How should QR labels be produced?
- [ ] Generate PDF sheets — users print on any label printer (Avery sheets, etc.)
- [ ] Direct integration with label printers (Brother QL, DYMO, Zebra)
- [x] Both — PDF as default, direct printing as optional
- [x] Not needed — users can print QR codes however they want
> **Answer:** Both — PDF as default, direct printing as optional. But not needed — users can print QR codes however they want.
---
## 🔗 Federation Details
### 13. Federation Versioning
When the federation protocol evolves (new fields, new RPCs) — should there be a formal version negotiation during handshake, or rely on Protobuf's built-in backward compat and just document breaking changes?
> **Answer:** Rely on Protobuf's built-in backward compat and just document breaking changes.
### 14. Dispute Resolution
When Company A returns equipment to Company B and they disagree about condition — what should EventKit provide?
- [ ] Photo evidence required at dispatch and return (comparison view)
- [x] Timestamped condition logs with before/after
- [ ] A formal dispute workflow (raise dispute, evidence, resolution)
- [x] Just logging — disputes handled out-of-band
- [ ] Some combination of above: \_\_\_
> **Answer:** Timestamped condition logs with before/after and just logging — disputes handled out-of-band.
---
## 🚛 Planning Details
### 15. Transport Planning
How advanced should transport logistics be?
- [ ] Basic: assign vehicles to events, simple load lists
- [x] Intermediate: weight/volume calculations, truck pack lists
- [x] Advanced: route optimisation, multi-stop planning, fuel tracking
- [x] Start basic, extend later
> **Answer:** Intermediate: weight/volume calculations, truck pack lists and advanced: route optimisation, multi-stop planning, fuel tracking. But start basic, extend later.
### 16. Venue Database
Should venue data be:
- [ ] Local only — each instance manages its own venue records
- [x] Federated — instances can share venue specs across the network
- [x] Start local, federate later
> **Answer:** Federated — instances can share venue specs across the network. But start local, federate later.
---
## 🌍 Localisation & Compliance
### 17. Language Support
Should the UI be localised from the start? If so, which languages for MVP?
- [ ] English only for MVP
- [x] English + German
- [x] Full i18n framework from the start, translations added incrementally
- [ ] Other: \_\_\_
> **Answer:** Full i18n framework from the start, translations added incrementally. But other: English + German to start of.
### 18. Currency & Tax
Which currency and tax regime should be supported first?
- [ ] EUR only (Austrian VAT rules)
- [ ] EUR + GBP (UK VAT / Austrian VAT)
- [x] Configurable from the start (currency, tax rates, tax ID formats)
> **Answer:** Configurable from the start (currency, tax rates, tax ID formats).
---
## 💡 UX & Design
### 19. Design Language
Do you have any preferences for the overall look and feel?
- [x] Clean and minimal (e.g. Linear, Notion)
- [ ] Dashboard-heavy with data density (e.g. Grafana, Datadog)
- [x] Modern and colourful (e.g. Figma, Notion)
- [ ] Reference app/website for inspiration: \_\_\_
> **Answer:** Designed using shadcn ui components.
### 20. Dark Mode
Should dark mode be supported?
- [x] Yes, as default
- [ ] Yes, as toggle (light default)
- [ ] Not needed for MVP
> **Answer:** Yes, as default. Eventually, I would like to have a toggle to switch between other color schemes as well (e.g. high contrast mode).
---
## Related Documentation
- [[08 - Open Questions]] — Tracks which questions are still open
- [[00-DiscoveryQuestions]] — Round 1 answers
- [[07 - Technical Requirements]] — Decisions already made

View File

@@ -0,0 +1,252 @@
---
tags:
- eventkit
- discovery-questions
---
# Discovery Questions — Round 3
Now that all high-level decisions are made, this round focuses on **implementation details**, **edge cases**, and **workflow specifics** that will shape the actual code.
---
## 📦 Inventory — Asset Model
### 1. Asset Numbering Scheme
How should human-readable asset IDs work? Examples:
- `SM58-001`, `SM58-002` — product prefix + sequential number
- `A-2024-00001` — company prefix + year + sequence
- User-defined per product category
- No scheme — just UUID, users label however they want
> **Answer:** Product prefix + sequential number for human readable id, UUID for internal id
### 2. Asset Condition Tracking
How granular should condition states be?
- [x] Simple: Good / Damaged / Written Off
- [ ] Detailed: New / Excellent / Good / Fair / Needs Repair / Damaged / Written Off
- [x] User-definable condition states
> **Answer:** Simple: Good / Damaged / Written Off, but user-definable
### 3. Kit / Set Behaviour
When a Kit is added to a pull list, should:
- [ ] All items in the Kit be individually reserved (items tracked separately)
- [x] The Kit be treated as a single unit (all-or-nothing)
- [x] Both options — user chooses per Kit
> **Answer:** Both options — user chooses per Kit. Default option is all-or-nothing.
---
## 🗂️ Data & Schema
### 4. Soft Delete vs Hard Delete
Should deleted records be:
- [ ] Soft deleted (marked as deleted, hidden from UI, recoverable)
- [ ] Hard deleted (permanently removed)
- [x] Soft delete by default, hard delete with admin action after a retention period
> **Answer:** Soft delete by default, hard delete with admin action after a retention period.
### 5. Audit Trail Depth
How much should be logged?
- [ ] Just entity-level changes (who changed what, when)
- [x] Field-level change history (old value → new value for every field)
- [x] Full audit trail with field-level diff (like a Git history for every record)
> **Answer:** Field-level change history (old value → new value for every field). Full autit train in the future
### 6. Multi-Warehouse
Can a company have multiple warehouse locations?
- [x] Yes — from the start
- [ ] No — single warehouse per instance for MVP
- [ ] Yes, but only a "primary" + "secondary" distinction
> **Answer:** Yes — from the start
---
## 💰 Accounting & Finances
### 7. Tax Calculation
How should VAT/tax work?
- [ ] Single tax rate per instance (e.g. 20% Austrian USt for everything)
- [ ] Per-product tax rates (some items exempt, some reduced rate)
- [x] Per-product + per-customer tax logic (reverse charge for EU B2B)
- [x] Configurable — I want flexibility
> **Answer:** Per-product + per-customer tax logic (reverse charge for EU B2B). Configurable — I want flexibility
### 8. Payment Methods
Which payment methods should be tracked?
- [x] Just record that a payment was made (manual)
- [ ] Bank transfer details (IBAN, reference)
- [ ] Online payments (Stripe, PayPal integration)
- [ ] Start manual, add online payments later
> **Answer:** Just record that a payment was made (manual). Online Payment's arn't planned, but integration with Bank APIs for automatic payment tracking is planned.
### 9. Deposit / Advance Payments
Should the system support deposits (e.g. 50% upfront, 50% after event)?
- [ ] Yes — multiple partial payments against an invoice
- [x] Yes — separate deposit invoice + final invoice
- [ ] Not needed for MVP
> **Answer:** Yes — separate deposit invoice + final invoice
---
## 👥 Users & Permissions
### 10. Custom Roles
Beyond the predefined roles (Admin, Manager, Planner, Warehouse, Sales, Crew, Read-only), should admins be able to create fully custom roles with granular permissions?
- [x] Yes — from the start
- [ ] No — predefined roles are enough for MVP
- [ ] Predefined roles, but with optional per-role permission overrides
> **Answer:** Yes, User and Role Management is planned with Keycloak as an authentication provider. Roles should be managed in Keycloak, not in the application. The application should only read the roles from Keycloak. And granting Permissions to roles should also be handled in our application.
### 11. User Invitation Flow
How should new users be onboarded?
- [ ] Admin creates account, sends login credentials
- [ ] Email invitation with sign-up link
- [x] Both — admin creates, user sets own password via email link
> **Answer:** All users shoud be confirmed by an admin in some way. So the admin creates the user and sends an email invitation to the user. The user can then set his own password via email link.
### 12. SSO Providers
Which SSO providers should be supported for MVP?
- [ ] None — email/password only for MVP
- [ ] Google OAuth
- [ ] Microsoft / Azure AD
- [x] Generic OIDC (works with Keycloak, Auth0, etc.)
- [ ] All of the above
> **Answer:** Generic OIDC (works with Keycloak, Auth0, etc.)
---
## 📋 Quoting & Sales
### 13. Quote Versioning
When a quote is revised, should:
- [ ] The original be overwritten
- [x] Each revision be saved as a separate version (v1, v2, v3...)
- [ ] Revision history tracked but only latest version visible to client
> **Answer:** Each revision be saved as a separate version (v1, v2, v3...)
### 14. Quote → Invoice Flow
How should a confirmed quote become an invoice?
- [ ] Auto-generate invoice from quote (one click)
- [x] Copy quote to invoice draft for manual adjustment
- [ ] Both options
> **Answer:** Copy quote to invoice draft for manual adjustment
### 15. Client Approval Workflow
For the client portal, when a client approves a quote:
- [ ] Instant approval — quote status changes immediately
- [x] Approval with e-signature (legally binding)
- [x] Approval with comment / conditions
- [x] Simple approval for MVP, e-signature later
> **Answer:** Approval with e-signature (legally binding) and comments / conditions.
---
## 🏗️ Event Workflow
### 16. Event Phases
Should events have customisable phases, or a fixed lifecycle?
- [ ] Fixed: Draft → Confirmed → In Progress → Completed → Closed
- [x] Customisable phases per event type
- [ ] Fixed lifecycle with optional sub-statuses
> **Answer:** Customisable phases per event type, but default phases should be provided. Draft - Confirmed - In Progress - Completed - Closed
### 17. Recurring Events
Should recurring events be supported (e.g. weekly residency at same venue)?
- [x] Yes — template-based with auto-generation
- [x] Yes — clone previous event
- [ ] Not needed for MVP
> **Answer:** Yes — template-based with auto-generation and clone previous event
### 18. Projects / Multi-Day Events
Should a "Project" (grouping multiple related events) be a first-class entity?
- [x] Yes — project contains multiple events, shared budget/client
- [x] No — events are standalone, just tag them for grouping
- [x] Simple grouping for MVP, full project entity later
> **Answer:** Events are standalone, but can be grouped in projects. Projects can have multiple events, shared budget/client. Simple grouping for MVP, full project entity later.
---
## 🔐 Security & Auth
### 19. Session Management
How should user sessions work?
- [ ] JWT with short expiry + refresh token
- [ ] Session-based (server-side session store)
- [ ] JWT for API, session for web UI
> **Answer:** Handled by Keycloak
### 20. API Key Scoping
Should API keys be scoped to specific permissions/modules?
- [x] Yes — granular scopes (e.g. `inventory:read`, `planning:write`)
- [ ] No — API keys get full access of the user who created them
- [x] Start simple (full access), add scopes later
> **Answer:** Yes — granular scopes (e.g. `inventory:read`, `planning:write`). Start simple (full access), add scopes later.
---
## Related Documentation
- [[08 - Open Questions]] — All 30 original questions now answered
- [[00-DiscoveryQuestions]] — Round 1 answers
- [[01-DiscoveryQuestions]] — Round 2 answers
- [[07 - Technical Requirements]] — Technical decisions made

View File

@@ -0,0 +1,254 @@
---
tags:
- eventkit
- discovery-questions
---
# Discovery Questions — Round 4
We're now deep into implementation territory. This round focuses on **UI/UX workflows**, **edge cases**, **integrations**, and **operational details**.
---
## 🖥️ UI & Workflows
### 1. Dashboard — What's Most Important?
What should the main dashboard show when a user logs in? Pick your top priorities:
- [x] Upcoming events (next 7/14/30 days)
- [x] Equipment utilisation overview
- [x] Open quotes / pending approvals
- [x] Overdue returns / missing equipment
- [x] Revenue summary
- [x] Low-stock consumable alerts
- [x] Crew availability overview
- [x] Recent activity feed
- [ ] Other: \_\_\_
> **Answer:** Configurable dashboard per user. Multiple with simple view switching
### 2. Navigation Structure
How should the main app be structured?
- [ ] Sidebar navigation with module sections (Inventory, Planning, CRM, etc.)
- [ ] Top navigation bar with dropdowns
- [x] Sidebar + command palette (Cmd+K) for quick navigation
- [ ] Other preference: \_\_\_
> **Answer:**
### 3. Bulk Operations
Which bulk operations are critical for daily work?
- [ ] Bulk status change (e.g. mark 50 assets as "In Service")
- [ ] Bulk assign to event (select multiple assets → assign to pull list)
- [ ] Bulk print labels (select assets → generate label sheet)
- [ ] Bulk import (CSV upload for assets, contacts, products)
- [ ] Bulk export (export filtered views to CSV/Excel)
- [x] All of the above
> **Answer:**
---
## 📊 Reporting & Analytics
### 4. Report Output Formats
How should reports be delivered?
- [ ] In-app only (charts and tables on screen)
- [ ] PDF export
- [ ] CSV/Excel export
- [ ] Scheduled email delivery (e.g. weekly utilisation report)
- [x] All of the above
> **Answer:**
### 5. Custom Reports
Should users be able to build custom reports, or are predefined reports enough for MVP?
- [ ] Predefined reports only
- [x] Predefined + simple filters/grouping
- [x] Full custom report builder (drag-and-drop fields, custom calculations)
- [x] Predefined for MVP, custom builder later
> **Answer:**
---
## 🔄 Integrations & Webhooks
### 6. Webhook Events
Which events should trigger outbound webhooks? Pick the critical ones:
- [x] Asset status changed (checked out, returned, damaged)
- [x] Event status changed (confirmed, completed, cancelled)
- [x] Quote approved / rejected by client
- [x] Invoice paid
- [x] Low stock alert
- [x] Federation events (sub-hire request, asset transfer)
- [x] All entity changes (CRUD on any major entity)
> **Answer:**
### 7. Bank API Integration
You mentioned automatic payment tracking via bank APIs. Any preferences?
- [x] Open Banking APIs (PSD2 — European standard)
- [ ] Specific bank: \_\_\_
- [x] Generic bank statement import (CSV/MT940)
- [x] Not sure yet — decide later
> **Answer:**
---
## 📦 Warehouse Operations
### 8. Stocktake Process
How should stocktakes work?
- [x] Full stocktake — scan everything, compare against expected inventory
- [x] Partial/zone stocktake — scan specific areas/shelves
- [x] Continuous rolling stocktake — scan a section each day
- [x] All approaches
> **Answer:** User selectable
### 9. Prep Workflow
When preparing equipment for an event, should there be a formal "prep checklist"?
- [x] Yes — per-product checklist (e.g. "test power", "check firmware", "include accessories")
- [x] No — just scan to check out, the pull list is the checklist
- [x] Optional checklists — define per product category if wanted
> **Answer:** User selectable.
### 10. Damage Reporting
When equipment returns damaged, what should happen?
- [x] Flag asset as damaged, create maintenance task automatically
- [x] Flag + photo evidence required
- [x] Flag + photo + cost estimate for client charge-back
- [x] Configurable workflow per damage severity
> **Answer:** User selectable.
---
## 🌐 Federation — Edge Cases
### 11. Federation Downtime
When a federated partner's instance is offline, what should happen to pending requests?
- [x] Queue in outbox, retry automatically when partner comes back
- [x] Queue + notify admin after X hours of failed retries
- [x] Fail immediately with manual retry option
> **Answer:** User selectable.
### 12. Federation Data Sync
How much data should be visible about a partner's inventory?
- [ ] Nothing — they respond to availability queries in real-time
- [ ] Cached summary (category counts, general availability)
- [ ] Product catalogue shared (but not individual asset details)
- [x] Configurable per trust level
> **Answer:**
---
## ⚡ Performance & Infrastructure
### 13. Caching Strategy
For a Kubernetes deployment, what caching layer do you prefer?
- [x] Redis (already considering for background jobs — reuse for caching)
- [ ] In-memory only (Go's built-in caching, no external dependency)
- [ ] No caching for MVP — optimise later
> **Answer:** Redis
### 14. Database Migrations
How should schema migrations be handled?
- [ ] Automatic on startup (app runs migrations before serving)
- [ ] Separate migration step (run migrations explicitly before deploying new version)
- [x] Both — auto for dev, explicit for production
> **Answer:** Both — auto for dev, explicit for production
---
## 📄 Documents & Branding
### 15. Document Branding
For generated PDFs (quotes, invoices, pull lists), how customisable should branding be?
- [x] Basic — company logo + name + colours
- [x] Full template customisation (header, footer, fonts, layout)
- [x] HTML/CSS template engine (users provide their own templates)
- [x] Basic for MVP, full templates later
> **Answer:** User selectable.
### 16. Document Numbering
How should quotes and invoices be numbered?
- [ ] Sequential: `INV-0001`, `INV-0002`
- [ ] Year-based: `INV-2026-0001`
- [x] Configurable prefix + sequence per document type
- [ ] Other: \_\_\_
> **Answer:** Configurable prefix + sequence per document type.
---
## 🧪 Testing & Quality
### 17. Testing Strategy
For development, which testing approach do you prefer?
- [ ] Unit tests + integration tests (standard)
- [ ] Unit + integration + E2E browser tests (Playwright/Cypress)
- [ ] Heavy emphasis on integration tests with testcontainers
- [x] Whatever gets us shipping fastest with confidence
> **Answer:**
### 18. Staging Environment
Should there be a formal staging/preview environment?
- [ ] Yes — dedicated staging with sample data
- [x] Yes — ephemeral preview environments per PR (Kubernetes-native)
- [x] No — local dev + production is enough for now
> **Answer:** Yes — ephemeral preview environments per PR (Kubernetes-native) not with priority
---
## Related Documentation
- [[00-DiscoveryQuestions]] — Round 1 answers
- [[01-DiscoveryQuestions]] — Round 2 answers
- [[02-DiscoveryQuestions]] — Round 3 answers
- [[07 - Technical Requirements]] — Technical decisions made

View File

@@ -0,0 +1,216 @@
---
tags:
- eventkit
- discovery-questions
---
# Discovery Questions — Round 5
We're narrowing in on the final implementation details. This round focuses on **data architecture**, **notification specifics**, **multi-tenancy edge cases**, and **operational workflows**.
---
## 🗄️ Data Architecture
### 1. Tenant Isolation (SaaS Mode)
For the shared-DB multi-tenancy with RLS — should tenants be able to:
- [ ] Share nothing (complete isolation, even separate schemas)
- [ ] Share reference data (e.g. common product catalogues, venue databases)
- [ ] Share everything except user data (federated approach within SaaS)
- [x] Complete isolation via RLS — no cross-tenant data ever
> **Answer:** Federate using Federation Architecture
### 2. Data Retention Policy
How long should data be kept?
- [ ] Indefinitely (never auto-purge)
- [x] Configurable retention per entity type (e.g. events: 5 years, audit logs: 7 years)
- [ ] Configurable globally (e.g. "keep everything for 10 years")
- [x] Follow Austrian/EU legal requirements (varies by document type)
> **Answer:**
### 3. File Versioning
When a file attached to an asset is updated (e.g. new manual version):
- [ ] Overwrite the old file
- [x] Keep version history (v1, v2, v3)
- [ ] Keep version history with diff/comparison view
> **Answer:**
---
## 🔔 Notifications
### 4. Notification Preferences
Should users control which notifications they receive?
- [x] Yes — granular per-event-type toggle (e.g. "notify me about overdue returns but not new quotes")
- [ ] Yes — but only broad categories (e.g. "inventory alerts", "CRM updates")
- [ ] No — admins configure notification rules globally
> **Answer:** Future feature
### 5. Email Templates
Should notification emails be customisable?
- [ ] Fixed templates (EventKit branding)
- [ ] Tenant-branded templates (company logo, colours)
- [ ] Fully customisable HTML templates per notification type
- [x] Tenant-branded for MVP, full customisation later
> **Answer:**
---
## 🏢 Multi-Tenancy & Operations
### 6. Tenant Onboarding
For SaaS, how should new tenants be set up?
- [ ] Self-service sign-up (create account → start using immediately)
- [x] Self-service with admin approval before activation
- [x] Manual onboarding (admin creates tenant)
- [ ] Self-service for MVP, approval flow later
> **Answer:**
### 7. Tenant Data Export
Should tenants be able to export all their data (GDPR Article 20)?
- [x] Yes — full data export in JSON/CSV at any time
- [x] Yes — full export + ability to delete all data (right to be forgotten)
- [ ] Admin-triggered export only
> **Answer:**
### 8. Tenant Limits / Quotas
Should the SaaS tier enforce limits?
- [ ] No limits (fair use policy)
- [x] Soft limits with warnings (e.g. "you have 10,000 assets, consider upgrading")
- [ ] Hard limits per plan (e.g. free: 100 assets, pro: 10,000, enterprise: unlimited)
- [x] Decide pricing tiers later
> **Answer:**
---
## 📋 Operational Workflows
### 9. Return Inspection Detail
When equipment returns from an event, how detailed should the inspection be?
- [ ] Simple: scan asset → mark as returned → done
- [ ] Standard: scan → condition check (good/damaged) → shelve
- [x] Detailed: scan → per-item checklist → photos → condition update → cleaning queue → shelve
- [ ] Configurable per product category
> **Answer:**
### 10. Consumable Allocation
How should consumables be tracked per event?
- [x] Estimated at planning stage, actual recorded after event
- [ ] Deducted from stock when event is confirmed
- [x] Deducted when physically dispatched (scan-based)
- [ ] Flexible — user chooses per consumable type
> **Answer:**
### 11. Asset Reservation Rules
When equipment is reserved for an event, should:
- [ ] Hard reservation — cannot be booked for anything else in that window
- [ ] Soft reservation — can be overridden with manager approval
- [x] Configurable per event priority level
> **Answer:**
---
## 🔌 API & Developer Experience
### 12. API Documentation
How should the API be documented?
- [x] Auto-generated from Protobuf definitions (buf.build registry)
- [ ] OpenAPI/Swagger (via ConnectRPC's REST mapping)
- [ ] Both Protobuf docs + OpenAPI
- [x] Minimal docs for now — just the .proto files
> **Answer:**
### 13. Plugin / Extension System
Should EventKit support third-party plugins or extensions?
- [ ] Yes — from the start (plugin API, hooks, event system)
- [x] Yes — but later (design for it now, implement later)
- [ ] No — keep it simple, extensibility via webhooks and API
> **Answer:**
### 14. Import from Other Systems
What systems might users migrate from?
- [x] Spreadsheets (Excel/Google Sheets)
- [x] Rentman
- [x] Flex Rental Solutions
- [x] Current RMS
- [x] EasyJob
- [x] Custom / in-house systems
- [x] Don't know yet — generic CSV import is enough for now
> **Answer:** All of the above, but optoinal feature for sumetimes in the future.
---
## 🎨 UI Detail
### 15. Table vs Card Views
For list pages (assets, events, contacts), should there be:
- [ ] Table view only (data-dense, sortable columns)
- [ ] Card view only (visual, thumbnail-based)
- [ ] Both — user toggles between table and card view
- [x] Table default, card view for specific entities (e.g. assets with photos)
> **Answer:**
### 16. Keyboard Shortcuts
Beyond Cmd+K, should there be keyboard shortcuts for common actions?
- [x] Yes — full keyboard navigation (like Linear)
- [ ] Basic shortcuts only (Cmd+N new, Cmd+S save, etc.)
- [ ] Not needed for MVP
> **Answer:**
---
## Related Documentation
- [[00-DiscoveryQuestions]] — Round 1 answers
- [[01-DiscoveryQuestions]] — Round 2 answers
- [[02-DiscoveryQuestions]] — Round 3 answers
- [[03-DiscoveryQuestions]] — Round 4 answers
- [[07 - Technical Requirements]] — Technical decisions made