thinko is a browser-based Windows XP desktop recreation running at thinko.micr.dev.
It started from the winXP React desktop project, but this repo now contains the current custom site and deployment setup for the micr-dev/thinko GitHub repo and the Vercel project behind thinko.micr.dev.
- Windows XP-style desktop, windows, taskbar, and Start menu
- Custom desktop apps like
Paint,Winamp,My Pictures, andMy Computer - 13 embedded browser-playable games (Touhou 1-5, Quake 3, ULTRAKILL, Syobon Action, Super Monkey Ball Jr., Portal 2D, Vampire Survivors, IWBTG, Nyan Cat)
- Paint submission flow with manual moderation
- Admin page for reviewing drawings and publishing commissions
- Mobile-first alternative experience (About, Drawings, Commissions, Paint sections) auto-triggered at <=820px viewport width; append
?desktop=1to force the desktop experience on mobile - Vercel-backed API routes for submissions, moderation, commissions, and image serving
demo/demo.gif— animated preview of the desktop experience
- Site: https://thinko.micr.dev
- Admin moderation: https://thinko.micr.dev/admin/drawings
- Layout debug route: https://thinko.micr.dev/layout
- React 18
react-scriptsstyled-componentswebamp- Vercel Functions
- Vercel Blob
- GitHub OAuth for admin auth
Install dependencies:
yarn installRun the web app and local API together:
yarn startThat starts:
- CRA dev server on
http://localhost:3000(react-scripts default; override withPORTenv var) - local API server on
http://127.0.0.1:4748 - optional local agentation proxy on
http://127.0.0.1:4747(seeAGENTATION_PROXY_TARGETbelow)
Useful scripts:
yarn start
yarn start:web
yarn start:api
yarn build
yarn test
yarn lintFor production or full local API behavior, configure:
APP_BASE_URL
SESSION_SECRET
BLOB_READ_WRITE_TOKEN
GITHUB_CLIENT_ID
GITHUB_CLIENT_SECRET
GITHUB_ADMIN_LOGIN
NTFY_TOPIC
NTFY_BASE_URL
AGENTATION_PROXY_TARGETNotes:
BLOB_READ_WRITE_TOKENis required for drawings and commissions storage.GITHUB_*values are required for/admin/drawings.NTFY_*is optional but used for new drawing notifications.AGENTATION_PROXY_TARGETroutes/agentationtraffic to a local agentation service (default:http://127.0.0.1:4747).
The admin page (/admin/drawings) provides:
- Pending drawing submissions queue with approve/reject actions
- Commission draft management (commission-drafts system stored in
src/admin/commission-drafts.jsonandpublic/custom/commission-drafts/) - Image uploads to catbox.moe for commission artwork
- Commission icon placement on the desktop grid via
WinXP/apps/commission-placement.json
Auth is via GitHub OAuth (configured with GITHUB_CLIENT_ID, GITHUB_CLIENT_SECRET, and GITHUB_ADMIN_LOGIN).
Users can draw inside the XP Paint app and submit artwork for review.
Current behavior:
- submission goes into a moderation queue, not straight to public view
- approved drawings appear in
My Pictures - commissions are published separately from the admin page and show up as desktop icons
Key paths:
- src/App.js - route split between desktop, admin, and layout debug
- src/app-mode.js - mobile/desktop experience switcher (
MOBILE_BREAKPOINT = 820) - src/mobile-site/ - mobile-first experience (About, Drawings, Commissions, Paint)
- src/WinXP - desktop shell and apps
- src/admin/DrawingsAdminPage.js - admin moderation and commissions UI
- src/admin/commission-drafts.json - commission draft records
- public/custom/commission-drafts/ - commission artwork assets
- api - Vercel API handlers
- server/index.js - local Express API for development
- public/custom - custom game, media, and desktop asset payloads
- vercel.json - Vercel routing and build config
This repo is intended to deploy from Vercel to thinko.micr.dev.
Current deployment model:
- static frontend build from CRA
- single Vercel API entrypoint in api/index.js
- Vercel Blob for image storage
- GitHub OAuth for admin login
The desktop shell also includes Tauri integration code (detected via window.__TAURI__ / window.__TAURI_INTERNALS__) for potential future desktop builds, though the primary target is the Vercel web deployment.
- This repo contains large binary assets for icons, music, and browser-playable games.
- Temporary local junk like
downloads/,opensrc/, and ad hoc screenshots should not be committed. - The codebase still carries some upstream naming from the original
winXPproject, but the repo target is nowmicr-dev/thinko.
See LICENSE.