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 β