Full website redesign + GitHub repo ecosystem #3983
8 changed files+319−4
Added.github/CODEOWNERS+26−0View fileUnifiedSplit
@@ -0,0 +1,26 @@
1# 48co Voice — Code Ownership
2# These owners are automatically requested for PR review.
3
4# Default — all files
5* @ccantynz-alt
6
7# Website (Next.js)
8/app/ @ccantynz-alt
9/components/ @ccantynz-alt
10/lib/ @ccantynz-alt
11
12# Desktop App (Tauri / Rust)
13/tauri-app/ @ccantynz-alt
14
15# Chrome Extension
16/extension/ @ccantynz-alt
17
18# Mobile
19/ios-keyboard/ @ccantynz-alt
20/android-keyboard/ @ccantynz-alt
21
22# Shared Rust Core
23/shared-rust/ @ccantynz-alt
24
25# CI/CD & Repo Config
26/.github/ @ccantynz-alt
Added.github/ISSUE_TEMPLATE/bug_report.md+26−0View fileUnifiedSplit
@@ -0,0 +1,26 @@
1---
2name: Bug Report
3about: Something isn't working correctly
4title: "[Bug] "
5labels: bug
6assignees: ''
7---
8
9**What happened?**
10<!-- A clear description of the bug. -->
11
12**What did you expect?**
13<!-- What should have happened instead. -->
14
15**Steps to reproduce**
161.
172.
183.
19
20**Platform**
21- OS: <!-- e.g. Windows 11, macOS 14, iOS 17 -->
22- App: <!-- e.g. Desktop app, Chrome extension, website -->
23- Browser (if applicable): <!-- e.g. Chrome 124 -->
24
25**Screenshots**
26<!-- Attach screenshots if applicable. -->
Added.github/ISSUE_TEMPLATE/feature_request.md+24−0View fileUnifiedSplit
@@ -0,0 +1,24 @@
1---
2name: Feature Request
3about: Suggest a new feature or improvement
4title: "[Feature] "
5labels: enhancement
6assignees: ''
7---
8
9**What problem does this solve?**
10<!-- Describe the problem or need. -->
11
12**What's the solution?**
13<!-- How should this work from a user's perspective? -->
14
15**Which platform?**
16- [ ] Desktop (Mac/Windows)
17- [ ] Chrome Extension
18- [ ] Website
19- [ ] iPhone/iPad
20- [ ] Android
21- [ ] All
22
23**Additional context**
24<!-- Any competitor examples, screenshots, or references. -->
Added.github/PULL_REQUEST_TEMPLATE.md+21−0View fileUnifiedSplit
@@ -0,0 +1,21 @@
1## Summary
2
3<!-- What does this PR do? 1-2 sentences. -->
4
5## Changes
6
7<!-- Bullet list of what changed and why. -->
8
9-
10
11## Testing
12
13<!-- How was this tested? What should reviewers check? -->
14
15- [ ] Tested locally
16- [ ] No new warnings or errors in build
17- [ ] Existing functionality still works
18
19## Screenshots
20
21<!-- If UI changes, add before/after screenshots. Delete this section if not applicable. -->
Added.github/dependabot.yml+56−0View fileUnifiedSplit
@@ -0,0 +1,56 @@
1version: 2
2updates:
3 # Website (Next.js / npm)
4 - package-ecosystem: "npm"
5 directory: "/"
6 schedule:
7 interval: "weekly"
8 day: "monday"
9 open-pull-requests-limit: 10
10 labels:
11 - "dependencies"
12 groups:
13 react:
14 patterns:
15 - "react"
16 - "react-dom"
17 nextjs:
18 patterns:
19 - "next"
20 - "eslint-config-next"
21 tailwind:
22 patterns:
23 - "tailwindcss"
24 - "@tailwindcss/*"
25
26 # Desktop app (Tauri / Cargo)
27 - package-ecosystem: "cargo"
28 directory: "/tauri-app/src-tauri"
29 schedule:
30 interval: "weekly"
31 day: "monday"
32 open-pull-requests-limit: 5
33 labels:
34 - "dependencies"
35 - "rust"
36
37 # Shared Rust library (Cargo)
38 - package-ecosystem: "cargo"
39 directory: "/shared-rust"
40 schedule:
41 interval: "weekly"
42 day: "monday"
43 open-pull-requests-limit: 5
44 labels:
45 - "dependencies"
46 - "rust"
47
48 # GitHub Actions
49 - package-ecosystem: "github-actions"
50 directory: "/"
51 schedule:
52 interval: "weekly"
53 open-pull-requests-limit: 5
54 labels:
55 - "dependencies"
56 - "ci"
Added.github/workflows/ci.yml+62−0View fileUnifiedSplit
@@ -0,0 +1,62 @@
1name: CI
2
3on:
4 pull_request:
5 branches: [main]
6 push:
7 branches: [main]
8
9concurrency:
10 group: ci-${{ github.ref }}
11 cancel-in-progress: true
12
13jobs:
14 lint-and-build:
15 name: Lint & Build (Website)
16 runs-on: ubuntu-latest
17 steps:
18 - uses: actions/checkout@v4
19
20 - uses: actions/setup-node@v4
21 with:
22 node-version: 22
23 cache: npm
24
25 - name: Install dependencies
26 run: npm ci
27
28 - name: Lint
29 run: npm run lint
30
31 - name: Build
32 run: npm run build
33
34 rust-check:
35 name: Rust Check (Desktop & Shared)
36 runs-on: ubuntu-latest
37 steps:
38 - uses: actions/checkout@v4
39
40 - uses: dtolnay/rust-toolchain@stable
41
42 - uses: Swatinem/rust-cache@v2
43 with:
44 workspaces: |
45 tauri-app/src-tauri
46 shared-rust
47
48 - name: Check shared-rust
49 working-directory: shared-rust
50 run: cargo check --all-targets
51
52 - name: Check tauri-app
53 working-directory: tauri-app/src-tauri
54 run: cargo check --all-targets
55
56 - name: Clippy (shared-rust)
57 working-directory: shared-rust
58 run: cargo clippy -- -D warnings
59
60 - name: Clippy (tauri-app)
61 working-directory: tauri-app/src-tauri
62 run: cargo clippy -- -D warnings
Modified.gitignore+70−4View fileUnifiedSplit
@@ -1,14 +1,80 @@
1# ── Dependencies ──────────────────────────
12node_modules/
3
4# ── Next.js ───────────────────────────────
25.next/
3desktop/dist/
4desktop/node_modules/
6out/
7.vercel/
8
9# ── Rust / Cargo ──────────────────────────
10target/
11shared-rust/target/
12tauri-app/src-tauri/target/
13
14# ── Build artifacts ───────────────────────
515*.dmg
616*.exe
717*.msi
18*.app
19*.deb
20*.AppImage
21dist/
22desktop/dist/
23desktop/node_modules/
824
9# Generated icons (created by npm run icons in desktop/)
25# ── Generated icons ──────────────────────
1026desktop/assets/icon.png
1127desktop/assets/tray-icon.png
1228desktop/assets/tray-iconTemplate.png
1329desktop/assets/tray-iconTemplate@2x.png
14shared-rust/target/
30
31# ── Environment & secrets ─────────────────
32.env
33.env.local
34.env.development
35.env.production
36.env*.local
37*.pem
38*.key
39*.p12
40
41# ── IDE & editor ─────────────────────────
42.vscode/
43.idea/
44*.swp
45*.swo
46*~
47.DS_Store
48
49# ── OS files ─────────────────────────────
50.DS_Store
51Thumbs.db
52Desktop.ini
53
54# ── Logs ──────────────────────────────────
55*.log
56npm-debug.log*
57yarn-debug.log*
58yarn-error.log*
59
60# ── Database ──────────────────────────────
61*.db
62*.sqlite
63*.sqlite3
64
65# ── Whisper models (large binary files) ───
66*.bin
67!public/**/*.bin
68
69# ── Testing ───────────────────────────────
70coverage/
71.nyc_output/
72
73# ── Mobile build artifacts ────────────────
74ios-keyboard/build/
75android-keyboard/build/
76android-keyboard/.gradle/
77android-keyboard/local.properties
78*.ipa
79*.apk
80*.aab
AddedSECURITY.md+34−0View fileUnifiedSplit
@@ -0,0 +1,34 @@
1# Security Policy
2
3## Reporting a Vulnerability
4
5If you discover a security vulnerability in 48co Voice, please report it responsibly.
6
7**Email:** [support@48co.nz](mailto:support@48co.nz)
8
9Include:
10- Description of the vulnerability
11- Steps to reproduce
12- Potential impact
13- Suggested fix (if any)
14
15We will acknowledge your report within 48 hours and aim to resolve critical issues within 7 days.
16
17## Supported Versions
18
19| Component | Version | Supported |
20|-----------|---------|-----------|
21| Website (Next.js) | Latest on main | Yes |
22| Desktop App (Tauri) | Latest release | Yes |
23| Chrome Extension | Latest release | Yes |
24| iOS Keyboard | Latest release | Yes |
25| Android Keyboard | Latest release | Yes |
26
27## Security Practices
28
29- Passwords are hashed with bcrypt
30- Session tokens are cryptographically random with 30-day expiry
31- All data in transit is encrypted with TLS 1.3
32- Offline mode processes everything on-device with zero cloud transmission
33- API keys are never committed to the repository
34- Dependencies are monitored via Dependabot for known vulnerabilities
035
c comment · e edit title · m merge · a approve · r request changes · ? shortcuts