Skip to content

Commit 812420e

Browse files
Initial commit
0 parents  commit 812420e

52 files changed

Lines changed: 5343 additions & 0 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.env.example

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# Copy this file to .env and substitute the below env variable with your room manager URL.
2+
# You can get your URL at https://fishjam.io/app
3+
# You can read more about room manager at https://docs.fishjam.io/room-manager
4+
VITE_ROOM_MANAGER_URL=""

.github/workflows/checks.yaml

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
name: Check Pull Request
2+
3+
on:
4+
push:
5+
branches: [main]
6+
7+
pull_request:
8+
branches: [main]
9+
10+
jobs:
11+
run_checks:
12+
name: Build, check formatting, check linting
13+
runs-on: ubuntu-latest
14+
15+
strategy:
16+
matrix:
17+
node-version: [22.x]
18+
19+
steps:
20+
- uses: actions/checkout@v4
21+
22+
- name: Use Node 🛎️
23+
uses: actions/setup-node@v4
24+
with:
25+
node-version: ${{ matrix.node-version }}
26+
cache: "npm"
27+
28+
- name: Use corepack
29+
run: corepack enable
30+
31+
- name: Install dependencies ⬇️
32+
run: yarn --immutable
33+
34+
- name: Build 📦
35+
run: yarn build
36+
37+
- name: Check formatting 🎨
38+
run: yarn format:check

.github/workflows/deploy.yaml

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
name: Deploy as static page
2+
3+
on:
4+
push:
5+
branches: ["main"]
6+
7+
workflow_dispatch:
8+
9+
permissions:
10+
contents: read
11+
12+
concurrency:
13+
group: "deploy"
14+
cancel-in-progress: false
15+
16+
jobs:
17+
build-deploy:
18+
if: github.actor != 'dependabot[bot]'
19+
environment:
20+
name: deploy
21+
url: ${{ vars.DEPLOY_URL }}
22+
runs-on: ubuntu-latest
23+
steps:
24+
- name: Checkout
25+
uses: actions/checkout@v4
26+
27+
- name: Setup Node.js
28+
uses: actions/setup-node@v4
29+
with:
30+
node-version: 22.x
31+
cache: "npm"
32+
- name: Use corepack
33+
run: corepack enable
34+
- name: Install node dependencies
35+
run: yarn
36+
- name: Build project
37+
env:
38+
VITE_ROOM_MANAGER_URL: ${{ secrets.ROOM_MANAGER_URL }}
39+
run: yarn build
40+
- name: Copy files to deployment server
41+
uses: appleboy/scp-action@v1
42+
with:
43+
host: ${{ secrets.SSH_HOST }}
44+
username: ${{ secrets.SSH_USERNAME }}
45+
key: ${{ secrets.SSH_PRIVATE_KEY }}
46+
rm: true
47+
strip_components: 1
48+
source: dist/*
49+
target: /usr/share/nginx/html

.gitignore

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
.yarn/*
2+
!.yarn/cache
3+
!.yarn/patches
4+
!.yarn/plugins
5+
!.yarn/releases
6+
!.yarn/sdks
7+
!.yarn/versions
8+
9+
# Logs
10+
logs
11+
*.log
12+
npm-debug.log*
13+
yarn-debug.log*
14+
yarn-error.log*
15+
pnpm-debug.log*
16+
lerna-debug.log*
17+
18+
node_modules
19+
dist
20+
dist-ssr
21+
*.local
22+
23+
.env
24+
25+
# Editor directories and files
26+
.vscode/*
27+
!.vscode/extensions.json
28+
.idea
29+
.DS_Store
30+
*.suo
31+
*.ntvs*
32+
*.njsproj
33+
*.sln
34+
*.sw?

.yarnrc.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
nodeLinker: node-modules

README.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# Gesture Recognition Example
2+
3+
The code in this repository contains a full working example of a videoconferencing app with gesture recognition.
4+
5+
## Running
6+
7+
To run the example locally, first install the dependencies by running
8+
9+
```
10+
yarn
11+
```
12+
13+
Next, copy [`.env.example`](.env.example) to `.env` and then update the value of `VITE_ROOM_MANAGER_URL` in `.env`.
14+
15+
> [!tip]
16+
> You can get a working `VITE_ROOM_MANAGER_URL` on [Fishjam](https://fishjam.io/app) or by running [room-manager](https://github.com/fishjam-cloud/js-server-sdk/tree/main/examples/room-manager) locally.
17+
18+
Finally, run the example with
19+
20+
```sh
21+
yarn dev
22+
```

components.json

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
{
2+
"$schema": "https://ui.shadcn.com/schema.json",
3+
"style": "new-york",
4+
"rsc": false,
5+
"tsx": true,
6+
"tailwind": {
7+
"config": "",
8+
"css": "src/index.css",
9+
"baseColor": "stone",
10+
"cssVariables": false,
11+
"prefix": ""
12+
},
13+
"aliases": {
14+
"components": "@/components",
15+
"utils": "@/lib/utils",
16+
"ui": "@/components/ui",
17+
"lib": "@/lib",
18+
"hooks": "@/hooks"
19+
},
20+
"iconLibrary": "lucide"
21+
}

eslint.config.js

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import js from "@eslint/js";
2+
import globals from "globals";
3+
import reactHooks from "eslint-plugin-react-hooks";
4+
import reactRefresh from "eslint-plugin-react-refresh";
5+
import tseslint from "typescript-eslint";
6+
7+
export default tseslint.config(
8+
{ ignores: ["dist"] },
9+
{
10+
extends: [js.configs.recommended, ...tseslint.configs.recommended],
11+
files: ["**/*.{ts,tsx}"],
12+
languageOptions: {
13+
ecmaVersion: 2020,
14+
globals: globals.browser,
15+
},
16+
plugins: {
17+
"react-hooks": reactHooks,
18+
"react-refresh": reactRefresh,
19+
},
20+
rules: {
21+
...reactHooks.configs.recommended.rules,
22+
"react-refresh/only-export-components": [
23+
"warn",
24+
{ allowConstantExport: true },
25+
],
26+
},
27+
},
28+
);

index.html

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<!doctype html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8" />
5+
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
6+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
7+
<link href="/src/index.css" rel="stylesheet" />
8+
<title>Gesture Recognition</title>
9+
</head>
10+
11+
<body>
12+
<div id="root"></div>
13+
<script type="module" src="/src/main.tsx"></script>
14+
</body>
15+
</html>

package.json

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
{
2+
"name": "gesture-recognition",
3+
"private": true,
4+
"version": "0.1.0",
5+
"type": "module",
6+
"scripts": {
7+
"dev": "vite",
8+
"format": "prettier 'src/**/*.{js,jsx,ts,tsx,json}' --write",
9+
"format:check": "prettier 'src/**/*.{js,jsx,ts,tsx,json}' --check",
10+
"build": "tsc -b && vite build",
11+
"lint": "eslint .",
12+
"preview": "vite preview"
13+
},
14+
"dependencies": {
15+
"@fishjam-cloud/react-client": "^0.17.0",
16+
"@mediapipe/tasks-vision": "^0.10.22-rc.20250304",
17+
"@radix-ui/react-separator": "^1.1.7",
18+
"@radix-ui/react-slot": "^1.2.3",
19+
"@swmansion/smelter": "^0.2.1",
20+
"@swmansion/smelter-web-wasm": "^0.2.1",
21+
"axios": "^1.9.0",
22+
"class-variance-authority": "^0.7.1",
23+
"clsx": "^2.1.1",
24+
"lucide-react": "^0.510.0",
25+
"react": "^18.0.0",
26+
"react-dom": "^18.0.0",
27+
"react-router": "^7.6.0",
28+
"sonner": "^2.0.5"
29+
},
30+
"devDependencies": {
31+
"@eslint/js": "^9.22.0",
32+
"@tailwindcss/vite": "^4.1.6",
33+
"@types/node": "^22.15.3",
34+
"@types/react": "^19.0.10",
35+
"@types/react-dom": "^19.0.4",
36+
"@vitejs/plugin-react-swc": "^3.8.0",
37+
"eslint": "^9.22.0",
38+
"eslint-plugin-react-hooks": "^5.2.0",
39+
"eslint-plugin-react-refresh": "^0.4.19",
40+
"globals": "^16.0.0",
41+
"prettier": "^3.5.3",
42+
"prettier-plugin-tailwindcss": "^0.6.12",
43+
"tailwind-merge": "^3.3.0",
44+
"tailwindcss": "^4.1.6",
45+
"tw-animate-css": "^1.2.9",
46+
"typescript": "~5.7.2",
47+
"typescript-eslint": "^8.26.1",
48+
"vite": "^6.3.1",
49+
"vite-plugin-static-copy": "^2.3.1"
50+
},
51+
"packageManager": "yarn@4.9.1+sha512.f95ce356460e05be48d66401c1ae64ef84d163dd689964962c6888a9810865e39097a5e9de748876c2e0bf89b232d583c33982773e9903ae7a76257270986538"
52+
}

0 commit comments

Comments
 (0)