Opentrons Labworks Inc
Opentrons Flex와 OT‑2용 프로토콜 작성 및 실행 소프트웨어
하나의 제품을 선택해 피부 고민을 추적하고 변화가 일반 측정 변동보다 큰지 확인하세요
Choose one product, track one skin concern, and find out whether the change is bigger than the usual measurement variation. Skin measurement by the YouCam AI Skin Analysis API.
건강Python · TypeScriptGitHub @Sahvendra7온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A fair test for your skincare. Measure your skin with the YouCam AI Skin Analysis API, choose one product for one goal, and check back weeks later. ProofLoop tells you whether a score moved further than normal scan-to-scan variation — or says plainly that it can't tell yet.
Built for the YouCam API Skin AI & eCommerce VTO Hackathon (Skin AI track).
People wonder whether a product is working while standing in front of a mirror — a bad instrument with different light every morning. Skin scanners give a number; shops give a product; nobody tells you whether the next number is actually different from the last one. ProofLoop closes that loop honestly:
| API | Endpoint | Where |
|---|---|---|
| File upload | POST /s2s/v2.0/file/skin-analysis + presigned PUT | every live scan / preview |
| AI Skin Analysis | POST /s2s/v2.0/task/skin-analysis, GET …/{task_id} (format: json, 8 SD concerns, 12 units) | baseline, instrument-check and check-in scans; per-concern detection masks shown over the user's photo |
| AI Skin Simulation | POST /s2s/v2.0/task/skin-simulation, GET …/{task_id} (4 units) | optional goal preview on the product page |
All of the above were verified against the live API through ProofLoop's own client — see
docs/youcam-integration.md for evidence, costs and the repeatability study.
Requirements: Python 3.12, Node 22.
# backend (http://localhost:8000)
cd backend
python3.12 -m venv venv
./venv/bin/pip install -r requirements-dev.txt
cp .env.example .env # add YOUCAM_API_KEY for live scans; leave blank for sample data only
./venv/bin/uvicorn app.main:app --reload --port 8000
# frontend (http://localhost:3000)
cd frontend
npm install
npm run dev
Without a key, everything except live scans and previews works, and live scans fail with a clear message instead of inventing results. Try with sample data replays a recorded YouCam response, labelled as such.
cd backend && ./venv/bin/python -m pytest # 91 tests, no network; 2 opt-in live tests skipped
cd backend && TEST_DATABASE_URL=postgresql://… ./venv/bin/python -m pytest # same suite on PostgreSQL, schema via Alembic
cd backend && ./venv/bin/ruff check . && ./venv/bin/ruff format --check .
cd frontend && npm run lint && npm run typecheck && npm run build
cd frontend && npm run test:e2e # Playwright, desktop + mobile, axe; isolated keyless backend
Live checks (spend units only when asked): YOUCAM_LIVE=1 ./venv/bin/python -m pytest -m live.
Hosted on free tiers: Next.js on Vercel (Hobby), FastAPI on Render (Free web service), PostgreSQL on Neon (Free).
Schema changes go through Alembic (backend/migrations). Runbook, settings and limits: docs/deployment.md.
Photos are cleaned (metadata stripped) and sent to YouCam, never stored by ProofLoop. The server keeps scores, capture metadata and trials under an anonymous session token; "Delete all my data" removes them immediately. ProofLoop is not a medical device and never attributes a change to a product.
The product catalogue is fictional sample data created to demonstrate matching.