edge-city
git clone https://git.pyrossh.dev/edge-city
edge-city is a next level meta-framework for react that runs only on edge runtimes
example/package.json
| e284d5b | 1 | { |
| c35b08d | 2 | "name": "edge-city-example", |
| e284d5b | 3 | "type": "module", |
| e284d5b | 4 | "scripts": { |
| e6b4ebe | 5 | "lint": "eslint ./src", |
| e6b4ebe | 6 | "fmt": "prettier ./src --write", |
| 4d1436e | 7 | "dev": "edge-city dev -p cloudflare", |
| 164eba9 | 8 | "dev:wrangler": "cd build && wrangler pages dev static", |
| 164eba9 | 9 | "deploy:wrangler": "cd build && wrangler pages deploy static", |
| 072de50 | 10 | "build": " edge-city build -p cloudflare", |
| c7f7584 | 11 | "build-2": "vite build", |
| 7bd8479 | 12 | "generate": "drizzle-kit generate:pg --out migrations --schema migrations/schema.js", |
| 7bd8479 | 13 | "migrate": "node scripts/migrate.js", |
| 4d1436e | 14 | "test": "jest", |
| e284d5b | 15 | "test-e2e": "playwright test" |
| e284d5b | 16 | }, |
| e284d5b | 17 | "dependencies": { |
| 54eb6f5 | 18 | "@neondatabase/serverless": "0.4.5", |
| e284d5b | 19 | "drizzle-orm": "0.26.0", |
| c35b08d | 20 | "edge-city": "workspace:*", |
| e284d5b | 21 | "react": "18.2.0", |
| e284d5b | 22 | "react-aria-components": "1.0.0-alpha.3", |
| e284d5b | 23 | "react-dom": "18.2.0", |
| e284d5b | 24 | "react-error-boundary": "4.0.4", |
| e284d5b | 25 | "react-helmet-async": "1.3.0", |
| e284d5b | 26 | "react-hook-form": "7.43.9", |
| e284d5b | 27 | "sql-highlight": "^4.3.2", |
| 2075bb6 | 28 | "zod": "^3.21.4" |
| e284d5b | 29 | }, |
| e284d5b | 30 | "devDependencies": { |
| e284d5b | 31 | "@playwright/test": "^1.31.2", |
| 6b0984a | 32 | "drizzle-kit": "0.18.0", |
| e284d5b | 33 | "eslint": "^8.35.0", |
| 6b0984a | 34 | "eslint-config-react-app": "^7.0.1", |
| 6b0984a | 35 | "postgres": "3.3.4", |
| e6b4ebe | 36 | "prettier": "^2.8.8", |
| c7f7584 | 37 | "wrangler": "3.0.1", |
| c7f7584 | 38 | "vite": "4.3.9", |
| c7f7584 | 39 | "vite-plugin-pages": "0.30.1", |
| c7f7584 | 40 | "@vitejs/plugin-react": "4.0.0" |
| e284d5b | 41 | }, |
| e284d5b | 42 | "prettier": { |
| e6b4ebe | 43 | "printWidth": 100, |
| e6b4ebe | 44 | "singleQuote": false, |
| e6b4ebe | 45 | "jsxSingleQuote": false, |
| e6b4ebe | 46 | "bracketSameLine": false, |
| e6b4ebe | 47 | "trailingComma": "all" |
| e284d5b | 48 | }, |
| e284d5b | 49 | "eslintConfig": { |
| e284d5b | 50 | "parserOptions": { |
| e284d5b | 51 | "ecmaVersion": "latest", |
| e284d5b | 52 | "sourceType": "module" |
| e284d5b | 53 | }, |
| e284d5b | 54 | "extends": [ |
| e284d5b | 55 | "eslint:recommended", |
| e284d5b | 56 | "react-app" |
| e284d5b | 57 | ], |
| e284d5b | 58 | "rules": { |
| e284d5b | 59 | "react/prop-types": "warn", |
| e284d5b | 60 | "react/react-in-jsx-scope": "off", |
| e284d5b | 61 | "no-unused-vars": "warn" |
| e6b4ebe | 62 | }, |
| e6b4ebe | 63 | "globals": { |
| e6b4ebe | 64 | "globalThis": false, |
| e6b4ebe | 65 | "db": false |
| e284d5b | 66 | } |
| e284d5b | 67 | } |
| e284d5b | 68 | } |