Loading...
Loading...
A marketplace platform for discovering and purchasing inventory from closing retail stores, focused on the NY, NJ, CT, and PA areas.
# GOOBY - Closing Store Marketplace
A marketplace platform for discovering and purchasing inventory from closing retail stores, focused on the NY, NJ, CT, and PA areas.
## Tech Stack
- **Frontend:** React 18 + Vite 6
- **Styling:** Tailwind CSS + shadcn/ui (Radix UI)
- **Routing:** React Router v6
- **State/Data Fetching:** TanStack Query v5
- **Backend/Auth/DB:** Base44 SDK (managed platform)
- **Backend API Server:** Express.js (port 3001)
- **AI:** xAI/Grok (via OpenAI-compatible API)
- **SMS:** Twilio
- **Email:** Resend
- **News:** NewsAPI
- **Scheduling:** node-cron (automated scans)
- **Maps:** React Leaflet
- **Payments:** Stripe
- **Animations:** Framer Motion
## Project Structure
```
├── server/ # Express.js backend server
│ ├── index.js # Main server entry, API routes
│ ├── xai.js # xAI/Grok integration (chat, vision)
│ ├── closureScanner.js # Automated store closure discovery (news, X, web)
│ ├── twilio.js # Twilio SMS integration
│ ├── resend.js # Resend email integration
│ └── newsapi.js # NewsAPI integration
├── functions/ # Base44 serverless/edge functions (TypeScript)
├── src/
│ ├── api/
│ │ ├── base44Client.js # Base44 SDK config
│ │ └── services.js # Frontend API client for backend services
│ ├── components/ # React components (admin, buyer, seller, ui)
│ ├── hooks/ # Custom React hooks
│ ├── lib/ # Auth context, query client, utils
│ ├── pages/ # Route-level page components
│ └── utils/ # Helper functions
├── public/ # Static assets (gooby-logo.png)
├── index.html
├── vite.config.js
├── tailwind.config.js
└── package.json
```
## Development
- **Start:** `npm run dev` (runs backend on port 3001 + Vite frontend on port 5000)
- **Build:** `npm run build`
- Vite proxies `/api/*` requests to the backend server
## API Endpoints
- `GET /api/health` - Health check
- `POST /api/xai/chat` - xAI/Grok chat (body: `{messages, model?, maxTokens?}`)
- `POST /api/xai/analyze-image` - xAI vision (body: `{imageUrl, prompt?}`)
- `POST /api/twilio/sms` - Send SMS (body: `{to, body}`)
- `POST /api/resend/email` - Send email (body: `{from?, to, subject, html?, text?}`)
- `GET /api/news/search?q=...` - Search news articles
- `GET /api/news/headlines` - Get top headlines
- `POST /api/scanner/run` - Trigger a manual closure scan
- `GET /api/scanner/status` - Get scanner status and history
- `GET /api/scanner/results` - Get last scan results
## Required Secrets
- `XAI_API_KEY` - xAI/Grok API key
- `GROK_API_KEY` - Grok API key (alias)
- `TWILIO_ACCOUNT_SID` - Twilio Account SID (must start with "AC")
- `TWILIO_AUTH_TOKEN` - Twilio Auth Token
- `TWILIO_PHONE_NUMBER` - Twilio phone number
- `RESEND_API_KEY` - Resend API key
- `NEWSAPI_KEY` - NewsAPI key
## Replit Configuration
- Frontend server: `0.0.0.0:5000` with `allowedHosts: true` for proxy compatibility
- Backend server: `localhost:3001`
- Workflow: "Start application" → `npm run dev`
- Deployment: Autoscale (build: `npm run build`, run: `node server/index.js`)
## Notes
- This app uses the Base44 platform for authentication, database entities, and serverless functions
- The Base44 SDK requires the app to be registered on the Base44 platform for full functionality
- 404 errors from the SDK in development are expected when not connected to a Base44 app context
- Twilio initialization is lazy - it only validates credentials when an SMS is actually sent
- Frontend uses `src/api/services.js` to call backend API endpoints
- Automated closure scanning runs daily: full scan at 7am EST (12:00 UTC), partial scan at 12pm EST (17:00 UTC)
- Full scan: all NewsAPI queries + all 5 X queries + all 4 Facebook queries + 5 web queries; Partial scan: news + 2 X queries + 1 Facebook query + 2 web queries
- Scanner searches NewsAPI, X (Twitter), Facebook Marketplace, and general web via Grok for store closures in NY/NJ/CT/PA
- Manual scans via POST /api/scanner/run with optional `{ mode: "full" | "partial" }`
- Discovered closures are returned via API (not auto-saved to DB — admin review step)
This is a personal portfolio website for Daley Mottley, an AI Consultant and Full-Stack Web Developer based in Barbados. The site showcases professional skills, projects, and services with a focus on AI solutions and web development. The portfolio includes internationalization support for multiple languages and features an interactive typewriter animation in the contact form.
**Mission**: ContractSpec is the deterministic, spec-first compiler that keeps AI-written software coherent, safe, and regenerable.
This is a multiplayer scrum poker game with a retro JRPG aesthetic that gamifies story point estimation. Players create or join lobbies, select fantasy avatar classes (warrior, wizard, etc.), and estimate Jira tickets by "battling" pixel art bosses. The game combines traditional scrum poker mechanics with engaging visual elements and real-time multiplayer interactions.
ADN Systems DMR Peer Server is a fork of FreeDMR, implementing a Digital Mobile Radio (DMR) network server. Launched in April 2024 by international amateur radio enthusiasts, it operates on an Open Bridge Protocol (OBP) fostering a decentralized network architecture. The system handles DMR voice and data communication, acting as a conference bridge/reflector that routes traffic between connected systems (repeaters, hotspots, peers) based on configurable bridge rules.