Spaces:
Running
Running
Upload 11 files
#2
by
Ram6666 - opened
- .gitignore +41 -0
- .replit +74 -0
- app.json +46 -0
- babel.config.js +6 -0
- drizzle.config.ts +14 -0
- eslint.config.js +9 -0
- expo-env.d.ts +3 -0
- metro.config.js +5 -0
- package-lock.json +0 -0
- package.json +81 -0
- tsconfig.json +21 -0
.gitignore
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Learn more https://docs.github.com/en/get-started/getting-started-with-git/ignoring-files
|
| 2 |
+
|
| 3 |
+
# dependencies
|
| 4 |
+
node_modules/
|
| 5 |
+
|
| 6 |
+
# Expo
|
| 7 |
+
.expo/
|
| 8 |
+
dist/
|
| 9 |
+
web-build/
|
| 10 |
+
expo-env.d.ts
|
| 11 |
+
|
| 12 |
+
# Native
|
| 13 |
+
ios/
|
| 14 |
+
android/
|
| 15 |
+
*.orig.*
|
| 16 |
+
*.jks
|
| 17 |
+
*.p8
|
| 18 |
+
*.p12
|
| 19 |
+
*.key
|
| 20 |
+
*.mobileprovision
|
| 21 |
+
|
| 22 |
+
# Metro
|
| 23 |
+
.metro-health-check*
|
| 24 |
+
|
| 25 |
+
# debug
|
| 26 |
+
npm-debug.*
|
| 27 |
+
yarn-debug.*
|
| 28 |
+
yarn-error.*
|
| 29 |
+
|
| 30 |
+
# macOS
|
| 31 |
+
.DS_Store
|
| 32 |
+
*.pem
|
| 33 |
+
|
| 34 |
+
# local env files
|
| 35 |
+
.env*.local
|
| 36 |
+
|
| 37 |
+
# typescript
|
| 38 |
+
*.tsbuildinfo
|
| 39 |
+
.vercel
|
| 40 |
+
|
| 41 |
+
.env
|
.replit
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
entrypoint = "README.md"
|
| 2 |
+
modules = ["nodejs-22"]
|
| 3 |
+
|
| 4 |
+
[nix]
|
| 5 |
+
channel = "stable-24_05"
|
| 6 |
+
|
| 7 |
+
[deployment]
|
| 8 |
+
deploymentTarget = "cloudrun"
|
| 9 |
+
build = ["sh", "-c", "npm run expo:static:build && npm run server:build"]
|
| 10 |
+
run = ["npm", "run", "server:prod"]
|
| 11 |
+
|
| 12 |
+
[[ports]]
|
| 13 |
+
localPort = 5000
|
| 14 |
+
externalPort = 5000
|
| 15 |
+
|
| 16 |
+
[[ports]]
|
| 17 |
+
localPort = 8081
|
| 18 |
+
externalPort = 80
|
| 19 |
+
|
| 20 |
+
[[ports]]
|
| 21 |
+
localPort = 8082
|
| 22 |
+
externalPort = 3000
|
| 23 |
+
|
| 24 |
+
[env]
|
| 25 |
+
PORT = "5000"
|
| 26 |
+
|
| 27 |
+
[agent]
|
| 28 |
+
stack = "EXPO"
|
| 29 |
+
|
| 30 |
+
[workflows]
|
| 31 |
+
runButton = "Project"
|
| 32 |
+
|
| 33 |
+
[[workflows.workflow]]
|
| 34 |
+
name = "Project"
|
| 35 |
+
mode = "parallel"
|
| 36 |
+
author = "agent"
|
| 37 |
+
|
| 38 |
+
[[workflows.workflow.tasks]]
|
| 39 |
+
task = "workflow.run"
|
| 40 |
+
args = "Start App"
|
| 41 |
+
|
| 42 |
+
[[workflows.workflow]]
|
| 43 |
+
name = "Start App"
|
| 44 |
+
author = "agent"
|
| 45 |
+
mode = "parallel"
|
| 46 |
+
|
| 47 |
+
[[workflows.workflow.tasks]]
|
| 48 |
+
task = "workflow.run"
|
| 49 |
+
args = "Start Backend"
|
| 50 |
+
|
| 51 |
+
[[workflows.workflow.tasks]]
|
| 52 |
+
task = "workflow.run"
|
| 53 |
+
args = "Start Frontend"
|
| 54 |
+
|
| 55 |
+
[[workflows.workflow]]
|
| 56 |
+
name = "Start Backend"
|
| 57 |
+
author = "agent"
|
| 58 |
+
mode = "sequential"
|
| 59 |
+
|
| 60 |
+
[[workflows.workflow.tasks]]
|
| 61 |
+
task = "shell.exec"
|
| 62 |
+
args = "npm run server:dev"
|
| 63 |
+
waitForPort = 5000
|
| 64 |
+
|
| 65 |
+
[[workflows.workflow]]
|
| 66 |
+
name = "Start Frontend"
|
| 67 |
+
author = "agent"
|
| 68 |
+
mode = "sequential"
|
| 69 |
+
|
| 70 |
+
[[workflows.workflow.tasks]]
|
| 71 |
+
task = "shell.exec"
|
| 72 |
+
args = "npm run expo:dev"
|
| 73 |
+
waitForPort = 8081
|
| 74 |
+
ensurePreviewReachable = "/status"
|
app.json
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"expo": {
|
| 3 |
+
"name": "VocalClean AI",
|
| 4 |
+
"slug": "vocalclean-ai",
|
| 5 |
+
"version": "1.0.0",
|
| 6 |
+
"orientation": "portrait",
|
| 7 |
+
"icon": "./assets/images/icon.png",
|
| 8 |
+
"scheme": "vocalclean",
|
| 9 |
+
"userInterfaceStyle": "automatic",
|
| 10 |
+
"newArchEnabled": true,
|
| 11 |
+
"splash": {
|
| 12 |
+
"image": "./assets/images/splash-icon.png",
|
| 13 |
+
"resizeMode": "contain",
|
| 14 |
+
"backgroundColor": "#F8FAFC"
|
| 15 |
+
},
|
| 16 |
+
"ios": {
|
| 17 |
+
"supportsTablet": false,
|
| 18 |
+
"bundleIdentifier": "com.vocalclean.ai"
|
| 19 |
+
},
|
| 20 |
+
"android": {
|
| 21 |
+
"package": "com.vocalclean.ai",
|
| 22 |
+
"adaptiveIcon": {
|
| 23 |
+
"backgroundColor": "#F8FAFC",
|
| 24 |
+
"foregroundImage": "./assets/images/icon.png"
|
| 25 |
+
}
|
| 26 |
+
},
|
| 27 |
+
"web": {
|
| 28 |
+
"favicon": "./assets/images/favicon.png"
|
| 29 |
+
},
|
| 30 |
+
"plugins": [
|
| 31 |
+
[
|
| 32 |
+
"expo-router",
|
| 33 |
+
{
|
| 34 |
+
"origin": "https://replit.com/"
|
| 35 |
+
}
|
| 36 |
+
],
|
| 37 |
+
"expo-font",
|
| 38 |
+
"expo-web-browser",
|
| 39 |
+
"expo-localization"
|
| 40 |
+
],
|
| 41 |
+
"experiments": {
|
| 42 |
+
"typedRoutes": true,
|
| 43 |
+
"reactCompiler": true
|
| 44 |
+
}
|
| 45 |
+
}
|
| 46 |
+
}
|
babel.config.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
module.exports = function (api) {
|
| 2 |
+
api.cache(true);
|
| 3 |
+
return {
|
| 4 |
+
presets: [["babel-preset-expo", { unstable_transformImportMeta: true }]],
|
| 5 |
+
};
|
| 6 |
+
};
|
drizzle.config.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import { defineConfig } from "drizzle-kit";
|
| 2 |
+
|
| 3 |
+
if (!process.env.DATABASE_URL) {
|
| 4 |
+
throw new Error("DATABASE_URL, ensure the database is provisioned");
|
| 5 |
+
}
|
| 6 |
+
|
| 7 |
+
export default defineConfig({
|
| 8 |
+
out: "./migrations",
|
| 9 |
+
schema: "./shared/schema.ts",
|
| 10 |
+
dialect: "postgresql",
|
| 11 |
+
dbCredentials: {
|
| 12 |
+
url: process.env.DATABASE_URL,
|
| 13 |
+
},
|
| 14 |
+
});
|
eslint.config.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
const { defineConfig } = require('eslint/config');
|
| 2 |
+
const expoConfig = require('eslint-config-expo/flat');
|
| 3 |
+
|
| 4 |
+
module.exports = defineConfig([
|
| 5 |
+
expoConfig,
|
| 6 |
+
{
|
| 7 |
+
ignores: ["dist/*"],
|
| 8 |
+
}
|
| 9 |
+
]);
|
expo-env.d.ts
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
/// <reference types="expo/types" />
|
| 2 |
+
|
| 3 |
+
// NOTE: This file should not be edited and should be in your git ignore
|
metro.config.js
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
const { getDefaultConfig } = require("expo/metro-config");
|
| 2 |
+
|
| 3 |
+
const config = getDefaultConfig(__dirname);
|
| 4 |
+
|
| 5 |
+
module.exports = config;
|
package-lock.json
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
package.json
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"name": "expo-app",
|
| 3 |
+
"main": "expo-router/entry",
|
| 4 |
+
"version": "1.0.0",
|
| 5 |
+
"scripts": {
|
| 6 |
+
"postinstall": "patch-package",
|
| 7 |
+
"expo:dev": "EXPO_PACKAGER_PROXY_URL=https://$REPLIT_DEV_DOMAIN REACT_NATIVE_PACKAGER_HOSTNAME=$REPLIT_DEV_DOMAIN EXPO_PUBLIC_DOMAIN=$REPLIT_DEV_DOMAIN:5000 npx expo start --localhost",
|
| 8 |
+
"server:dev": "NODE_ENV=development tsx server/index.ts",
|
| 9 |
+
"expo:start:static:build": "npx expo start --no-dev --minify --localhost",
|
| 10 |
+
"expo:static:build": "node scripts/build.js",
|
| 11 |
+
"server:build": "esbuild server/index.ts --platform=node --packages=external --bundle --format=esm --outdir=server_dist",
|
| 12 |
+
"server:prod": "NODE_ENV=production node server_dist/index.js",
|
| 13 |
+
"db:push": "drizzle-kit push",
|
| 14 |
+
"start": "npx expo start",
|
| 15 |
+
"lint": "npx expo lint",
|
| 16 |
+
"lint:fix": "npx expo lint --fix"
|
| 17 |
+
},
|
| 18 |
+
"dependencies": {
|
| 19 |
+
"@expo-google-fonts/inter": "^0.4.2",
|
| 20 |
+
"@expo/vector-icons": "^15.0.3",
|
| 21 |
+
"@react-native-async-storage/async-storage": "2.2.0",
|
| 22 |
+
"@stardazed/streams-text-encoding": "^1.0.2",
|
| 23 |
+
"@tanstack/react-query": "^5.83.0",
|
| 24 |
+
"@ungap/structured-clone": "^1.3.0",
|
| 25 |
+
"drizzle-orm": "^0.39.3",
|
| 26 |
+
"drizzle-zod": "^0.7.0",
|
| 27 |
+
"expo": "~54.0.27",
|
| 28 |
+
"expo-av": "^16.0.8",
|
| 29 |
+
"expo-blur": "~15.0.8",
|
| 30 |
+
"expo-constants": "~18.0.11",
|
| 31 |
+
"expo-crypto": "^15.0.8",
|
| 32 |
+
"expo-document-picker": "^14.0.8",
|
| 33 |
+
"expo-file-system": "^19.0.21",
|
| 34 |
+
"expo-font": "~14.0.10",
|
| 35 |
+
"expo-glass-effect": "~0.1.4",
|
| 36 |
+
"expo-haptics": "~15.0.8",
|
| 37 |
+
"expo-image": "~3.0.11",
|
| 38 |
+
"expo-image-picker": "~17.0.9",
|
| 39 |
+
"expo-linear-gradient": "~15.0.8",
|
| 40 |
+
"expo-linking": "~8.0.10",
|
| 41 |
+
"expo-localization": "^17.0.8",
|
| 42 |
+
"expo-location": "~19.0.8",
|
| 43 |
+
"expo-router": "~6.0.17",
|
| 44 |
+
"expo-splash-screen": "~31.0.12",
|
| 45 |
+
"expo-status-bar": "~3.0.9",
|
| 46 |
+
"expo-symbols": "~1.0.8",
|
| 47 |
+
"expo-system-ui": "~6.0.9",
|
| 48 |
+
"expo-web-browser": "~15.0.10",
|
| 49 |
+
"express": "^5.0.1",
|
| 50 |
+
"http-proxy-middleware": "^3.0.5",
|
| 51 |
+
"pg": "^8.16.3",
|
| 52 |
+
"react": "19.1.0",
|
| 53 |
+
"react-dom": "19.1.0",
|
| 54 |
+
"react-native": "0.81.5",
|
| 55 |
+
"react-native-gesture-handler": "~2.28.0",
|
| 56 |
+
"react-native-keyboard-controller": "^1.20.6",
|
| 57 |
+
"react-native-reanimated": "~4.1.1",
|
| 58 |
+
"react-native-safe-area-context": "~5.6.0",
|
| 59 |
+
"react-native-screens": "~4.16.0",
|
| 60 |
+
"react-native-svg": "15.12.1",
|
| 61 |
+
"react-native-web": "^0.21.0",
|
| 62 |
+
"react-native-worklets": "0.5.1",
|
| 63 |
+
"tsx": "^4.20.6",
|
| 64 |
+
"ws": "^8.18.0",
|
| 65 |
+
"zod": "^3.24.2",
|
| 66 |
+
"zod-validation-error": "^3.4.0"
|
| 67 |
+
},
|
| 68 |
+
"devDependencies": {
|
| 69 |
+
"@babel/core": "^7.25.2",
|
| 70 |
+
"@expo/ngrok": "^4.1.0",
|
| 71 |
+
"@types/express": "^5.0.0",
|
| 72 |
+
"@types/react": "~19.1.10",
|
| 73 |
+
"babel-plugin-react-compiler": "^19.0.0-beta-e993439-20250117",
|
| 74 |
+
"drizzle-kit": "^0.31.4",
|
| 75 |
+
"eslint": "^9.31.0",
|
| 76 |
+
"eslint-config-expo": "~10.0.0",
|
| 77 |
+
"patch-package": "^8.0.0",
|
| 78 |
+
"typescript": "~5.9.2"
|
| 79 |
+
},
|
| 80 |
+
"private": true
|
| 81 |
+
}
|
tsconfig.json
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"extends": "expo/tsconfig.base",
|
| 3 |
+
"compilerOptions": {
|
| 4 |
+
"baseUrl": ".",
|
| 5 |
+
"strict": true,
|
| 6 |
+
"paths": {
|
| 7 |
+
"@/*": [
|
| 8 |
+
"./*"
|
| 9 |
+
],
|
| 10 |
+
"@shared/*": [
|
| 11 |
+
"./shared/*"
|
| 12 |
+
]
|
| 13 |
+
}
|
| 14 |
+
},
|
| 15 |
+
"include": [
|
| 16 |
+
"**/*.ts",
|
| 17 |
+
"**/*.tsx",
|
| 18 |
+
".expo/types/**/*.ts",
|
| 19 |
+
"expo-env.d.ts"
|
| 20 |
+
]
|
| 21 |
+
}
|