mono repo

This commit is contained in:
EthanShoeDev
2025-09-09 22:27:48 -04:00
parent 638cfc49cb
commit 38e16a9536
80 changed files with 3630 additions and 5328 deletions

56
.gitignore vendored
View File

@@ -1,39 +1,39 @@
# Learn more https://docs.github.com/en/get-started/getting-started-with-git/ignoring-files
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# dependencies
node_modules/
# Dependencies
node_modules
.pnp
.pnp.js
# Expo
.expo/
dist/
web-build/
expo-env.d.ts
# Testing
coverage
# Native
.kotlin/
*.orig.*
*.jks
*.p8
*.p12
*.key
*.mobileprovision
# Turbo
.turbo
# Metro
.metro-health-check*
# Vercel
.vercel
# debug
npm-debug.*
yarn-debug.*
yarn-error.*
# Build Outputs
.next/
out/
dist
# macOS
# Debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Misc
.DS_Store
*.pem
# local env files
.env*.local
tmp/
**/tsconfig.tsbuildinfo
# typescript
*.tsbuildinfo
dep-log.json
app-example
mnt/*
*.log
.turbo/

16
.jscpd.json Normal file
View File

@@ -0,0 +1,16 @@
{
"pattern": "**/*",
"ignore": [
"**/.expo/**",
"**/.turbo/**",
"**/mnt/**",
"**/dist/**",
"**/node_modules/**",
"**/android/**"
],
"threshold": 0,
"minTokens": 50,
"minLines": 33,
"maxLines": 1000,
"maxSize": "100kb"
}

View File

@@ -1,2 +1,4 @@
android/
docs/
apps/
packages/
pnpm-lock.yaml
mnt/

16
.syncpackrc Normal file
View File

@@ -0,0 +1,16 @@
{
"versionGroups": [
{
"label": "Use workspace protocol when developing local packages",
"dependencies": [
"$LOCAL"
],
"dependencyTypes": [
"dev",
"prod",
"peer"
],
"pinVersion": "workspace:*"
}
]
}

39
apps/mobile/.gitignore vendored Normal file
View File

@@ -0,0 +1,39 @@
# Learn more https://docs.github.com/en/get-started/getting-started-with-git/ignoring-files
# dependencies
node_modules/
# Expo
.expo/
dist/
web-build/
expo-env.d.ts
# Native
.kotlin/
*.orig.*
*.jks
*.p8
*.p12
*.key
*.mobileprovision
# Metro
.metro-health-check*
# debug
npm-debug.*
yarn-debug.*
yarn-error.*
# macOS
.DS_Store
*.pem
# local env files
.env*.local
# typescript
*.tsbuildinfo
app-example

View File

@@ -0,0 +1,2 @@
android/
docs/

View File

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

View File

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 46 KiB

View File

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

Before

Width:  |  Height:  |  Size: 7.8 KiB

After

Width:  |  Height:  |  Size: 7.8 KiB

View File

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

View File

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

View File

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

View File

Before

Width:  |  Height:  |  Size: 7.2 KiB

After

Width:  |  Height:  |  Size: 7.2 KiB

View File

Before

Width:  |  Height:  |  Size: 8.9 KiB

After

Width:  |  Height:  |  Size: 8.9 KiB

View File

Before

Width:  |  Height:  |  Size: 9.9 KiB

After

Width:  |  Height:  |  Size: 9.9 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -38,7 +38,9 @@
"backgroundColor": "#ffffff"
}
],
"expo-secure-store"
"expo-secure-store",
"expo-font",
"expo-web-browser"
],
"experiments": {
"typedRoutes": true,

View File

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

View File

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 6.2 KiB

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View File

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

66
apps/mobile/package.json Normal file
View File

@@ -0,0 +1,66 @@
{
"name": "@fressh/mobile",
"main": "expo-router/entry",
"version": "1.0.0",
"type": "module",
"scripts": {
"start": "expo start",
"android": "expo run:android",
"ios": "expo run:ios",
"web": "expo start --web",
"prebuild": "expo prebuild",
"prebuild:clean": "expo prebuild --clean",
"expo:dep:check": "expo install --fix",
"expo:doctor": "pnpm dlx expo-doctor",
"fmt": "cross-env SORT_IMPORTS=true prettier --write .",
"fmt:check": "cross-env SORT_IMPORTS=true prettier --check .",
"typecheck": "tsc",
"eslint:check": "expo lint --max-warnings 0 .",
"lint:fix": "expo lint --fix --max-warnings 0 .",
"lint": "expo lint"
},
"dependencies": {
"@dylankenneally/react-native-ssh-sftp": "^1.5.20",
"@expo/vector-icons": "^15.0.2",
"@react-native-picker/picker": "2.11.2",
"@react-navigation/bottom-tabs": "^7.4.0",
"@react-navigation/elements": "^2.6.4",
"@react-navigation/native": "^7.1.8",
"@tanstack/react-form": "^1.19.5",
"@tanstack/react-query": "^5.87.1",
"expo": "54.0.0-preview.16",
"expo-constants": "~18.0.7",
"expo-font": "~14.0.7",
"expo-haptics": "~15.0.6",
"expo-image": "~3.0.7",
"expo-linking": "~8.0.7",
"expo-router": "6.0.0-preview.16",
"expo-secure-store": "~15.0.6",
"expo-splash-screen": "~31.0.8",
"expo-status-bar": "~3.0.7",
"expo-symbols": "~1.0.6",
"expo-web-browser": "~15.0.6",
"react": "19.1.1",
"react-dom": "19.1.1",
"react-native": "0.81.1",
"react-native-gesture-handler": "~2.28.0",
"react-native-reanimated": "~4.1.0",
"react-native-safe-area-context": "~5.6.1",
"react-native-screens": "~4.16.0",
"react-native-uuid": "^2.0.3",
"react-native-web": "~0.21.1",
"react-native-worklets": "~0.5.1",
"zod": "^4.1.5"
},
"devDependencies": {
"@epic-web/config": "^1.21.3",
"@types/react": "~19.1.12",
"eslint": "^9.35.0",
"eslint-config-expo": "~10.0.0",
"jiti": "^2.5.1",
"npm-run-all": "^4.1.5",
"prettier": "^3.6.2",
"tsx": "^4.20.5",
"typescript": "~5.9.2"
}
}

View File

@@ -1,14 +1,14 @@
import defaultConfig from '@epic-web/config/prettier';
import epicConfig from '@epic-web/config/prettier';
// Sometimes this plugin can remove imports that are being edited.
// As a workaround we will only use this in the cli. (pnpm run fmt)
// const sortImports = process.env.SORT_IMPORTS === "true";
/** @type {import("prettier").Options} */
export default {
...defaultConfig,
...epicConfig,
semi: true,
plugins: [
// ...(sortImports ? ["prettier-plugin-organize-imports"] : []),
...(defaultConfig.plugins || []),
...(epicConfig.plugins || []),
],
};

7
apps/mobile/turbo.json Normal file
View File

@@ -0,0 +1,7 @@
{
"extends": ["//"],
"tasks": {
"lint": {},
"lint:check": {}
}
}

5
knip.ts Normal file
View File

@@ -0,0 +1,5 @@
import type { KnipConfig } from 'knip';
const config: KnipConfig = {};
export default config;

View File

@@ -1,62 +1,33 @@
{
"name": "fressh",
"main": "expo-router/entry",
"version": "1.0.0",
"version": "workspace:*",
"packageManager": "pnpm@10.15.1",
"type": "module",
"scripts": {
"start": "expo start",
"reset-project": "node ./scripts/reset-project.js",
"android": "expo run:android",
"ios": "expo run:ios",
"web": "expo start --web",
"lint": "expo lint",
"fmt": "SORT_IMPORTS=true prettier . --write",
"typecheck": "tsc",
"validate": "run-p -l fmt lint typecheck",
"update:all": "pnpm dlx npm-check-updates --interactive --format group"
"engines": {
"node": ">=22"
},
"dependencies": {
"@dylankenneally/react-native-ssh-sftp": "^1.5.20",
"@expo/vector-icons": "^15.0.2",
"@react-native-picker/picker": "2.11.1",
"@react-navigation/bottom-tabs": "^7.4.0",
"@react-navigation/elements": "^2.6.3",
"@react-navigation/native": "^7.1.8",
"@tanstack/react-form": "^1.19.3",
"@tanstack/react-query": "^5.87.1",
"expo": "~54.0.0-preview.12",
"expo-constants": "~18.0.6",
"expo-font": "~14.0.6",
"expo-haptics": "~15.0.5",
"expo-image": "~3.0.5",
"expo-linking": "~8.0.6",
"expo-router": "~6.0.0-preview.12",
"expo-secure-store": "~15.0.6",
"expo-splash-screen": "~31.0.7",
"expo-status-bar": "~3.0.6",
"expo-symbols": "~1.0.5",
"expo-web-browser": "~15.0.5",
"react": "19.1.0",
"react-dom": "19.1.0",
"react-native": "0.81.1",
"react-native-gesture-handler": "~2.28.0",
"react-native-reanimated": "~4.0.2",
"react-native-safe-area-context": "~5.6.0",
"react-native-screens": "~4.15.4",
"react-native-uuid": "^2.0.3",
"react-native-web": "~0.21.0",
"react-native-worklets": "~0.4.2",
"zod": "^4.1.5"
"scripts": {
"test": "turbo test",
"lint:all": "turbo lint",
"lint:check:all": "turbo lint:check",
"lint:root": "pnpm run fmt:root && syncpack list-mismatches || (syncpack fix-mismatches && pnpm i)",
"lint:check:root": "syncpack list-mismatches",
"fmt:root": "prettier --cache --write .",
"fmt:check:root": "prettier --check .",
"update:all": "syncpack update",
"update:all:alt": "pnpm dlx npm-check-updates --interactive --format group -ws --root",
"knip:check": "knip",
"knip:fix:danger": "knip --fix",
"jscpd:check": "cross-env NODE_OPTIONS=--max-old-space-size=8192 jscpd --config .jscpd.json"
},
"devDependencies": {
"knip": "^5.63.1",
"cross-env": "^10.0.0",
"@epic-web/config": "^1.21.3",
"@types/react": "~19.1.0",
"eslint": "^9.25.0",
"eslint-config-expo": "~10.0.0",
"jiti": "^2.5.1",
"npm-run-all": "^4.1.5",
"prettier": "^3.6.2",
"tsx": "^4.20.5",
"jscpd": "^4.0.5",
"syncpack": "^13.0.4",
"turbo": "^2.5.6",
"typescript": "~5.9.2"
}
}

8600
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,4 @@
nodeLinker: hoisted
onlyBuiltDependencies:
- esbuild
- unrs-resolver
packages:
- apps/*

11
prettier.config.js Normal file
View File

@@ -0,0 +1,11 @@
import epicConfig from '@epic-web/config/prettier';
/** @type {import("prettier").Options} */
export default {
...epicConfig,
semi: true,
plugins: [
// ...(sortImports ? ["prettier-plugin-organize-imports"] : []),
...(epicConfig.plugins || []),
],
};

46
turbo.json Normal file
View File

@@ -0,0 +1,46 @@
{
"$schema": "https://turbo.build/schema.json",
"ui": "tui",
"globalPassThroughEnv": ["NODE_OPTIONS"],
"globalEnv": ["CI"],
"tasks": {
"fmt": {},
"fmt:check": {},
"eslint:check": {
"dependsOn": ["^build"]
},
"lint:fix": {
"dependsOn": ["^build", "fmt"]
},
"typecheck": {
"dependsOn": ["^build"]
},
"build": {
"dependsOn": ["^build"]
},
"lint:check": {
"with": ["fmt:check"],
"dependsOn": ["eslint:check", "typecheck", "//#lint:check:root"]
},
"lint": {
"dependsOn": ["lint:fix", "typecheck", "//#lint:root"]
},
"test": {
"dependsOn": ["^build"]
},
"dev": {
"cache": false,
"persistent": true,
"dependsOn": ["^build"]
},
"//#lint:check": {
"dependsOn": ["//#lint:check:root", "//#jscpd:check"]
},
"//#lint": {
"dependsOn": ["//#lint:root", "//#jscpd:check"]
},
"//#lint:root": {},
"//#lint:check:root": {},
"//#jscpd:check": {}
}
}