Docs / handoffs/2026-05-28-new-chat-handoff.md

Chimti New Chat Handoff - 28 May 2026

Use this file as the first context document in a new Codex chat before continuing Chimti work.

Sensitive passwords, server passwords, SSH passwords, and private tokens are intentionally not repeated here. They were shared earlier in the working thread or are available locally in environment/config where already set. Do not paste them into a public channel unnecessarily.

Current Goal

Chimti is being built as a SaaS operating system for laundry/dry-cleaning/garment-care businesses. It should support single stores, central workshops, store-plus-workshop setups, hub-and-spoke models, franchise networks, and service-based routing.

The positioning direction is:

Chimti should be sold as an operations command center for modern laundry brands, not as a simple billing/order app. Its strongest edge is garment-level tracking, operational workflows, pickup/delivery/process visibility, service/pricing configuration, brand/location structure, and multi-app ecosystem.

Repositories

Main folders under `/Users/jagjeetsinghsethi/Downloads/Code/Chimti`:

| Repo | Purpose |

| --- | --- |

| `chimti-api` | Shared backend/API that all apps should eventually use. This was created because long-term structure needs one central API instead of each app owning backend logic separately. |

| `chimti-admin-app` | Chimti internal SaaS/admin app. Used by Chimti team to manage clients, brands, modules, plans, ads, users, permissions, demos, support, etc. |

| `chimti-user-app` | Brand/team web app used by laundry business staff. Handles customers, orders, items, tags, services, shipments, team, locations, payments, reports, etc. |

| `chimti-user-mobile-app` | Mobile app for brand staff/field teams. Should mirror useful user-app workflows and include field-only modules for pickup/delivery/scanning/photo capture. |

| `chimti-customer-app` | Customer-facing app/portal. Customer logs in with phone number and can see previous orders, order status, summaries, etc. |

| `chimti-website` | Public marketing website for Chimti. Currently local server on `http://127.0.0.1:5173`. |

| `chimti-print-agent` | Local desktop print agent for USB TSC label printer. Needed because browser/deployed app cannot directly print to local USB printer. |

Local Ports Observed

| App | Local URL seen in thread |

| --- | --- |

| Website | `http://localhost:5173` |

| Admin app | `http://localhost:5184` |

| User app | `http://localhost:5185` |

Database error previously showed local Postgres at `127.0.0.1:55432`. Confirm current env files before assuming.

Deployment Plan

Deployment target is Coolify on Otlu server.

Desired subdomains:

| Service | Domain |

| --- | --- |

| API | `chimti-api.otlu.io` |

| User app | `chimti-user-app.otlu.io` |

| Admin app | `chimti-admin-app.otlu.io` |

| Website | `chimti-website.otlu.io` |

Database already exists in Coolify. It is a Postgres setup under Otlu database/service, and Chimti should use its own database/schema inside that setup. Do not create random extra DB services unless there is a strong reason.

Earlier server work:

Core Data Hierarchy

Final intended hierarchy:


Client / Parent Group

  -> Brand(s)

       -> Brand-level plan, billing, modules, services, pricing policy

       -> Location(s)

            -> Store / Workshop / Hub / Collection Centre / Service Site

            -> Optional location-specific services/pricing/TAT

       -> Users

            -> Role + team + permissions + app access

       -> Customers

       -> Orders

            -> Items

                 -> Article IDs / tags / photos / item activity

            -> Pickup activity

            -> Delivery activity

            -> Processing activity

            -> Payment activity

       -> Shipments

            -> Articles moved between locations

Important decisions:

Client Operating Models

Current supported models:

1. Store Only

2. Single Workshop

3. Store + Workshop

4. Hub and Spoke

5. Franchise Network

6. Service Based

Models explicitly removed from current list:

Notes:

Real / Demo Clients

Client types across system:

Important real client setup:

Otlu

Originally "Call Your Dhobi" client was renamed to `Otlu`.

Client details captured:

Brands under Otlu:

1. Call Your Dhobi

2. Cleanium

3. Dhobi Genie

4. Intel Dhobi

5. Laundrify

6. Dhobify

For all 6 brands:

Demo Clients by Model

Existing product knowledge file already stores demo clients and demo user app superadmins.

Demo mapping:

| Model | Demo Client | Demo Brand |

| --- | --- | --- |

| Store Only | NeatNest Care Group | NeatNest Laundry |

| Single Workshop | AquaFold Works | AquaFold Laundry |

| Store + Workshop | WhiteWave Care Group | WhiteWave Laundry |

| Hub and Spoke | SpinRoute Services | SpinRoute Cleaners |

| Franchise Network | Freshora Care Network | Freshora Laundry |

| Service Based | FabricMint Services | FabricMint Care |

Freshora is the franchise network demo client.

`Chimti Demo Group` was removed after demo clients were created.

User Accounts

Core desired accounts:

There was a rule request that no other users should exist in the ecosystem, but later demo client superadmin users were created for demo/training. Treat demo users as intentional demo exceptions.

Do not repeat passwords in new chat unless user explicitly provides them again.

Admin App Direction

Admin app is for Chimti internal SaaS/company management.

Useful admin modules currently intended:

Modules removed or moved out:

Admin Users:

Permissions:

- Platform/admin roles for Chimti team.

- Client/brand/user-app roles for laundry brands.

Clients:

Brands in Admin:

- Universal / Brand-level services.

- Store-wise / Location-wise services.

Locations:

Modules:

- Launched means available globally for brand-level setup.

- Planned means not available/hidden everywhere.

- AI POS Assistant

- Calls

- Chimti Genie

- Customer Experience

- Delivery Tracking

- Email

- Internal Chat

- Inventory

- Processing Queue

- Support

- WhatsApp

- WhatsApp AI

Ads:

User App Direction

User app is the brand/team web app used by laundry operations teams.

Main UI decisions:

- Drag-and-drop with 6-dot handle.

- No arrow move buttons.

- Hide action should use icon, not text.

- No bulky outlines around handle/module.

- Changes should not persist until Save is clicked.

User app modules:

Brands:

Locations:

Customer Module

Customer create form:

- Contact Person renamed POC.

- Company mobile number and POC number separate.

- Company WhatsApp number separate.

- Detailed Add business asks GST only, no PAN.

- Country code dropdown with all countries/tourists support.

- Dropdown searchable.

- WhatsApp same-as-mobile small/aesthetic button.

- Mobile validations: India numbers max 10 digits etc.

- Pincode validation.

- Pincode should auto-fill City, State, Country and these should not be editable.

- Address Type dropdown differs by Individual/Business, plus Custom option for both.

Acquisition data:

- First select Online or Offline.

- Offline only means Store Walk-in.

- If Offline/Store Walk-in, select Store/Location.

- Online subchannels: Phone Call, WhatsApp, Email, Instagram, Website.

- Manual if created from app by team, even if source is Online/WhatsApp.

- Automatic only when website/WhatsApp/automation creates customer directly.

- Do not ask user to enter this manually.

- Show in customer detail.

Customer list:

Customer detail:

- Customer Name

- Customer ID

- Health

- Mobile with call icon button beside number

- WhatsApp with WhatsApp icon button beside number

- Email with email icon/function

- Acquisition Channel

- Customer Type

- Created

- Updated

- Address

- Business Name and GST only for Business customers

- Preferred Contact

- Preferred Time

- First Visit Reason

- Service Preference

- Added By Team

- Channel Detail

- Tax/PAN

- Renamed from Internal Notes to Notes.

- Append-only text entries.

- Cannot edit/delete notes.

- Show date/time added.

- Similar to order timeline/activity style.

Orders Module

Order create form:

- Customer, searchable dropdown.

- Channel/mode/source/subchannel.

- Collection Type.

- Handled By

- Next Step

- Extra unnecessary fields.

- Customer care user creates pickup orders; walk-in should not be available.

- Store manager/store employee gets options according to store role.

- Doorstep Pickup.

- Store Drop-off / customer gave clothes at store.

- If online order, pickup only.

- If offline/store, both store drop-off and pickup booking can be possible.

Order details:

- Overview

- Items

- Tags

- Notes

- Summary

- Invoice

- Activity

- Audit should not show in user app.

Order overview:

Remove:

Add:

Order lifecycle:

Pickup lifecycle:

1. Pickup Scheduled

2. Pickup Assigned

3. Pickup Accepted / Rejected / Cancelled by field executive

4. Reached Pickup Location

5. Items Received From Customer - field/user must enter what items customer gave

6. Pickup Completed

7. Handover to store/workshop/hub

Delivery lifecycle:

1. Delivery Scheduled

2. Delivery Assigned

3. Delivery Accepted

4. Out for Delivery

5. Reached Customer Location

6. Handovered to Customer

7. Delivered

Nested activity concept:

Processing:

Items:

1. Select Main Service first.

2. Based on main service, show service type/category options.

3. If selected item/category has only one billing mode, hide billing mode dropdown.

4. If multiple billing modes are enabled, show billing mode selector.

5. Per piece should show number of articles and price.

6. Per kg should show number of articles, weight, and price/kg.

- Item name

- Tracking IDs

- Upload photos from desktop item-add form

- Tracking hierarchy

Items display:

Item detail page:

Order Summary and Invoice:

- Individual item ready date/time based on TAT.

- Longest ready date/time for whole order.

Services / Preferences

Services module replaces old Preferences/Service Catalog wording.

Main services currently considered:

Billing defaults:

Important latest service structure:

- Enabled/disabled toggle.

- Billing mode.

- TAT.

- Price rule.

- Fixed rate if fixed.

- Price range if range.

- Decide on order if team decides price during order creation.

- Urgent processing/surcharge rule if available.

- Processing location/routing if applicable.

Shipments

Shipment module purpose:

Required:

Team / Employees / Users

Employees module renamed Team in user app.

Team creation:

Teams/roles:

Team names should be generic enough for different business models:

Roles include:

Old "Owner" wording should be Superadmin.

Rule:

Mobile App

Mobile app folder: `chimti-user-mobile-app`.

Mobile app direction:

- New Customer

- New Order

Field-only useful modules for mobile:

Live Activities concept:

Item photos:

Customer App

Customer app folder: `chimti-customer-app`.

Direction:

- Previous orders

- Current order status

- Order summary/receipt

- Payment/status info later

Tags and Printing

Printer:

Important browser limitation:

Print agent:

Test learnings:

Tag content required:

User app tags UI:

Website

Repo: `chimti-website`.

Current website direction:

Latest website changes completed:

- subtle animated grid/ribbon background

- smooth entry animation for text/buttons

- dashboard parallax/reveal

- Live Sync Ready chip

- desktop operational hotspots

- mobile hides clutter and keeps clean dashboard/status

Login Page Rules

For both admin/user app login:

UI/UX Product Rules

Global:

Activity vs Audit:

Action logging:

- order created by X

- delivery assigned by X to Y

- pickup scheduled by X

- payment recorded by X

- customer note added by X

Dashboard / Map

User app dashboard:

- pincode demand

- revenue concentration

- pickup-heavy zones

- pending/risk zones

- low activity zones

- customer density

- high repeat zones

Dummy Data

Data requests done/needed:

Market / Positioning Notes

Best things about Chimti:

Positioning:

Open / Continue Items

Likely next work areas:

1. Confirm print output matches tag UI exactly and individual tag print button works.

2. Complete backend persistence for locations/shipments/services if any UI-only pieces remain.

3. Continue admin Brand/Location Services setup UX and persist it to API.

4. Ensure user app Services module matches admin Services structure.

5. Finish item detail page with Activity and Photos tabs.

6. Finish mobile app parity for Orders, Customers, Shipments, Locations, Services.

7. Fix any iOS/Android simulator runtime/login issues.

8. Make module launch config load before sidebar renders to prevent flash of hidden modules.

9. Continue customer app with phone login and order history.

10. Deploy API/admin/user/website to Coolify subdomains.

11. Keep product knowledge updated in `chimti-admin-app/docs/chimti-product-knowledge.md`.

Existing Product Knowledge File

Main product knowledge file:

`/Users/jagjeetsinghsethi/Downloads/Code/Chimti/chimti-admin-app/docs/chimti-product-knowledge.md`

It currently stores:

This handoff file is broader and should be used for new-chat continuity.