Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
5eb1b30
docs: add CI and release badges to README
Abdelkaderbzz Jan 7, 2026
d271103
fix(upload): handle MIME types with codec suffixes (video/webm;codecs…
Abdelkaderbzz Jan 7, 2026
a6fb9ba
feat(share): use /watch page URL instead of raw storage URL
Abdelkaderbzz Jan 7, 2026
0c21a18
feat(watch): integrate vidify video player
Abdelkaderbzz Jan 7, 2026
a9a42c0
feat: integrate Vidify video player in Recorder and Watch pages
Abdelkaderbzz Jan 7, 2026
da255db
refactor(Recorder): improve code readability and formatting
Abdelkaderbzz Jan 7, 2026
505de0d
Refactor Recorder and Watch components; extract audio, webcam, and re…
Abdelkaderbzz Jan 7, 2026
f12ba4e
fix(Watch): add type for onProgress event in ReactPlayer and ensure p…
Abdelkaderbzz Jan 7, 2026
d0e427a
Refactor video playback in RecordingPreview and Watch components
Abdelkaderbzz Jan 7, 2026
c37338e
fix: remove Content Security Policy meta tag from index.html
Abdelkaderbzz Jan 7, 2026
4a2d786
chore: bump version to 0.1.1
Abdelkaderbzz Jan 7, 2026
6f392c7
chore: bump version to 0.2.0
Abdelkaderbzz Jan 7, 2026
36dae57
docs: update changelog for v0.1.1
Abdelkaderbzz Jan 7, 2026
888c4c3
chore: bump version to 0.2.1
Abdelkaderbzz Jan 7, 2026
c0529ec
docs: update project structure with complete file organization
Abdelkaderbzz Jan 7, 2026
fa7040e
docs: update changelog with versions 0.2.0 and 0.2.1
Abdelkaderbzz Jan 7, 2026
bbd6ae5
chore: remove npm lock file and update gitignore for pnpm
Abdelkaderbzz Jan 7, 2026
cc863ae
docs: migrate all documentation from npm/bun to pnpm
Abdelkaderbzz Jan 7, 2026
2c68a0d
docs: Add Code of Conduct and contributing guidelines.
Abdelkaderbzz Jan 7, 2026
3523068
ci: migrate GitHub Actions workflows from npm to pnpm
Abdelkaderbzz Jan 7, 2026
c8b2efc
chore: bump version to 0.2.2
Abdelkaderbzz Jan 7, 2026
b732c0e
ci: add Telegram notifications to all workflows
Abdelkaderbzz Jan 7, 2026
a98629a
ci: add WhatsApp Cloud API notifications to all workflows
Abdelkaderbzz Jan 7, 2026
281f812
ci: test WhatsApp and Telegram notifications
Abdelkaderbzz Jan 7, 2026
81d1605
feat: Update CI/CD WhatsApp notifications to use a dynamic `ci_notifi…
Abdelkaderbzz Jan 7, 2026
96bfbcb
ci: remove WhatsApp notifications, keep Telegram only
Abdelkaderbzz Jan 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Contributing to GoRec

Thank you for your interest in contributing! Please see the full guidelines in [docs/CONTRIBUTING.md](../docs/CONTRIBUTING.md).

## Quick Start

1. Fork the repository
2. Create a new branch (`git checkout -b feature/your-feature`)
3. Make your changes and commit (`git commit -m 'feat: add feature'`)
4. Push to your fork and open a Pull Request

## Code of Conduct

Please read our [Code of Conduct](../CODE_OF_CONDUCT.md) before contributing.
91 changes: 77 additions & 14 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,20 +23,25 @@ jobs:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 9

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
cache: 'pnpm'

- name: Install dependencies
run: npm ci
run: pnpm install --frozen-lockfile

- name: Run ESLint
run: npm run lint
run: pnpm lint

- name: Type check
run: npx tsc --noEmit
run: pnpm typecheck

# ==========================================
# Build Verification
Expand All @@ -49,17 +54,22 @@ jobs:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 9

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
cache: 'pnpm'

- name: Install dependencies
run: npm ci
run: pnpm install --frozen-lockfile

- name: Build application
run: npm run build
run: pnpm build
env:
VITE_SUPABASE_URL: ${{ secrets.VITE_SUPABASE_URL }}
VITE_SUPABASE_PUBLISHABLE_KEY: ${{ secrets.VITE_SUPABASE_PUBLISHABLE_KEY }}
Expand All @@ -82,17 +92,22 @@ jobs:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 9

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
cache: 'pnpm'

- name: Install dependencies
run: npm ci
run: pnpm install --frozen-lockfile

- name: Run npm audit
run: npm audit --audit-level=high
- name: Run pnpm audit
run: pnpm audit --audit-level=high
continue-on-error: true

- name: Run Supabase security tests
Expand All @@ -111,14 +126,62 @@ jobs:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 9

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
cache: 'pnpm'

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Check for outdated dependencies
run: npm outdated || true
run: pnpm outdated || true

- name: Check for vulnerabilities
run: npm audit --production || true
run: pnpm audit --prod || true

# ==========================================
# Telegram Notification
# ==========================================
notify:
name: Telegram Notification
runs-on: ubuntu-latest
needs: [lint, build, security]
if: always()
steps:
- name: Send Telegram notification
env:
TELEGRAM_BOT_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }}
TELEGRAM_CHAT_ID: ${{ secrets.TELEGRAM_CHAT_ID }}
run: |
if [[ "${{ needs.lint.result }}" == "success" && "${{ needs.build.result }}" == "success" && "${{ needs.security.result }}" == "success" ]]; then
STATUS="βœ… SUCCESS"
EMOJI="πŸŽ‰"
else
STATUS="❌ FAILED"
EMOJI="🚨"
fi

MESSAGE="${EMOJI} *GoRec CI* ${STATUS}

πŸ“¦ *Repository:* ${{ github.repository }}
🌿 *Branch:* ${{ github.ref_name }}
πŸ‘€ *Author:* ${{ github.actor }}
πŸ“ *Commit:* \`${{ github.sha }}\`

πŸ” *Lint:* ${{ needs.lint.result }}
πŸ—οΈ *Build:* ${{ needs.build.result }}
πŸ”’ *Security:* ${{ needs.security.result }}

[View Run](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }})"

curl -s -X POST "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage" \
-d chat_id="${TELEGRAM_CHAT_ID}" \
-d parse_mode="Markdown" \
-d text="${MESSAGE}" || true
41 changes: 38 additions & 3 deletions .github/workflows/deploy-staging.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,19 @@ jobs:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 9

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
cache: 'pnpm'

- name: Install dependencies
run: npm ci
run: pnpm install --frozen-lockfile

- name: Run security audit
run: node supabase/security-audit.js
Expand All @@ -35,7 +40,7 @@ jobs:
continue-on-error: true

- name: Build application
run: npm run build
run: pnpm build
env:
VITE_SUPABASE_URL: ${{ secrets.VITE_SUPABASE_URL }}
VITE_SUPABASE_PUBLISHABLE_KEY: ${{ secrets.VITE_SUPABASE_PUBLISHABLE_KEY }}
Expand All @@ -52,6 +57,36 @@ jobs:
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}

- name: Send Telegram notification
if: always()
env:
TELEGRAM_BOT_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }}
TELEGRAM_CHAT_ID: ${{ secrets.TELEGRAM_CHAT_ID }}
run: |
if [[ "${{ job.status }}" == "success" ]]; then
STATUS="βœ… SUCCESS"
EMOJI="πŸš€"
else
STATUS="❌ FAILED"
EMOJI="🚨"
fi

MESSAGE="${EMOJI} *GoRec Staging Deploy* ${STATUS}

πŸ“¦ *Repository:* ${{ github.repository }}
🌿 *Branch:* ${{ github.ref_name }}
πŸ‘€ *Author:* ${{ github.actor }}
πŸ“ *Commit:* \`${{ github.sha }}\`

🌐 *Staging URL:* https://staging--gorec.netlify.app

[View Run](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }})"

curl -s -X POST "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage" \
-d chat_id="${TELEGRAM_CHAT_ID}" \
-d parse_mode="Markdown" \
-d text="${MESSAGE}" || true

- name: Comment deployment URL
if: github.event_name == 'pull_request'
uses: actions/github-script@v7
Expand Down
48 changes: 41 additions & 7 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,17 +27,22 @@ jobs:
with:
fetch-depth: 0

- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 9

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
cache: 'pnpm'

- name: Install dependencies
run: npm ci
run: pnpm install --frozen-lockfile

- name: Build application
run: npm run build
run: pnpm build
env:
VITE_SUPABASE_URL: ${{ secrets.VITE_SUPABASE_URL }}
VITE_SUPABASE_PUBLISHABLE_KEY: ${{ secrets.VITE_SUPABASE_PUBLISHABLE_KEY }}
Expand Down Expand Up @@ -90,19 +95,48 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

# ==========================================
# Notify Team (Optional)
# Telegram Notification
# ==========================================
notify:
name: Notify Team
name: Telegram Notification
runs-on: ubuntu-latest
needs: release
if: success()
if: always()
steps:
- name: Get version from tag
id: get_version
run: echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT

- name: Post release notification
- name: Send Telegram notification
env:
TELEGRAM_BOT_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }}
TELEGRAM_CHAT_ID: ${{ secrets.TELEGRAM_CHAT_ID }}
run: |
if [[ "${{ needs.release.result }}" == "success" ]]; then
STATUS="βœ… SUCCESS"
EMOJI="πŸŽ‰"
else
STATUS="❌ FAILED"
EMOJI="🚨"
fi

MESSAGE="${EMOJI} *GoRec Release* ${STATUS}

🏷️ *Version:* ${{ steps.get_version.outputs.VERSION }}
πŸ“¦ *Repository:* ${{ github.repository }}
πŸ‘€ *Author:* ${{ github.actor }}

πŸ“₯ *Download:* [GitHub Release](https://github.com/${{ github.repository }}/releases/tag/${{ steps.get_version.outputs.VERSION }})
🌐 *Live:* https://gorec.netlify.app

[View Release](https://github.com/${{ github.repository }}/releases/tag/${{ steps.get_version.outputs.VERSION }})"

curl -s -X POST "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage" \
-d chat_id="${TELEGRAM_CHAT_ID}" \
-d parse_mode="Markdown" \
-d text="${MESSAGE}" || true

- name: Post release notification (console)
run: |
echo "πŸŽ‰ GoRec ${{ steps.get_version.outputs.VERSION }} has been released!"
echo "View release: https://github.com/${{ github.repository }}/releases/tag/${{ steps.get_version.outputs.VERSION }}"
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ pnpm-debug.log*
lerna-debug.log*
.env
node_modules
bun.lockb
package-lock.json
dist
dist-ssr
*.local
Expand Down
Loading
Loading