AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기iotivate.dev webapp
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Simplifying IoT, One Module at a Time.
A platform for web-based IoT tools, project showcases, and ESP32 development resources.
Stack: Next.js, TypeScript, Tailwind CSS, App Router
Runs at http://localhost:3000.
Stack: FastAPI, SQLModel, SQLite (dev) / PostgreSQL (prod)
Runs at http://localhost:8000. API docs at /docs.
The backend is one shared FastAPI app (site + radar) deployed as a single Render
Web Service. Migrations run automatically on startup, so a normalREADME 전문 보기 ↗Simplifying IoT, One Module at a Time.
A platform for web-based IoT tools, project showcases, and ESP32 development resources.
iotivate.dev/
├── frontend/ # Next.js (React, Tailwind CSS, App Router)
├── backend/ # FastAPI (Python, SQLModel)
└── README.md
Stack: Next.js, TypeScript, Tailwind CSS, App Router
cd frontend
cp .env.example .env.local
npm install
npm run dev
Runs at http://localhost:3000.
| Route | Description |
|---|---|
/ | Homepage |
/tools | Tools hub |
/tools/esp32-web-flasher | ESP32 Web Flasher (placeholder) |
/tools/wirelessear-installer | WirelessEar Installer (placeholder) |
/projects | Project showcase |
/blog | Blog (placeholder) |
/about | About page |
/contact | Contact form |
Stack: FastAPI, SQLModel, SQLite (dev) / PostgreSQL (prod)
cd backend
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
uvicorn app.main:app --reload
Runs at http://localhost:8000. API docs at /docs.
python -m app.seed
| Method | Path | Description |
|---|---|---|
GET | /health | Health check |
GET | /api/tools/ | List all tools |
GET | /api/tools/{slug} | Get tool by slug |
GET | /api/projects/ | List all projects |
GET | /api/projects/{slug} | Get project by slug |
| Variable | Default | Description |
|---|---|---|
DATABASE_URL | sqlite:///./iotivate.db | Database connection string |
SECRET_KEY | change-me-in-production | JWT signing key |
CORS_ORIGINS | http://localhost:3000 | Comma-separated allowed origins |
The backend is one shared FastAPI app (site + radar) deployed as a single Render Web Service. Migrations run automatically on startup, so a normal redeploy picks up new tables (e.g. radar's) with no manual DB step.
⚠️ Single worker / single instance. Radar keeps WebSocket connections,
device presence, and the rules engine in process memory. Running more than one
worker or instance breaks cross-connection fan-out and rule-cache invalidation.
Keep the service at one process until a pub/sub layer (Postgres
LISTEN/NOTIFY or Redis) is added for horizontal scaling.
uvicorn app.main:app --host 0.0.0.0 --port $PORT (no
--workers flag → one process). Do not use gunicorn -w N / --workers N>1./ws/radar/* needs no extra config./health.An optional render.yaml Blueprint codifies the above. It is
inert for existing manually-created services — committing it does not change a
running deploy; it only applies if you adopt it as a Blueprint in the dashboard.