An interactive detective corkboard built with tldraw. Drop an image, see mock profile matches, and connect evidence with red-string ropes.
- Corkboard-style canvas with custom background tiles
- Custom shapes: photo pins, profile cards, notes, and rope connections
- Drag-and-drop image uploads
- Mock reverse image search results (easy to replace with a real API)
- Optional image storage backend via Flask + MySQL
- Install dependencies:
npm install - Start the frontend:
npm run dev
Vite prints the local URL in the terminal (usually http://localhost:5173).
The frontend can post uploaded image URLs to a Flask server at
http://localhost:5000/api/upload-image.
- Install Python deps:
pip install flask flask-cors python-dotenv mysql-connector-python - Set environment variables in a
.envfile:VULTR_HOST= VULTR_PORT=3306 VULTR_USER= VULTR_NAME= VULTR_PASSWORD= - Run the server:
python backend/image_storing_server.py
If the backend is not running, the frontend will still work, but image-save calls will fail and log errors.
npm run dev— start Vite dev servernpm run build— build for productionnpm run lint— run ESLintnpm run preview— preview the production build
src/components/DetectiveBoard.tsx— main board UI and logicsrc/components/SearchPanel.tsx— upload panel UIsrc/custom_shapes/— custom tldraw shapesbackend/image_storing_server.py— optional Flask API for image storage