Offline PWA Development for Odoo Inventory

Job ID: 39757292

Budget: $750 – $1,500 USD

Job Title:
Build Offline-Capable PWA for Odoo 17 Inventory (React, Barcode-Driven)

Description:
We are looking for an experienced React + Odoo developer to build a Progressive Web App (PWA) that extends the Odoo 17 Community Inventory module.

The app will be used by low-level warehouse staff (receiving, pickers, packers, dispatchers). It must be scan-first, command-driven, and process-driven, showing only the information required for each step. The UI should be minimal, icon-based, and intuitive for staff with limited technical skills.

This project requires offline capability (IndexedDB + Service Worker), error checking, and local storage sync in case of network outages. Database setup happens only once during the first login, and afterwards only user login is required.

Key Requirements:

1. Core Operations to support (all scan-first):
- Receipts (Vendor Inbound)
- Deliveries / Pick-Pack-Ship (all routes)
- Internal Transfers
- Putaway & Replenishment
- Batch/Wave Picking
- Returns (Customer & Vendor)
- Inventory Adjustments & Cycle Counts
- Scrap
- Package & Pallet handling (create, put in pack, move, scan)
- Serial/Lot traceability (validate pre-loaded serials, or create dynamically on receipt)

2. UX/Design:
- Scan-first interface (barcode = action)
- Minimal UI with icons, large buttons, high contrast
- Commands (e.g., /qty 5, /newpack, /done)
- Error validation: wrong product/location/serial instantly blocked
- “Ready” move counts shown as badges on operation icons in Home screen

3. Technical Stack:
- Frontend: React + TypeScript + Vite
- Styling: Tailwind CSS (clean, mobile-friendly, large tap targets)
- Offline-first: Service Worker + IndexedDB (Dexie.js)
- Odoo 17 Community API: JSON-RPC over HTTPS
- Device agnostic: must work on enterprise scanners (Zebra, Honeywell, Point Mobile) using keyboard wedge (no SDK)
- Camera fallback for phones (ZXing-js)

4. Authentication & Setup:
- First login: Odoo URL + DB setup (persisted in local storage)
- Subsequent logins: username + password only
- Enforce Odoo permissions (stock.picking types & operations per user)

5. Offline Mode:
- Queue writes in IndexedDB when offline
- Replay to Odoo when network restores
- Conflict detection & resolution for overlapping updates

Deliverables:

1. React PWA source code (Git repo) with clear setup & deployment instructions
2. Home screen with operation tiles (dynamic from Odoo picking types) & Ready counts
3. Full workflows for all inventory operations (scan-first)
4. Offline queue system (IndexedDB, background sync)
5. Testing: unit tests + E2E flow tests
6. Documentation & handover: short runbook + 10-min walkthrough video

Acceptance Criteria:

- App connects to Odoo DB once, then only user login is required
- Operation tiles + Ready badges sync correctly with Odoo
- Scanning barcodes routes correctly (picking, package, location, product, lot/serial, PO/SO)
- All flows (Receipts, Deliveries, Internal Transfers, Counts, etc.) function online & offline
- Serial numbers validate if pre-loaded; new ones can be created during receipt if not present
- Works seamlessly on rugged handhelds with built-in scanners (keyboard wedge)

Ideal Candidate:

- Strong React + PWA experience (offline-first design)
- Experience integrating with Odoo 16/17 Community (JSON-RPC)
- Knowledge of warehouse operations & barcode workflows
- Proven ability to deliver scan-first mobile UIs for non-technical users
- Familiar with enterprise scanners (Zebra, Honeywell, Point Mobile) is a plus

Timeline & Budget:

- Estimated duration: 6 weeks
- Milestones:
1. Skeleton + Auth + Home Screen
2. Receipts + Deliveries core flows
3. Internal Transfers + Packages + Returns + Counts
4. Offline sync + Error handling
5. Testing, Documentation, Handover
Budget to be proposed based on experience & delivery plan.

When applying, please include:

-Examples of PWAs you’ve built (preferably offline-capable)
-Experience with Odoo JSON-RPC integrations
-Your estimated timeline & cost breakdown