story: biz tool #210

Open
opened 2026-05-04 09:41:01 +00:00 by marionrvrn · 2 comments
Member

Deliverables

Deliverables

Deliver a working organization business tool where the user can select a context, with each context representing a company or organization. Inside that context, the tool must manage the full company workflow: CRM/contacts, tasks, projects, stories, shareholders, contracts, employees, finance-related records, and all other business functions already present in the app.

The deliverable is not a new app-store or modular system. The goal is to make the existing integrated business tool usable, connected, and consistent for one organization at a time, with proper cross-linking between records, clean naming, readable data, formatted amounts, and working create/edit/save flows.

Requirements

  • Deliver a working organization business tool where the user can select a context, with each context representing a company or organization.
  • Inside the selected context, support the full company workflow already present in the app: CRM/contacts, tasks, projects, stories, shareholders, contracts, employees, finance-related records, and other business functions.
  • Make the tool work as one integrated business app, not as an app-store or modular install system.
  • Ensure records are properly connected across the organization context, including contacts, companies, tasks, projects, contracts, shareholders, employees, finance records, and stories.
  • Use clean and consistent naming across the app, especially Contacts instead of People or Persons.
  • Show readable names, titles, and links for related records as well as the SIDS
  • Format all amount fields properly with currency, separators, and readable compact notation where useful.
  • Make all create, edit, save, and delete/archive flows work reliably.

Updated Specs / Feedback Notes

Context

The first business app is intended for internal company use first.

It is one integrated tool for now, not a set of perfectly separated apps.

The tool should support:

  • business management
  • finance
  • contracts
  • HR
  • tasks
  • project management
  • CRM-style contact management

Later we can split things up if needed, but today the goal is simple:

Make the business tool work properly as one app first.

There are currently two business tools.
The focus should be on the non-Dioxus business tool, because that version already had most of the features before.

Most of the existing comments are okay.
The comments below clarify what needs to change.


General

1. Business suite structure

The current structure is acceptable for now.

We are not trying to decide today whether every part should become a separate app.

For now, we want one business tool that brings together:

  • contacts
  • companies
  • finance
  • contracts
  • HR
  • tasks
  • projects

The main requirement is that the tool works cleanly and consistently.

2. No app store discussion for now

Do not focus on Store or app-store logic today.

We do not need to solve whether CRM, HR, Finance, Contracts, or Tasks should be optional installable modules.

That can come later.

For now:

  • keep everything in one business app
  • make the app usable
  • fix the bugs
  • clean up naming
  • improve linking between records
  • make data display properly

Naming Rules

1. Use Contacts, not People

The correct term is:

Contacts

Do not rename this to People.

A contact is the person or party we can interact with.

Use Contacts consistently across:

  • navigation
  • breadcrumbs
  • page titles
  • buttons
  • tables
  • detail pages
  • linked records

Example:

Current:

Business / People / Persons

Should become:

Business / Contacts

2. Remove “Persons”

The term Persons should not be used.

Replace:

Persons → Contacts

This applies everywhere.

3. Contact is not the same as Interaction

A contact is not an interaction.

A contact is a person or reachable business relationship.

An interaction is an activity or touchpoint with a contact.

Examples of contacts:

  • investor
  • customer contact
  • supplier contact
  • employee contact
  • partner contact
  • board member
  • advisor
  • contractor

Examples of interactions:

  • call
  • email
  • meeting
  • note
  • follow-up
  • task discussion
  • contract discussion

So the model should be:

Contact = who
Interaction = what happened with them

4. Keep Contacts and Interactions separate

We should not replace Contacts with Interactions.

They are different things.

A contact can have many interactions.

Example:

Contact:

John Smith, CFO at Example Ltd.

Interactions:

  • Call on Monday about contract
  • Follow-up email about invoice
  • Meeting note about investment
  • Reminder to send proposal

BIZ

1. Save error must be fixed

Current issue:

All saves fail: “Socket 'web_threefold.sock' not found”

Requirement:

This must be fixed.

The app cannot be tested or used properly until save actions work.

This is a technical routing/socket issue and must be maintained and corrected.

2. Use Contacts

Do not rename Contacts to People or Interactions.

Requirement:

Use:

Contacts

A contact is the person or party we can interact with.

3. Remove Persons

Current issue:

Persons is used in some places.

Requirement:

Replace:

Persons → Contacts

Example:

Current:

Business / People / Persons

Should become:

Business / Contacts

4. Interactions should only be activity logs

If there is a section with fields like:

  • Subject
  • Type
  • Direction
  • Follow-up
  • Date
  • Notes

Then that section can be called:

Interactions

But it must be linked to a Contact.

An interaction should not replace the Contact record.


Business / CRM

1. Focus on the non-Dioxus version

Requirement:

Focus implementation and fixes on the non-Dioxus business tool.

Reason:

This version already had most of the features in the past and is the better base for now.

2. Use Contacts everywhere

Requirement:

Use Contacts as the main term for people/person records.

Do not use:

  • Persons
  • People

Use:

  • Contacts
  • Contact detail
  • Contact list
  • Add Contact
  • Edit Contact

3. Contact and company relationship

A contact can be linked to one or more companies.

Example:

Contact:

John Smith

Linked company:

Example Ltd.

Role:

CFO

The company page should show its linked contacts.

The contact page should show linked companies.

4. Contact and interaction relationship

A contact can have multiple interactions.

Example:

Contact:

John Smith

Linked interactions:

  • Call about proposal
  • Email about contract
  • Meeting about investment
  • Follow-up reminder

The contact detail page should show these interactions.

The interaction detail page should link back to the contact.

5. Replace internal SIDs with readable names

Current issue:

Contact detail page shows internal SIDs such as “Person SID: 0001”

Requirement:

Do not show raw internal SIDs as the main display value.

Show the readable contact name or title, linked to the related record.

Example:

Instead of:

Person SID: 0001

Show:

Contact: John Smith

If the SID is useful, it can still be shown as secondary technical information.

Example:

John Smith
SID: 0001

6. SID display rules

SIDs still need to be maintained.

Requirement:

Every page should show related records with:

  • readable name or title
  • clickable link
  • SID where useful

If a name or title is too long, it should be shortened automatically so it fits cleanly in the grid.

Example:

Very Long Company Name…
SID: 00A9

7. Empty values

Current issue:

Follow-up Date and Close Date show “0” when empty.

Requirement:

Empty values should show:

Never show 0 for missing values.

This applies to:

  • follow-up dates
  • close dates
  • contract dates
  • HR dates
  • finance dates
  • optional text fields
  • optional linked records

8. Amount and currency formatting

Current issue:

Amount fields show raw integers like 10000000.

Requirement:

All amount fields must be formatted clearly.

Examples:

  • 10000000€10,000,000
  • 250000€250,000
  • 1500€1,500

Currency must always be shown.

Currency codes must be uppercase:

  • EUR
  • USD
  • GBP

Never show lowercase currency such as eur.

9. Compact amount formatting

Where space is limited, compact formatting may be used.

Examples:

  • €10,000,000€10M
  • €250,000€250K

Requirement:

Use full formatting in detail views.
Use compact formatting in grids and cards when space is limited.

10. Currency selector

The Business tool should include a currency display selector.

This allows the user to view amounts in the currency relevant to them.

The selected currency should always be displayed clearly.

Examples:

  • EUR: €10,000,000
  • USD: $10,000,000
  • GBP: £10,000,000

HR

1. HR must not stay read-only

Current issue:

HR app is entirely read-only.

Requirement:

HR needs full CRUD before it can be considered usable.

Required actions:

  • create HR record
  • view HR record
  • edit HR record
  • delete/archive HR record

Current issue:

HR employees and CRM contacts are separate.

Requirement:

HR records must link to the shared Contacts data.

An employee, contractor, advisor, or partner should also be a Contact.

Do not create a disconnected HR person database.

Example HR record:

  • Contact: John Smith
  • Company: OurWorld
  • Role: Finance Manager
  • Employment type: Contractor
  • Start date: –
  • Linked contract: Consulting Agreement

Cross-Linking Requirements

This is one of the most important missing parts.

The app should not feel like separate disconnected databases.

Company page should show:

  • linked contacts
  • linked deals
  • linked contracts
  • linked finance records
  • linked HR records, if relevant
  • linked tasks/projects
  • linked interactions

Contact page should show:

  • linked companies
  • role/title
  • contact details
  • linked interactions
  • linked deals
  • linked contracts
  • linked HR record, if applicable
  • linked tasks/projects
  • linked finance records, if relevant

Interaction page should show:

  • linked contact
  • linked company, if relevant
  • subject
  • type
  • direction
  • date
  • follow-up date
  • notes
  • linked task, if relevant

Deal page should show:

  • linked company
  • linked contacts
  • amount with currency formatting
  • related contracts
  • related tasks
  • related interactions/follow-ups

Contract page should show:

  • linked company
  • linked contacts
  • contract value, if any
  • status
  • dates
  • related tasks
  • related finance records
  • related interactions

Finance page should show:

  • linked company/contact/deal/contract
  • formatted amount
  • currency
  • status
  • dates
  • related documents if any

Task/project page should show:

  • linked company, if relevant
  • linked contact, if relevant
  • linked deal, contract, HR, or finance item if relevant
  • status
  • owner
  • due date

Business Overview Page

The Business overview page should briefly explain what each area is for.

Example:

Contacts

People and business relationships we interact with.

Companies

Organizations linked to contacts, deals, contracts, HR, and finance.

Interactions

Calls, emails, meetings, notes, and follow-ups linked to contacts and companies.

Deals

Opportunities, investment discussions, sales opportunities, or commercial tracks.

Contracts

Agreements and legal/commercial documents linked to contacts and companies.

Finance

Amounts, invoices, payments, budgets, and financial records.

HR

Employees, contractors, advisors, and team-related records linked to contacts.

Tasks / Projects

Execution layer for work linked to business records.


Updated Suggestions

Must fix now

  • Fix save/socket issue in BIZ.
  • Focus on the non-Dioxus business tool.
  • Use Contacts, not People.
  • Remove Persons everywhere.
  • Do not rename Contacts to Interactions.
  • Keep Contacts and Interactions as separate concepts.
  • Contact = person or reachable party.
  • Interaction = activity or touchpoint with a contact.
  • Replace raw internal SIDs with readable names and links.
  • Keep SIDs visible only as useful secondary technical information.
  • Add cross-links between companies, contacts, interactions, deals, contracts, finance, HR, tasks, and projects.
  • Format all amount fields with currency symbols and thousand separators.
  • Use uppercase currency codes.
  • Show for empty dates or empty optional values.
  • Add full CRUD to HR.
  • Link HR records to shared Contacts.

Should do soon

  • Add a short explanation on the Business overview page.
  • Add a currency display selector.
  • Add compact amount formatting for grids/cards.
  • Make related records clickable everywhere.
  • Automatically shorten long names/titles in grids.
  • Make the whole business tool feel like one connected system.

Not needed now

  • Do not focus on Store.
  • Do not focus on optional app installation.
  • Do not split CRM, HR, Finance, Contracts, or Tasks into separate installable apps yet.
  • Do not solve app-store/module activation today.

For now, we first make the business tool work well as one integrated app.

## Deliverables ## Deliverables Deliver a working organization business tool where the user can select a **context**, with each context representing a company or organization. Inside that context, the tool must manage the full company workflow: CRM/contacts, tasks, projects, stories, shareholders, contracts, employees, finance-related records, and all other business functions already present in the app. The deliverable is not a new app-store or modular system. The goal is to make the existing integrated business tool usable, connected, and consistent for one organization at a time, with proper cross-linking between records, clean naming, readable data, formatted amounts, and working create/edit/save flows. ## Requirements * [ ] Deliver a working organization business tool where the user can select a **context**, with each context representing a company or organization. * [ ] Inside the selected context, support the full company workflow already present in the app: CRM/contacts, tasks, projects, stories, shareholders, contracts, employees, finance-related records, and other business functions. * [ ] Make the tool work as one integrated business app, not as an app-store or modular install system. * [ ] Ensure records are properly connected across the organization context, including contacts, companies, tasks, projects, contracts, shareholders, employees, finance records, and stories. * [ ] Use clean and consistent naming across the app, especially **Contacts** instead of People or Persons. * [ ] Show readable names, titles, and links for related records as well as the SIDS * [ ] Format all amount fields properly with currency, separators, and readable compact notation where useful. * [ ] Make all create, edit, save, and delete/archive flows work reliably. ## Updated Specs / Feedback Notes ### Context The first business app is intended for **internal company use first**. It is one integrated tool for now, not a set of perfectly separated apps. The tool should support: * business management * finance * contracts * HR * tasks * project management * CRM-style contact management Later we can split things up if needed, but today the goal is simple: > Make the business tool work properly as one app first. There are currently two business tools. The focus should be on the **non-Dioxus business tool**, because that version already had most of the features before. Most of the existing comments are okay. The comments below clarify what needs to change. --- # General ## 1. Business suite structure The current structure is acceptable for now. We are not trying to decide today whether every part should become a separate app. For now, we want one business tool that brings together: * contacts * companies * finance * contracts * HR * tasks * projects The main requirement is that the tool works cleanly and consistently. ## 2. No app store discussion for now Do not focus on Store or app-store logic today. We do **not** need to solve whether CRM, HR, Finance, Contracts, or Tasks should be optional installable modules. That can come later. For now: * keep everything in one business app * make the app usable * fix the bugs * clean up naming * improve linking between records * make data display properly --- # Naming Rules ## 1. Use Contacts, not People The correct term is: > Contacts Do not rename this to People. A contact is the person or party we can interact with. Use **Contacts** consistently across: * navigation * breadcrumbs * page titles * buttons * tables * detail pages * linked records Example: Current: > Business / People / Persons Should become: > Business / Contacts ## 2. Remove “Persons” The term **Persons** should not be used. Replace: > Persons → Contacts This applies everywhere. ## 3. Contact is not the same as Interaction A contact is not an interaction. A contact is a person or reachable business relationship. An interaction is an activity or touchpoint with a contact. Examples of contacts: * investor * customer contact * supplier contact * employee contact * partner contact * board member * advisor * contractor Examples of interactions: * call * email * meeting * note * follow-up * task discussion * contract discussion So the model should be: > Contact = who > Interaction = what happened with them ## 4. Keep Contacts and Interactions separate We should not replace Contacts with Interactions. They are different things. A contact can have many interactions. Example: Contact: > John Smith, CFO at Example Ltd. Interactions: * Call on Monday about contract * Follow-up email about invoice * Meeting note about investment * Reminder to send proposal --- # BIZ ## 1. Save error must be fixed Current issue: > All saves fail: “Socket 'web_threefold.sock' not found” Requirement: This must be fixed. The app cannot be tested or used properly until save actions work. This is a technical routing/socket issue and must be maintained and corrected. ## 2. Use Contacts Do not rename Contacts to People or Interactions. Requirement: Use: > Contacts A contact is the person or party we can interact with. ## 3. Remove Persons Current issue: > Persons is used in some places. Requirement: Replace: > Persons → Contacts Example: Current: > Business / People / Persons Should become: > Business / Contacts ## 4. Interactions should only be activity logs If there is a section with fields like: * Subject * Type * Direction * Follow-up * Date * Notes Then that section can be called: > Interactions But it must be linked to a Contact. An interaction should not replace the Contact record. --- # Business / CRM ## 1. Focus on the non-Dioxus version Requirement: Focus implementation and fixes on the **non-Dioxus business tool**. Reason: This version already had most of the features in the past and is the better base for now. ## 2. Use Contacts everywhere Requirement: Use **Contacts** as the main term for people/person records. Do not use: * Persons * People Use: * Contacts * Contact detail * Contact list * Add Contact * Edit Contact ## 3. Contact and company relationship A contact can be linked to one or more companies. Example: Contact: > John Smith Linked company: > Example Ltd. Role: > CFO The company page should show its linked contacts. The contact page should show linked companies. ## 4. Contact and interaction relationship A contact can have multiple interactions. Example: Contact: > John Smith Linked interactions: * Call about proposal * Email about contract * Meeting about investment * Follow-up reminder The contact detail page should show these interactions. The interaction detail page should link back to the contact. ## 5. Replace internal SIDs with readable names Current issue: > Contact detail page shows internal SIDs such as “Person SID: 0001” Requirement: Do not show raw internal SIDs as the main display value. Show the readable contact name or title, linked to the related record. Example: Instead of: > Person SID: 0001 Show: > Contact: John Smith If the SID is useful, it can still be shown as secondary technical information. Example: > John Smith > SID: 0001 ## 6. SID display rules SIDs still need to be maintained. Requirement: Every page should show related records with: * readable name or title * clickable link * SID where useful If a name or title is too long, it should be shortened automatically so it fits cleanly in the grid. Example: > Very Long Company Name… > SID: 00A9 ## 7. Empty values Current issue: > Follow-up Date and Close Date show “0” when empty. Requirement: Empty values should show: > – Never show `0` for missing values. This applies to: * follow-up dates * close dates * contract dates * HR dates * finance dates * optional text fields * optional linked records ## 8. Amount and currency formatting Current issue: > Amount fields show raw integers like `10000000`. Requirement: All amount fields must be formatted clearly. Examples: * `10000000` → `€10,000,000` * `250000` → `€250,000` * `1500` → `€1,500` Currency must always be shown. Currency codes must be uppercase: * EUR * USD * GBP Never show lowercase currency such as `eur`. ## 9. Compact amount formatting Where space is limited, compact formatting may be used. Examples: * `€10,000,000` → `€10M` * `€250,000` → `€250K` Requirement: Use full formatting in detail views. Use compact formatting in grids and cards when space is limited. ## 10. Currency selector The Business tool should include a currency display selector. This allows the user to view amounts in the currency relevant to them. The selected currency should always be displayed clearly. Examples: * EUR: `€10,000,000` * USD: `$10,000,000` * GBP: `£10,000,000` --- # HR ## 1. HR must not stay read-only Current issue: > HR app is entirely read-only. Requirement: HR needs full CRUD before it can be considered usable. Required actions: * create HR record * view HR record * edit HR record * delete/archive HR record ## 2. HR must link to Contacts Current issue: > HR employees and CRM contacts are separate. Requirement: HR records must link to the shared Contacts data. An employee, contractor, advisor, or partner should also be a Contact. Do not create a disconnected HR person database. Example HR record: * Contact: John Smith * Company: OurWorld * Role: Finance Manager * Employment type: Contractor * Start date: – * Linked contract: Consulting Agreement --- # Cross-Linking Requirements This is one of the most important missing parts. The app should not feel like separate disconnected databases. ## Required links ### Company page should show: * linked contacts * linked deals * linked contracts * linked finance records * linked HR records, if relevant * linked tasks/projects * linked interactions ### Contact page should show: * linked companies * role/title * contact details * linked interactions * linked deals * linked contracts * linked HR record, if applicable * linked tasks/projects * linked finance records, if relevant ### Interaction page should show: * linked contact * linked company, if relevant * subject * type * direction * date * follow-up date * notes * linked task, if relevant ### Deal page should show: * linked company * linked contacts * amount with currency formatting * related contracts * related tasks * related interactions/follow-ups ### Contract page should show: * linked company * linked contacts * contract value, if any * status * dates * related tasks * related finance records * related interactions ### Finance page should show: * linked company/contact/deal/contract * formatted amount * currency * status * dates * related documents if any ### Task/project page should show: * linked company, if relevant * linked contact, if relevant * linked deal, contract, HR, or finance item if relevant * status * owner * due date --- # Business Overview Page The Business overview page should briefly explain what each area is for. Example: ## Contacts People and business relationships we interact with. ## Companies Organizations linked to contacts, deals, contracts, HR, and finance. ## Interactions Calls, emails, meetings, notes, and follow-ups linked to contacts and companies. ## Deals Opportunities, investment discussions, sales opportunities, or commercial tracks. ## Contracts Agreements and legal/commercial documents linked to contacts and companies. ## Finance Amounts, invoices, payments, budgets, and financial records. ## HR Employees, contractors, advisors, and team-related records linked to contacts. ## Tasks / Projects Execution layer for work linked to business records. --- # Updated Suggestions ## Must fix now * Fix save/socket issue in BIZ. * Focus on the non-Dioxus business tool. * Use **Contacts**, not People. * Remove **Persons** everywhere. * Do not rename Contacts to Interactions. * Keep Contacts and Interactions as separate concepts. * Contact = person or reachable party. * Interaction = activity or touchpoint with a contact. * Replace raw internal SIDs with readable names and links. * Keep SIDs visible only as useful secondary technical information. * Add cross-links between companies, contacts, interactions, deals, contracts, finance, HR, tasks, and projects. * Format all amount fields with currency symbols and thousand separators. * Use uppercase currency codes. * Show `–` for empty dates or empty optional values. * Add full CRUD to HR. * Link HR records to shared Contacts. ## Should do soon * Add a short explanation on the Business overview page. * Add a currency display selector. * Add compact amount formatting for grids/cards. * Make related records clickable everywhere. * Automatically shorten long names/titles in grids. * Make the whole business tool feel like one connected system. ## Not needed now * Do not focus on Store. * Do not focus on optional app installation. * Do not split CRM, HR, Finance, Contracts, or Tasks into separate installable apps yet. * Do not solve app-store/module activation today. For now, we first make the business tool work well as one integrated app.
Owner

@casper-stevens

Can you check this please?
Maybe your work already takes this into account. Just the part [BIZ]

Thanks

@casper-stevens Can you check this please? Maybe your work already takes this into account. Just the part [BIZ] Thanks
despiegk changed title from [Business] Testing feedback to story: biz tool 2026-05-05 05:45:35 +00:00
despiegk added this to the ACTIVE project 2026-05-05 05:46:10 +00:00
Author
Member

@casper-stevens

Regarding "3. Contact and company relationship"

This is how I believe it should look/be implemented on the UI

Contact record (top level fields)

  • Full name
  • Email
  • Phone
  • General function / title (e.g. Investor, Lawyer, Consultant) --> this describes who they are independently of any company
  • Notes

On the contact page - linked companies table
A section called "Companies" listing all companies this person is linked to:

Company Role Status
Example Ltd CFO Active
Another Co Advisor Former

Role is specific to that company relationship. Status can be Active or Former so we can track past connections without deleting them.

On the company page - linked contacts table
A section called "People" listing all contacts linked to this company:

Name Role Status
John Smith CFO Active
Sarah Jones Board Member Former

Editing

  • When creating or editing a contact, it should be possible to add multiple company links in one go, each with their own role and status
  • Company name should be a link to the company record and vice versa

The goal is to always understand a contact's full picture at a glance: who they are, where they work or have worked, and in what capacity.

@casper-stevens Regarding "3. Contact and company relationship" This is how I believe it should look/be implemented on the UI **Contact record (top level fields)** - Full name - Email - Phone - General function / title (e.g. Investor, Lawyer, Consultant) --> this describes who they are independently of any company - Notes **On the contact page - linked companies table** A section called "Companies" listing all companies this person is linked to: | Company | Role | Status | |---|---|---| | Example Ltd | CFO | Active | | Another Co | Advisor | Former | Role is specific to that company relationship. Status can be Active or Former so we can track past connections without deleting them. **On the company page - linked contacts table** A section called "People" listing all contacts linked to this company: | Name | Role | Status | |---|---|---| | John Smith | CFO | Active | | Sarah Jones | Board Member | Former | **Editing** - When creating or editing a contact, it should be possible to add multiple company links in one go, each with their own role and status - Company name should be a link to the company record and vice versa The goal is to always understand a contact's full picture at a glance: who they are, where they work or have worked, and in what capacity.
Sign in to join this conversation.
No labels
No milestone
No project
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
lhumina_code/home#210
No description provided.