2026-03-03 10:20:49 +07:00
|
|
|
fastapi==0.115.0
|
|
|
|
|
uvicorn[standard]==0.32.0
|
2026-04-16 10:57:30 +07:00
|
|
|
websockets>=12.0
|
2026-03-03 10:20:49 +07:00
|
|
|
sqlalchemy==2.0.36
|
fix(install): unblock self-hosting + drop forced wokwi clones
Resolves several install pain points reported by users (#108, #120) and
removes the obligatory upstream-clone step that confused contributors and
slowed down every Docker build.
Install fixes:
- nginx: server_name → catch-all default_server, drop Debian's stock site
so reverse-proxied users no longer get the "Welcome to nginx" page.
- entrypoint: auto-generate SECRET_KEY at first boot, persisted under
data/.secret_key. backend/.env is now optional in docker-compose.yml.
- backend: add greenlet>=3.0.0 (SQLAlchemy async dep that was missing on
some Python builds — caused uvicorn startup failures on WSL).
Wokwi libs come from npm:
- @wokwi/elements 1.9.2, avr8js 0.21.0, rp2040js 1.3.2 are pinned in
frontend/package.json. Vite aliases removed.
- Dockerfile.standalone no longer clones avr8js / rp2040js / wokwi-elements
/ wokwi-boards. Frontend stage is just COPY + npm install + build:docker.
- Board SVGs vendored under frontend/public/boards/ (10 deduped against
existing files, 2 truly new). third-party/wokwi-* clones become reference-
only credits — generate-component-metadata.ts skips gracefully when absent.
Production config split out:
- docker-compose.prod.yml, deploy/nginx.prod.conf, nginx-host-velxio*.conf,
update-third-party.bat removed. Production deployment lives in its own
repo: https://github.com/velxio/velxio-prod (host nginx + HTTPS + backups
+ pinned upstream commit).
Verified locally: 1161 frontend tests pass, build:docker completes clean.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 10:04:11 +07:00
|
|
|
# greenlet is needed by SQLAlchemy async on some Python builds (notably Windows
|
|
|
|
|
# Python 3.12+ wheels). Without it, app startup fails with
|
|
|
|
|
# "ValueError: the greenlet library is required". See issue #120.
|
|
|
|
|
greenlet>=3.0.0
|
2026-03-03 10:20:49 +07:00
|
|
|
aiosqlite==0.20.0
|
2026-04-12 01:45:50 +07:00
|
|
|
pydantic>=2.11.0
|
|
|
|
|
pydantic-settings>=2.6.0
|
2026-03-03 10:20:49 +07:00
|
|
|
python-multipart==0.0.12
|
2026-03-06 20:14:50 +07:00
|
|
|
python-jose[cryptography]==3.3.0
|
|
|
|
|
passlib[bcrypt]==1.7.4
|
|
|
|
|
bcrypt==4.0.1
|
2026-04-12 01:45:50 +07:00
|
|
|
httpx>=0.27.1
|
2026-03-06 20:14:50 +07:00
|
|
|
authlib==1.3.1
|
|
|
|
|
email-validator==2.2.0
|
2026-03-11 22:29:55 +07:00
|
|
|
mcp>=1.0.0
|
2026-03-15 02:57:22 +07:00
|
|
|
esptool>=4.7.0
|
2026-04-29 05:24:39 +07:00
|
|
|
# WASM runtime for Custom Chips on ESP32 (chip's WASM runs in the QEMU worker
|
|
|
|
|
# subprocess so I2C events get a synchronous response — see
|
|
|
|
|
# docs/wiki/custom-chips-esp32-backend-runtime.md).
|
|
|
|
|
wasmtime>=20.0
|