P2P mobile to desktop device orientation mirroring. https://speculo.howion.com
  • TypeScript 84.7%
  • CSS 12.5%
  • HTML 2%
  • JavaScript 0.8%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-09-01 20:50:37 +03:00
.vscode complete rework: bugfixes, correct matrix3d math, simpler codebase 2026-09-01 20:45:35 +03:00
assets complete rework: bugfixes, correct matrix3d math, simpler codebase 2026-09-01 20:45:35 +03:00
bin complete rework: bugfixes, correct matrix3d math, simpler codebase 2026-09-01 20:45:35 +03:00
components complete rework: bugfixes, correct matrix3d math, simpler codebase 2026-09-01 20:45:35 +03:00
constants complete rework: bugfixes, correct matrix3d math, simpler codebase 2026-09-01 20:45:35 +03:00
css complete rework: bugfixes, correct matrix3d math, simpler codebase 2026-09-01 20:45:35 +03:00
pages complete rework: bugfixes, correct matrix3d math, simpler codebase 2026-09-01 20:45:35 +03:00
public complete rework: bugfixes, correct matrix3d math, simpler codebase 2026-09-01 20:45:35 +03:00
utils complete rework: bugfixes, correct matrix3d math, simpler codebase 2026-09-01 20:45:35 +03:00
.editorconfig complete rework: bugfixes, correct matrix3d math, simpler codebase 2026-09-01 20:45:35 +03:00
.gitattributes complete rework: bugfixes, correct matrix3d math, simpler codebase 2026-09-01 20:45:35 +03:00
.gitignore complete rework: bugfixes, correct matrix3d math, simpler codebase 2026-09-01 20:45:35 +03:00
.markdownlint.jsonc complete rework: bugfixes, correct matrix3d math, simpler codebase 2026-09-01 20:45:35 +03:00
.vercelignore complete rework: bugfixes, correct matrix3d math, simpler codebase 2026-09-01 20:45:35 +03:00
app.tsx complete rework: bugfixes, correct matrix3d math, simpler codebase 2026-09-01 20:45:35 +03:00
biome.jsonc complete rework: bugfixes, correct matrix3d math, simpler codebase 2026-09-01 20:45:35 +03:00
bun.lock complete rework: bugfixes, correct matrix3d math, simpler codebase 2026-09-01 20:45:35 +03:00
env.d.ts complete rework: bugfixes, correct matrix3d math, simpler codebase 2026-09-01 20:45:35 +03:00
index.html complete rework: bugfixes, correct matrix3d math, simpler codebase 2026-09-01 20:45:35 +03:00
LICENSE complete rework: bugfixes, correct matrix3d math, simpler codebase 2026-09-01 20:45:35 +03:00
main.tsx complete rework: bugfixes, correct matrix3d math, simpler codebase 2026-09-01 20:45:35 +03:00
package.json complete rework: bugfixes, correct matrix3d math, simpler codebase 2026-09-01 20:45:35 +03:00
README.md complete rework: bugfixes, correct matrix3d math, simpler codebase 2026-09-01 20:45:35 +03:00
tsconfig.json complete rework: bugfixes, correct matrix3d math, simpler codebase 2026-09-01 20:45:35 +03:00
vercel.json complete rework: bugfixes, correct matrix3d math, simpler codebase 2026-09-01 20:45:35 +03:00
vite.config.ts complete rework: bugfixes, correct matrix3d math, simpler codebase 2026-09-01 20:45:35 +03:00

Speculo

P2P mobile to desktop device orientation mirroring. Try it out at speculo.howion.com.

Speculo is a Latin word (which is dative form of Speculum) which translates to mirror, reflector. Specere + -ulum.

Motivation

Just one of my rather old experimental works, which WebRTC was a big deal back then. This is now a better rewrite of the previous version which I previously used Next.js + React. This version uses Vite + Preact with major optimizations and bugfixes in code. Thank god, now also displays QR-code instead of just a link.

Tech Stack

  • Bun v1.4
  • Typescript v7
  • PeerJS + xirsys
  • Vite
  • Preact
  • Biomejs

To-Do's

  • Read and use accelerometer sensor data to display device movement in addition to rotation. Maybe use it as noise filtering as well
  • Switch to threejs rendering for easier 3D manipulation.
  • Compress client-emitted data and decompress it on the host.
  • Setup and use turn.howion.com and stun.howion.com.

Development

This repo is maintained under the monorepo mono within the personal zone. However, it should be fine to work with as a standalone repository as long as you keep track of possible git-lfs objects and auto generated/updated files such as biome.json.

License

MIT