Complete monorepo toolchain setup (tasks 1.1-1.7)
- Turborepo + pnpm workspaces with catalog for shared dependency versions - TypeScript strict config (base + per-package extends) - Tailwind CSS v4 via @tailwindcss/vite plugin - ESLint + Prettier shared config - Planner app scaffolded with React Router 7 (port 3001) - Journal app scaffolded with React Router 7 (port 3000) - Both apps build and start successfully via turbo Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
48547fdc82
commit
30d40de7cf
28 changed files with 4096 additions and 13 deletions
27
apps/journal/app/root.tsx
Normal file
27
apps/journal/app/root.tsx
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
import { Links, Meta, Outlet, Scripts, ScrollRestoration } from "react-router";
|
||||
import type { LinksFunction } from "react-router";
|
||||
import stylesheet from "@trails-cool/ui/styles.css?url";
|
||||
|
||||
export const links: LinksFunction = () => [{ rel: "stylesheet", href: stylesheet }];
|
||||
|
||||
export function Layout({ children }: { children: React.ReactNode }) {
|
||||
return (
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charSet="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<Meta />
|
||||
<Links />
|
||||
</head>
|
||||
<body className="min-h-screen bg-gray-50">
|
||||
{children}
|
||||
<ScrollRestoration />
|
||||
<Scripts />
|
||||
</body>
|
||||
</html>
|
||||
);
|
||||
}
|
||||
|
||||
export default function App() {
|
||||
return <Outlet />;
|
||||
}
|
||||
3
apps/journal/app/routes.ts
Normal file
3
apps/journal/app/routes.ts
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
import { type RouteConfig, index } from "@react-router/dev/routes";
|
||||
|
||||
export default [index("routes/home.tsx")] satisfies RouteConfig;
|
||||
17
apps/journal/app/routes/home.tsx
Normal file
17
apps/journal/app/routes/home.tsx
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
import type { Route } from "./+types/home";
|
||||
|
||||
export function meta({}: Route.MetaArgs) {
|
||||
return [
|
||||
{ title: "trails.cool" },
|
||||
{ name: "description", content: "Your outdoor activity journal" },
|
||||
];
|
||||
}
|
||||
|
||||
export default function Home() {
|
||||
return (
|
||||
<div className="mx-auto max-w-4xl px-4 py-16">
|
||||
<h1 className="text-4xl font-bold text-gray-900">trails.cool</h1>
|
||||
<p className="mt-4 text-lg text-gray-600">Your outdoor activity journal</p>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
|
@ -4,14 +4,31 @@
|
|||
"version": "0.0.1",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "echo 'TODO: setup journal dev'",
|
||||
"build": "echo 'TODO: setup journal build'"
|
||||
"dev": "react-router dev",
|
||||
"build": "react-router build",
|
||||
"start": "react-router-serve ./build/server/index.js",
|
||||
"typecheck": "react-router typegen && tsc"
|
||||
},
|
||||
"dependencies": {
|
||||
"@trails-cool/ui": "workspace:*",
|
||||
"@trails-cool/types": "workspace:*",
|
||||
"@trails-cool/map": "workspace:*",
|
||||
"@trails-cool/gpx": "workspace:*",
|
||||
"@trails-cool/i18n": "workspace:*"
|
||||
"@trails-cool/i18n": "workspace:*",
|
||||
"react": "catalog:",
|
||||
"react-dom": "catalog:",
|
||||
"react-router": "catalog:",
|
||||
"@react-router/node": "catalog:",
|
||||
"@react-router/serve": "catalog:",
|
||||
"isbot": "^5.1.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@react-router/dev": "catalog:",
|
||||
"@tailwindcss/vite": "catalog:",
|
||||
"@types/react": "catalog:",
|
||||
"@types/react-dom": "catalog:",
|
||||
"tailwindcss": "catalog:",
|
||||
"typescript": "catalog:",
|
||||
"vite": "catalog:"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
5
apps/journal/react-router.config.ts
Normal file
5
apps/journal/react-router.config.ts
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
import type { Config } from "@react-router/dev/config";
|
||||
|
||||
export default {
|
||||
ssr: true,
|
||||
} satisfies Config;
|
||||
13
apps/journal/tsconfig.json
Normal file
13
apps/journal/tsconfig.json
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"extends": "../../tsconfig.base.json",
|
||||
"include": [
|
||||
"**/*.ts",
|
||||
"**/*.tsx",
|
||||
".react-router/types/**/*"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"rootDirs": [".", "./.react-router/types"],
|
||||
"outDir": "build",
|
||||
"types": ["vite/client"]
|
||||
}
|
||||
}
|
||||
10
apps/journal/vite.config.ts
Normal file
10
apps/journal/vite.config.ts
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
import { reactRouter } from "@react-router/dev/vite";
|
||||
import tailwindcss from "@tailwindcss/vite";
|
||||
import { defineConfig } from "vite";
|
||||
|
||||
export default defineConfig({
|
||||
plugins: [tailwindcss(), reactRouter()],
|
||||
server: {
|
||||
port: 3000,
|
||||
},
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue