A modern web application for eBay sellers to manage inventory, crosslist items across multiple platforms, handle buyer communications, and track analytics—all from one unified dashboard.
Status: Production-Ready ✅ | Version: 1.1
- Dashboard - Command palette with AI intent parsing, smart suggestions, and market insights
- Inventory Management - Browse, search, and bulk-select items for crosslisting
- Crosslist Operations - Send items to Poshmark, eBay, and Facebook Marketplace with auto-fill via Chrome extension
- Messages - View and respond to buyer inquiries with AI-powered suggestions (Phase 5)
- Orders - Track shipments and order status across platforms
- Vision Uplink - Upload product images and listing details
- Analytics - Revenue trends, conversion funnels, performance metrics, and inventory health
- Chrome Extension - Auto-fill Poshmark listings from the control plane
- Node.js 18+ (includes npm)
- Docker (for production deployment)
- Chrome (for extension support)
# 1. Install dependencies
npm install
# 2. Set API keys in .env.local
cp .env.example .env.local
# Edit .env.local with your Gemini API key and backend URL
# 3. Start development server
npm run dev
# Opens at http://localhost:5173# 1. Build for production
npm run build
# 2. Deploy Docker container
docker-compose up -d --build
# App available at http://localhost:4873 (or configured PORT)eBayOS/
├── src/
│ ├── components/ # React UI components
│ │ ├── Dashboard.tsx
│ │ ├── InventoryPage.tsx
│ │ ├── CrosslistPage.tsx
│ │ ├── MessagesPage.tsx
│ │ ├── OrdersPage.tsx
│ │ ├── AnalyticsPage.tsx
│ │ └── ...
│ ├── services/ # Business logic
│ │ ├── intentParser.ts # AI command parsing
│ │ ├── spellExecutor.ts # Command execution
│ │ └── ...
│ ├── types.ts # TypeScript definitions
│ └── App.tsx # Main app component
│
├── extension/ # Chrome extension source
│ ├── manifest.json
│ ├── bridge-content.js # App ↔ Extension messaging
│ ├── poshmark-content.js # Poshmark auto-fill
│ └── ...
│
├── public/ # Static assets
├── dist/ # Built frontend (gitignored)
├── package.json
├── tsconfig.json
├── vite.config.ts
├── server.ts # Express.js backend proxy
├── Dockerfile
├── docker-compose.yml
├── ARCHITECTURE.md # System design docs
├── DEPLOYMENT.md # Deployment guide
└── README.md # This file
Create .env.local based on .env.example:
# Gemini API key for AI command parsing
VITE_GEMINI_API_KEY=your_gemini_api_key_here
# Backend service URL (eBay listing assistant)
BACKEND_URL=http://ebay-listing-assistant:5000
# Server configuration
NODE_ENV=development
PORT=3000
USE_HTTP=1Note: API keys are only used server-side. Never commit .env files.
npm run dev # Start Vite dev server with hot reload
npm run build # Build production bundle (dist/)
npm run preview # Preview production build locally
npm run type-check # Check TypeScript without emitting codedocker-compose up -d --buildenvironment:
- NODE_ENV=production
- PORT=4873
- USE_HTTP=1
- BACKEND_URL=http://ebay-listing-assistant:5000
- VITE_GEMINI_API_KEY=${VITE_GEMINI_API_KEY}Set environment variables in your host system or .env file in the project root.
http://localhost:4873
-
Build the extension:
- Extension source is in
extension/directory - Manifest configured for localhost and production URLs
- Extension source is in
-
Load in Chrome:
- Open
chrome://extensions - Enable "Developer mode"
- Click "Load unpacked"
- Select
extension/folder
- Open
-
Features:
- Auto-fill Poshmark listings from eBayOS
- Syncs item data (title, price, images, size, brand)
- Real-time messaging bridge with app
All /api/* requests are proxied to the eBay listing assistant backend:
Browser Request
↓
Express Server (server.ts)
↓
Proxy Middleware
↓
Backend Service (http://backend:5000)
↓
Response to Browser
GET /api/active-listings- Sample inventoryGET /api/messages- Sample conversationsGET /api/status- Health check
- All other
/api/*calls forwarded to backend service - Automatically uses mock data if backend is unavailable
npm run dev
# Navigate to http://localhost:5173
# Test each page: Dashboard, Inventory, Crosslist, Messages, Orders, AnalyticsOpen DevTools (F12) → Console tab to check for errors while testing features.
- Open app at http://localhost:5173
- Open Poshmark in another tab
- Click Crosslist → Select items → Send to Poshmark
- Extension should auto-fill the form
# Hard refresh browser
Ctrl+Shift+R # Windows
Cmd+Shift+R # Mac
# Check npm dev server logs
npm run dev
# Verify API backend is running
curl http://localhost:5000/health# View logs
docker logs ebayos -f
# Restart container
docker-compose restart
# Full rebuild
docker-compose down
docker image rm ebayos:latest
docker-compose up -d --build- Check extension is enabled:
chrome://extensions - Reload extension (F5 or Reload button)
- Verify manifest.json has correct URLs
- Check browser console for errors
- ARCHITECTURE.md - System design, data flow, and critical issues
- DEPLOYMENT.md - Production deployment on Docker/CasaOS
- EXTENSION_DEBUG.md - Extension troubleshooting guide
- Create a feature branch:
git checkout -b feature/your-feature - Make changes and test locally with
npm run dev - Build for production:
npm run build - Commit with clear messages:
git commit -m "feat: description" - Push and open a Pull Request
- Create
src/components/YourComponent.tsx - Export from
src/App.tsx - Add route/menu item in Sidebar
- Test with
npm run dev - Build and verify:
npm run build
- Add route in
server.ts(for mocks) or forward to backend - Create service in
src/services/if needed - Call from component with
fetch('/api/your-endpoint') - Test in browser console:
await fetch('/api/endpoint').then(r => r.json())
- Modify files in
extension/ - Reload extension in Chrome
- Test functionality end-to-end
Planned features:
- AI intent detection (price inquiry, shipping question, bulk order, complaint, praise)
- Gemini-powered response suggestions
- Message analysis with Seller DNA context
- Notification badges on navigation items
This project is proprietary. All rights reserved.
For issues, check:
- Browser console (F12 → Console)
- Server logs (
npm run devordocker logs ebayos) - DEPLOYMENT.md troubleshooting section
- Extension debug guide for Chrome extension issues
Built with: React + TypeScript + Vite + Express + Docker
Last Updated: March 15, 2026 | Status: Production-Ready ✅