From c552dabbdd87e5a2f5709b7a7993df611066814c Mon Sep 17 00:00:00 2001 From: imbytecat Date: Mon, 30 Mar 2026 19:59:31 +0800 Subject: [PATCH] Initial commit --- .gitignore | 157 ++ .vscode/extensions.json | 9 + .vscode/settings.json | 50 + AGENTS.md | 219 +++ apps/desktop/.gitignore | 3 + apps/desktop/AGENTS.md | 95 + apps/desktop/biome.json | 9 + apps/desktop/build/icon.png | Bin 0 -> 85145 bytes apps/desktop/electron-builder.yml | 48 + apps/desktop/electron.vite.config.ts | 11 + apps/desktop/package.json | 37 + apps/desktop/resources/.gitkeep | 0 apps/desktop/src/main/index.ts | 198 ++ apps/desktop/src/main/sidecar.ts | 256 +++ apps/desktop/src/preload/index.ts | 1 + apps/desktop/src/renderer/assets/logo.png | Bin 0 -> 85145 bytes .../src/renderer/components/SplashApp.tsx | 33 + apps/desktop/src/renderer/index.html | 12 + apps/desktop/src/renderer/main.tsx | 11 + apps/desktop/src/renderer/styles.css | 1 + apps/desktop/tsconfig.app.json | 8 + apps/desktop/tsconfig.json | 11 + apps/desktop/tsconfig.node.json | 8 + apps/desktop/turbo.json | 41 + apps/server/.env.example | 1 + apps/server/AGENTS.md | 279 +++ apps/server/biome.json | 12 + apps/server/compile.ts | 64 + apps/server/drizzle.config.ts | 11 + apps/server/package.json | 59 + apps/server/public/robots.txt | 3 + apps/server/src/client/orpc.ts | 53 + apps/server/src/components/Error.tsx | 3 + apps/server/src/components/NotFound.tsx | 3 + apps/server/src/env.ts | 14 + apps/server/src/routeTree.gen.ts | 122 ++ apps/server/src/router.tsx | 33 + apps/server/src/routes/__root.tsx | 70 + apps/server/src/routes/api/$.ts | 44 + apps/server/src/routes/api/health.ts | 27 + apps/server/src/routes/api/rpc.$.ts | 27 + apps/server/src/routes/index.tsx | 193 ++ apps/server/src/server/api/context.ts | 25 + apps/server/src/server/api/contracts/index.ts | 7 + .../src/server/api/contracts/todo.contract.ts | 32 + apps/server/src/server/api/interceptors.ts | 26 + .../server/api/middlewares/db.middleware.ts | 11 + .../src/server/api/middlewares/index.ts | 1 + apps/server/src/server/api/routers/index.ts | 6 + .../src/server/api/routers/todo.router.ts | 40 + apps/server/src/server/api/server.ts | 5 + apps/server/src/server/api/types.ts | 6 + apps/server/src/server/db/fields.ts | 55 + apps/server/src/server/db/index.ts | 24 + apps/server/src/server/db/relations.ts | 4 + apps/server/src/server/db/schema/index.ts | 1 + apps/server/src/server/db/schema/todo.ts | 8 + apps/server/src/styles.css | 1 + apps/server/tsconfig.json | 8 + apps/server/turbo.json | 47 + apps/server/vite.config.ts | 31 + biome.json | 44 + bun.lock | 1688 +++++++++++++++++ bunfig.toml | 2 + mise.toml | 3 + opencode.jsonc | 13 + package.json | 69 + packages/tsconfig/base.json | 28 + packages/tsconfig/bun.json | 8 + packages/tsconfig/package.json | 11 + packages/tsconfig/react.json | 9 + turbo.json | 22 + 72 files changed, 4471 insertions(+) create mode 100644 .gitignore create mode 100644 .vscode/extensions.json create mode 100644 .vscode/settings.json create mode 100644 AGENTS.md create mode 100644 apps/desktop/.gitignore create mode 100644 apps/desktop/AGENTS.md create mode 100644 apps/desktop/biome.json create mode 100644 apps/desktop/build/icon.png create mode 100644 apps/desktop/electron-builder.yml create mode 100644 apps/desktop/electron.vite.config.ts create mode 100644 apps/desktop/package.json create mode 100644 apps/desktop/resources/.gitkeep create mode 100644 apps/desktop/src/main/index.ts create mode 100644 apps/desktop/src/main/sidecar.ts create mode 100644 apps/desktop/src/preload/index.ts create mode 100644 apps/desktop/src/renderer/assets/logo.png create mode 100644 apps/desktop/src/renderer/components/SplashApp.tsx create mode 100644 apps/desktop/src/renderer/index.html create mode 100644 apps/desktop/src/renderer/main.tsx create mode 100644 apps/desktop/src/renderer/styles.css create mode 100644 apps/desktop/tsconfig.app.json create mode 100644 apps/desktop/tsconfig.json create mode 100644 apps/desktop/tsconfig.node.json create mode 100644 apps/desktop/turbo.json create mode 100644 apps/server/.env.example create mode 100644 apps/server/AGENTS.md create mode 100644 apps/server/biome.json create mode 100644 apps/server/compile.ts create mode 100644 apps/server/drizzle.config.ts create mode 100644 apps/server/package.json create mode 100644 apps/server/public/robots.txt create mode 100644 apps/server/src/client/orpc.ts create mode 100644 apps/server/src/components/Error.tsx create mode 100644 apps/server/src/components/NotFound.tsx create mode 100644 apps/server/src/env.ts create mode 100644 apps/server/src/routeTree.gen.ts create mode 100644 apps/server/src/router.tsx create mode 100644 apps/server/src/routes/__root.tsx create mode 100644 apps/server/src/routes/api/$.ts create mode 100644 apps/server/src/routes/api/health.ts create mode 100644 apps/server/src/routes/api/rpc.$.ts create mode 100644 apps/server/src/routes/index.tsx create mode 100644 apps/server/src/server/api/context.ts create mode 100644 apps/server/src/server/api/contracts/index.ts create mode 100644 apps/server/src/server/api/contracts/todo.contract.ts create mode 100644 apps/server/src/server/api/interceptors.ts create mode 100644 apps/server/src/server/api/middlewares/db.middleware.ts create mode 100644 apps/server/src/server/api/middlewares/index.ts create mode 100644 apps/server/src/server/api/routers/index.ts create mode 100644 apps/server/src/server/api/routers/todo.router.ts create mode 100644 apps/server/src/server/api/server.ts create mode 100644 apps/server/src/server/api/types.ts create mode 100644 apps/server/src/server/db/fields.ts create mode 100644 apps/server/src/server/db/index.ts create mode 100644 apps/server/src/server/db/relations.ts create mode 100644 apps/server/src/server/db/schema/index.ts create mode 100644 apps/server/src/server/db/schema/todo.ts create mode 100644 apps/server/src/styles.css create mode 100644 apps/server/tsconfig.json create mode 100644 apps/server/turbo.json create mode 100644 apps/server/vite.config.ts create mode 100644 biome.json create mode 100644 bun.lock create mode 100644 bunfig.toml create mode 100644 mise.toml create mode 100644 opencode.jsonc create mode 100644 package.json create mode 100644 packages/tsconfig/base.json create mode 100644 packages/tsconfig/bun.json create mode 100644 packages/tsconfig/package.json create mode 100644 packages/tsconfig/react.json create mode 100644 turbo.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ce51d38 --- /dev/null +++ b/.gitignore @@ -0,0 +1,157 @@ +### Custom ### + +# TanStack +.tanstack/ + +# Nitro +.output/ + +# Bun build +*.bun-build + +# Turborepo +.turbo/ + +### Node ### + +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) +web_modules/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional stylelint cache +.stylelintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variable files +.env +.env.* +!.env.example + +# parcel-bundler cache (https://parceljs.org/) +.cache +.parcel-cache + +# Next.js build output +.next +out + +# Nuxt.js build / generate output +.nuxt +dist +.output + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and not Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# vuepress v2.x temp and cache directory +.temp +.cache + +# Sveltekit cache directory +.svelte-kit/ + +# vitepress build output +**/.vitepress/dist + +# vitepress cache directory +**/.vitepress/cache + +# Docusaurus cache and generated files +.docusaurus + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# Firebase cache directory +.firebase/ + +# TernJS port file +.tern-port + +# Stores VSCode versions used for testing VSCode extensions +.vscode-test + +# yarn v3 +.pnp.* +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/sdks +!.yarn/versions + +# Vite files +vite.config.js.timestamp-* +vite.config.ts.timestamp-* +.vite/ diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..981bd3b --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,9 @@ +{ + "recommendations": [ + "biomejs.biome", + "hverlin.mise-vscode", + "oven.bun-vscode", + "redhat.vscode-yaml", + "tamasfe.even-better-toml" + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..d3b6034 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,50 @@ +{ + "[javascript]": { + "editor.defaultFormatter": "biomejs.biome" + }, + "[javascriptreact]": { + "editor.defaultFormatter": "biomejs.biome" + }, + "[json]": { + "editor.defaultFormatter": "biomejs.biome" + }, + "[jsonc]": { + "editor.defaultFormatter": "biomejs.biome" + }, + "[toml]": { + "editor.defaultFormatter": "tamasfe.even-better-toml" + }, + "[typescript]": { + "editor.defaultFormatter": "biomejs.biome" + }, + "[typescriptreact]": { + "editor.defaultFormatter": "biomejs.biome" + }, + "[yaml]": { + "editor.defaultFormatter": "redhat.vscode-yaml" + }, + "editor.codeActionsOnSave": { + "source.fixAll.biome": "explicit", + "source.organizeImports.biome": "explicit" + }, + "editor.defaultFormatter": "biomejs.biome", + "editor.formatOnSave": true, + "files.associations": { + ".env": "dotenv", + ".env.*": "dotenv", + "**/biome.json": "jsonc", + "**/opencode.json": "jsonc", + "**/tsconfig.*.json": "jsonc", + "**/tsconfig.json": "jsonc" + }, + "files.readonlyInclude": { + "**/routeTree.gen.ts": true + }, + "files.watcherExclude": { + "**/routeTree.gen.ts": true + }, + "js/ts.tsdk.path": "node_modules/typescript/lib", + "search.exclude": { + "**/routeTree.gen.ts": true + } +} diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..f76aafc --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,219 @@ +# AGENTS.md - AI Coding Agent Guidelines + +Guidelines for AI agents working in this Bun monorepo. + +## Project Overview + +> **This project uses [Bun](https://bun.sh) exclusively as both the JavaScript runtime and package manager. Do NOT use Node.js / npm / yarn / pnpm. All commands start with `bun` — use `bun install` for dependencies and `bun run + + diff --git a/apps/desktop/src/renderer/main.tsx b/apps/desktop/src/renderer/main.tsx new file mode 100644 index 0000000..606e6be --- /dev/null +++ b/apps/desktop/src/renderer/main.tsx @@ -0,0 +1,11 @@ +import { StrictMode } from 'react' +import { createRoot } from 'react-dom/client' +import { SplashApp } from './components/SplashApp' +import './styles.css' + +// biome-ignore lint/style/noNonNullAssertion: 一定存在 +createRoot(document.getElementById('root')!).render( + + + , +) diff --git a/apps/desktop/src/renderer/styles.css b/apps/desktop/src/renderer/styles.css new file mode 100644 index 0000000..f1d8c73 --- /dev/null +++ b/apps/desktop/src/renderer/styles.css @@ -0,0 +1 @@ +@import "tailwindcss"; diff --git a/apps/desktop/tsconfig.app.json b/apps/desktop/tsconfig.app.json new file mode 100644 index 0000000..a0f1193 --- /dev/null +++ b/apps/desktop/tsconfig.app.json @@ -0,0 +1,8 @@ +{ + "extends": "@furtherverse/tsconfig/react.json", + "compilerOptions": { + "composite": true, + "types": ["vite/client"] + }, + "include": ["src/renderer/**/*"] +} diff --git a/apps/desktop/tsconfig.json b/apps/desktop/tsconfig.json new file mode 100644 index 0000000..ea9d0cd --- /dev/null +++ b/apps/desktop/tsconfig.json @@ -0,0 +1,11 @@ +{ + "files": [], + "references": [ + { + "path": "./tsconfig.app.json" + }, + { + "path": "./tsconfig.node.json" + } + ] +} diff --git a/apps/desktop/tsconfig.node.json b/apps/desktop/tsconfig.node.json new file mode 100644 index 0000000..9757384 --- /dev/null +++ b/apps/desktop/tsconfig.node.json @@ -0,0 +1,8 @@ +{ + "extends": "@furtherverse/tsconfig/base.json", + "compilerOptions": { + "composite": true, + "types": ["node"] + }, + "include": ["src/main/**/*", "src/preload/**/*", "electron.vite.config.ts"] +} diff --git a/apps/desktop/turbo.json b/apps/desktop/turbo.json new file mode 100644 index 0000000..caaa62b --- /dev/null +++ b/apps/desktop/turbo.json @@ -0,0 +1,41 @@ +{ + "$schema": "../../node_modules/turbo/schema.json", + "extends": ["//"], + "tasks": { + "build": { + "outputs": ["out/**"] + }, + "dist": { + "dependsOn": ["build", "@furtherverse/server#compile"], + "outputs": ["dist/**"] + }, + "dist:linux": { + "dependsOn": ["build", "@furtherverse/server#compile:linux:arm64", "@furtherverse/server#compile:linux:x64"], + "outputs": ["dist/**"] + }, + "dist:linux:arm64": { + "dependsOn": ["build", "@furtherverse/server#compile:linux:arm64"], + "outputs": ["dist/**"] + }, + "dist:linux:x64": { + "dependsOn": ["build", "@furtherverse/server#compile:linux:x64"], + "outputs": ["dist/**"] + }, + "dist:mac": { + "dependsOn": ["build", "@furtherverse/server#compile:darwin:arm64", "@furtherverse/server#compile:darwin:x64"], + "outputs": ["dist/**"] + }, + "dist:mac:arm64": { + "dependsOn": ["build", "@furtherverse/server#compile:darwin:arm64"], + "outputs": ["dist/**"] + }, + "dist:mac:x64": { + "dependsOn": ["build", "@furtherverse/server#compile:darwin:x64"], + "outputs": ["dist/**"] + }, + "dist:win": { + "dependsOn": ["build", "@furtherverse/server#compile:windows:x64"], + "outputs": ["dist/**"] + } + } +} diff --git a/apps/server/.env.example b/apps/server/.env.example new file mode 100644 index 0000000..5f05b75 --- /dev/null +++ b/apps/server/.env.example @@ -0,0 +1 @@ +DATABASE_URL=postgres://postgres:postgres@localhost:5432/postgres diff --git a/apps/server/AGENTS.md b/apps/server/AGENTS.md new file mode 100644 index 0000000..1af6b86 --- /dev/null +++ b/apps/server/AGENTS.md @@ -0,0 +1,279 @@ +# AGENTS.md - Server App Guidelines + +TanStack Start fullstack web app with ORPC (contract-first RPC). + +## Tech Stack + +> **⚠️ This project uses Bun — NOT Node.js / npm. All commands use `bun`. Always use `bun run