deploy
This commit is contained in:
@@ -65,6 +65,7 @@
|
||||
},
|
||||
"runtime": {
|
||||
"lifecycle": "ephemeral",
|
||||
"availability": "on_demand",
|
||||
"state": "none",
|
||||
"sandbox": "microsandbox",
|
||||
"resources": {
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
Wk-jrwnV3DPU6_gWZ0ZM0
|
||||
@@ -1,26 +0,0 @@
|
||||
{
|
||||
"pages": {
|
||||
"/_not-found/page": [
|
||||
"static/chunks/webpack-4a462cecab786e93.js",
|
||||
"static/chunks/4bd1b696-c023c6e3521b1417.js",
|
||||
"static/chunks/255-2aa030c9ba2867e3.js",
|
||||
"static/chunks/main-app-d59f6883d44390ab.js",
|
||||
"static/chunks/app/_not-found/page-d556e797eb4d461b.js"
|
||||
],
|
||||
"/layout": [
|
||||
"static/chunks/webpack-4a462cecab786e93.js",
|
||||
"static/chunks/4bd1b696-c023c6e3521b1417.js",
|
||||
"static/chunks/255-2aa030c9ba2867e3.js",
|
||||
"static/chunks/main-app-d59f6883d44390ab.js",
|
||||
"static/css/5d263d3abd9811a6.css",
|
||||
"static/chunks/app/layout-0ec9780b79cf85e4.js"
|
||||
],
|
||||
"/page": [
|
||||
"static/chunks/webpack-4a462cecab786e93.js",
|
||||
"static/chunks/4bd1b696-c023c6e3521b1417.js",
|
||||
"static/chunks/255-2aa030c9ba2867e3.js",
|
||||
"static/chunks/main-app-d59f6883d44390ab.js",
|
||||
"static/chunks/app/page-f47082ca351a8369.js"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{
|
||||
"/_not-found/page": "/_not-found",
|
||||
"/page": "/"
|
||||
}
|
||||
@@ -1,33 +0,0 @@
|
||||
{
|
||||
"polyfillFiles": [
|
||||
"static/chunks/polyfills-42372ed130431b0a.js"
|
||||
],
|
||||
"devFiles": [],
|
||||
"ampDevFiles": [],
|
||||
"lowPriorityFiles": [
|
||||
"static/Wk-jrwnV3DPU6_gWZ0ZM0/_buildManifest.js",
|
||||
"static/Wk-jrwnV3DPU6_gWZ0ZM0/_ssgManifest.js"
|
||||
],
|
||||
"rootMainFiles": [
|
||||
"static/chunks/webpack-4a462cecab786e93.js",
|
||||
"static/chunks/4bd1b696-c023c6e3521b1417.js",
|
||||
"static/chunks/255-2aa030c9ba2867e3.js",
|
||||
"static/chunks/main-app-d59f6883d44390ab.js"
|
||||
],
|
||||
"rootMainFilesTree": {},
|
||||
"pages": {
|
||||
"/_app": [
|
||||
"static/chunks/webpack-4a462cecab786e93.js",
|
||||
"static/chunks/framework-2c534e0e662575a2.js",
|
||||
"static/chunks/main-af3375a02f18db6d.js",
|
||||
"static/chunks/pages/_app-7d307437aca18ad4.js"
|
||||
],
|
||||
"/_error": [
|
||||
"static/chunks/webpack-4a462cecab786e93.js",
|
||||
"static/chunks/framework-2c534e0e662575a2.js",
|
||||
"static/chunks/main-af3375a02f18db6d.js",
|
||||
"static/chunks/pages/_error-cb2a52f75f2162e2.js"
|
||||
]
|
||||
},
|
||||
"ampFirstPages": []
|
||||
}
|
||||
1
frontend/.next/cache/.previewinfo
vendored
1
frontend/.next/cache/.previewinfo
vendored
@@ -1 +0,0 @@
|
||||
{"previewModeId":"0c467732f20933f6090153b1ded197e1","previewModeSigningKey":"2d922f3b4d9c7678f519235ab6a9ca106b40ae97cc038bb60068127a8cbaf0ab","previewModeEncryptionKey":"e5ded930403511e431143c6e8f3f90321c20c3f0605cc4d0eba549b9cc2fad6b","expireAt":1782423199326}
|
||||
1
frontend/.next/cache/.rscinfo
vendored
1
frontend/.next/cache/.rscinfo
vendored
@@ -1 +0,0 @@
|
||||
{"encryption.key":"2zMh+Q+skbyWQHWXtVoQqoOOEWrhrFwRdxSthkoR/h8=","encryption.expire_at":1782423199278}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"buildStage": "static-generation",
|
||||
"buildOptions": {
|
||||
"useBuildWorker": "true"
|
||||
}
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
{"name":"Next.js","version":"15.5.19"}
|
||||
@@ -1,5 +0,0 @@
|
||||
{
|
||||
"version": 1,
|
||||
"outDirectory": "/Users/robert/MicroCash/agents/robertseares/frontend/out",
|
||||
"success": true
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"version": 1,
|
||||
"hasExportPathMap": false,
|
||||
"exportTrailingSlash": true,
|
||||
"isNextImageImported": false
|
||||
}
|
||||
@@ -1,58 +0,0 @@
|
||||
{
|
||||
"version": 1,
|
||||
"images": {
|
||||
"deviceSizes": [
|
||||
640,
|
||||
750,
|
||||
828,
|
||||
1080,
|
||||
1200,
|
||||
1920,
|
||||
2048,
|
||||
3840
|
||||
],
|
||||
"imageSizes": [
|
||||
16,
|
||||
32,
|
||||
48,
|
||||
64,
|
||||
96,
|
||||
128,
|
||||
256,
|
||||
384
|
||||
],
|
||||
"path": "/_next/image/",
|
||||
"loader": "default",
|
||||
"loaderFile": "",
|
||||
"domains": [],
|
||||
"disableStaticImages": false,
|
||||
"minimumCacheTTL": 60,
|
||||
"formats": [
|
||||
"image/webp"
|
||||
],
|
||||
"maximumResponseBody": 50000000,
|
||||
"dangerouslyAllowSVG": false,
|
||||
"contentSecurityPolicy": "script-src 'none'; frame-src 'none'; sandbox;",
|
||||
"contentDispositionType": "attachment",
|
||||
"remotePatterns": [],
|
||||
"unoptimized": false,
|
||||
"sizes": [
|
||||
640,
|
||||
750,
|
||||
828,
|
||||
1080,
|
||||
1200,
|
||||
1920,
|
||||
2048,
|
||||
3840,
|
||||
16,
|
||||
32,
|
||||
48,
|
||||
64,
|
||||
96,
|
||||
128,
|
||||
256,
|
||||
384
|
||||
]
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
{"type": "commonjs"}
|
||||
@@ -1,61 +0,0 @@
|
||||
{
|
||||
"version": 4,
|
||||
"routes": {
|
||||
"/_not-found": {
|
||||
"initialStatus": 404,
|
||||
"experimentalBypassFor": [
|
||||
{
|
||||
"type": "header",
|
||||
"key": "next-action"
|
||||
},
|
||||
{
|
||||
"type": "header",
|
||||
"key": "content-type",
|
||||
"value": "multipart/form-data;.*"
|
||||
}
|
||||
],
|
||||
"initialRevalidateSeconds": false,
|
||||
"srcRoute": "/_not-found",
|
||||
"dataRoute": "/_not-found.rsc",
|
||||
"allowHeader": [
|
||||
"host",
|
||||
"x-matched-path",
|
||||
"x-prerender-revalidate",
|
||||
"x-prerender-revalidate-if-generated",
|
||||
"x-next-revalidated-tags",
|
||||
"x-next-revalidate-tag-token"
|
||||
]
|
||||
},
|
||||
"/": {
|
||||
"experimentalBypassFor": [
|
||||
{
|
||||
"type": "header",
|
||||
"key": "next-action"
|
||||
},
|
||||
{
|
||||
"type": "header",
|
||||
"key": "content-type",
|
||||
"value": "multipart/form-data;.*"
|
||||
}
|
||||
],
|
||||
"initialRevalidateSeconds": false,
|
||||
"srcRoute": "/",
|
||||
"dataRoute": "/index.rsc",
|
||||
"allowHeader": [
|
||||
"host",
|
||||
"x-matched-path",
|
||||
"x-prerender-revalidate",
|
||||
"x-prerender-revalidate-if-generated",
|
||||
"x-next-revalidated-tags",
|
||||
"x-next-revalidate-tag-token"
|
||||
]
|
||||
}
|
||||
},
|
||||
"dynamicRoutes": {},
|
||||
"notFoundRoutes": [],
|
||||
"preview": {
|
||||
"previewModeId": "0c467732f20933f6090153b1ded197e1",
|
||||
"previewModeSigningKey": "2d922f3b4d9c7678f519235ab6a9ca106b40ae97cc038bb60068127a8cbaf0ab",
|
||||
"previewModeEncryptionKey": "e5ded930403511e431143c6e8f3f90321c20c3f0605cc4d0eba549b9cc2fad6b"
|
||||
}
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
{}
|
||||
@@ -1,321 +0,0 @@
|
||||
{
|
||||
"version": 1,
|
||||
"config": {
|
||||
"env": {},
|
||||
"webpack": null,
|
||||
"eslint": {
|
||||
"ignoreDuringBuilds": false
|
||||
},
|
||||
"typescript": {
|
||||
"ignoreBuildErrors": false,
|
||||
"tsconfigPath": "tsconfig.json"
|
||||
},
|
||||
"typedRoutes": false,
|
||||
"distDir": ".next",
|
||||
"cleanDistDir": true,
|
||||
"assetPrefix": "",
|
||||
"cacheMaxMemorySize": 52428800,
|
||||
"configOrigin": "next.config.mjs",
|
||||
"useFileSystemPublicRoutes": true,
|
||||
"generateEtags": true,
|
||||
"pageExtensions": [
|
||||
"tsx",
|
||||
"ts",
|
||||
"jsx",
|
||||
"js"
|
||||
],
|
||||
"poweredByHeader": true,
|
||||
"compress": true,
|
||||
"images": {
|
||||
"deviceSizes": [
|
||||
640,
|
||||
750,
|
||||
828,
|
||||
1080,
|
||||
1200,
|
||||
1920,
|
||||
2048,
|
||||
3840
|
||||
],
|
||||
"imageSizes": [
|
||||
16,
|
||||
32,
|
||||
48,
|
||||
64,
|
||||
96,
|
||||
128,
|
||||
256,
|
||||
384
|
||||
],
|
||||
"path": "/_next/image/",
|
||||
"loader": "default",
|
||||
"loaderFile": "",
|
||||
"domains": [],
|
||||
"disableStaticImages": false,
|
||||
"minimumCacheTTL": 60,
|
||||
"formats": [
|
||||
"image/webp"
|
||||
],
|
||||
"maximumResponseBody": 50000000,
|
||||
"dangerouslyAllowSVG": false,
|
||||
"contentSecurityPolicy": "script-src 'none'; frame-src 'none'; sandbox;",
|
||||
"contentDispositionType": "attachment",
|
||||
"remotePatterns": [],
|
||||
"unoptimized": false
|
||||
},
|
||||
"devIndicators": {
|
||||
"position": "bottom-left"
|
||||
},
|
||||
"onDemandEntries": {
|
||||
"maxInactiveAge": 60000,
|
||||
"pagesBufferLength": 5
|
||||
},
|
||||
"amp": {
|
||||
"canonicalBase": ""
|
||||
},
|
||||
"basePath": "",
|
||||
"sassOptions": {},
|
||||
"trailingSlash": true,
|
||||
"i18n": null,
|
||||
"productionBrowserSourceMaps": false,
|
||||
"excludeDefaultMomentLocales": true,
|
||||
"serverRuntimeConfig": {},
|
||||
"publicRuntimeConfig": {},
|
||||
"reactProductionProfiling": false,
|
||||
"reactStrictMode": null,
|
||||
"reactMaxHeadersLength": 6000,
|
||||
"httpAgentOptions": {
|
||||
"keepAlive": true
|
||||
},
|
||||
"logging": {},
|
||||
"compiler": {},
|
||||
"expireTime": 31536000,
|
||||
"staticPageGenerationTimeout": 60,
|
||||
"output": "export",
|
||||
"modularizeImports": {
|
||||
"@mui/icons-material": {
|
||||
"transform": "@mui/icons-material/{{member}}"
|
||||
},
|
||||
"lodash": {
|
||||
"transform": "lodash/{{member}}"
|
||||
}
|
||||
},
|
||||
"outputFileTracingRoot": "/Users/robert",
|
||||
"experimental": {
|
||||
"useSkewCookie": false,
|
||||
"cacheLife": {
|
||||
"default": {
|
||||
"stale": 300,
|
||||
"revalidate": 900,
|
||||
"expire": 4294967294
|
||||
},
|
||||
"seconds": {
|
||||
"stale": 30,
|
||||
"revalidate": 1,
|
||||
"expire": 60
|
||||
},
|
||||
"minutes": {
|
||||
"stale": 300,
|
||||
"revalidate": 60,
|
||||
"expire": 3600
|
||||
},
|
||||
"hours": {
|
||||
"stale": 300,
|
||||
"revalidate": 3600,
|
||||
"expire": 86400
|
||||
},
|
||||
"days": {
|
||||
"stale": 300,
|
||||
"revalidate": 86400,
|
||||
"expire": 604800
|
||||
},
|
||||
"weeks": {
|
||||
"stale": 300,
|
||||
"revalidate": 604800,
|
||||
"expire": 2592000
|
||||
},
|
||||
"max": {
|
||||
"stale": 300,
|
||||
"revalidate": 2592000,
|
||||
"expire": 4294967294
|
||||
}
|
||||
},
|
||||
"cacheHandlers": {},
|
||||
"cssChunking": true,
|
||||
"multiZoneDraftMode": false,
|
||||
"appNavFailHandling": false,
|
||||
"prerenderEarlyExit": true,
|
||||
"serverMinification": true,
|
||||
"serverSourceMaps": false,
|
||||
"linkNoTouchStart": false,
|
||||
"caseSensitiveRoutes": false,
|
||||
"clientSegmentCache": false,
|
||||
"clientParamParsing": false,
|
||||
"dynamicOnHover": false,
|
||||
"preloadEntriesOnStart": true,
|
||||
"clientRouterFilter": true,
|
||||
"clientRouterFilterRedirects": false,
|
||||
"fetchCacheKeyPrefix": "",
|
||||
"middlewarePrefetch": "flexible",
|
||||
"optimisticClientCache": true,
|
||||
"manualClientBasePath": false,
|
||||
"cpus": 9,
|
||||
"memoryBasedWorkersCount": false,
|
||||
"imgOptConcurrency": null,
|
||||
"imgOptTimeoutInSeconds": 7,
|
||||
"imgOptMaxInputPixels": 268402689,
|
||||
"imgOptSequentialRead": null,
|
||||
"imgOptSkipMetadata": null,
|
||||
"isrFlushToDisk": true,
|
||||
"workerThreads": false,
|
||||
"optimizeCss": false,
|
||||
"nextScriptWorkers": false,
|
||||
"scrollRestoration": false,
|
||||
"externalDir": false,
|
||||
"disableOptimizedLoading": false,
|
||||
"gzipSize": true,
|
||||
"craCompat": false,
|
||||
"esmExternals": true,
|
||||
"fullySpecified": false,
|
||||
"swcTraceProfiling": false,
|
||||
"forceSwcTransforms": false,
|
||||
"largePageDataBytes": 128000,
|
||||
"typedEnv": false,
|
||||
"parallelServerCompiles": false,
|
||||
"parallelServerBuildTraces": false,
|
||||
"ppr": false,
|
||||
"authInterrupts": false,
|
||||
"webpackMemoryOptimizations": false,
|
||||
"optimizeServerReact": true,
|
||||
"viewTransition": false,
|
||||
"routerBFCache": false,
|
||||
"removeUncaughtErrorAndRejectionListeners": false,
|
||||
"validateRSCRequestHeaders": false,
|
||||
"staleTimes": {
|
||||
"dynamic": 0,
|
||||
"static": 300
|
||||
},
|
||||
"serverComponentsHmrCache": true,
|
||||
"staticGenerationMaxConcurrency": 8,
|
||||
"staticGenerationMinPagesPerWorker": 25,
|
||||
"cacheComponents": false,
|
||||
"inlineCss": false,
|
||||
"useCache": false,
|
||||
"globalNotFound": false,
|
||||
"devtoolSegmentExplorer": true,
|
||||
"browserDebugInfoInTerminal": false,
|
||||
"optimizeRouterScrolling": false,
|
||||
"middlewareClientMaxBodySize": 10485760,
|
||||
"optimizePackageImports": [
|
||||
"lucide-react",
|
||||
"date-fns",
|
||||
"lodash-es",
|
||||
"ramda",
|
||||
"antd",
|
||||
"react-bootstrap",
|
||||
"ahooks",
|
||||
"@ant-design/icons",
|
||||
"@headlessui/react",
|
||||
"@headlessui-float/react",
|
||||
"@heroicons/react/20/solid",
|
||||
"@heroicons/react/24/solid",
|
||||
"@heroicons/react/24/outline",
|
||||
"@visx/visx",
|
||||
"@tremor/react",
|
||||
"rxjs",
|
||||
"@mui/material",
|
||||
"@mui/icons-material",
|
||||
"recharts",
|
||||
"react-use",
|
||||
"effect",
|
||||
"@effect/schema",
|
||||
"@effect/platform",
|
||||
"@effect/platform-node",
|
||||
"@effect/platform-browser",
|
||||
"@effect/platform-bun",
|
||||
"@effect/sql",
|
||||
"@effect/sql-mssql",
|
||||
"@effect/sql-mysql2",
|
||||
"@effect/sql-pg",
|
||||
"@effect/sql-sqlite-node",
|
||||
"@effect/sql-sqlite-bun",
|
||||
"@effect/sql-sqlite-wasm",
|
||||
"@effect/sql-sqlite-react-native",
|
||||
"@effect/rpc",
|
||||
"@effect/rpc-http",
|
||||
"@effect/typeclass",
|
||||
"@effect/experimental",
|
||||
"@effect/opentelemetry",
|
||||
"@material-ui/core",
|
||||
"@material-ui/icons",
|
||||
"@tabler/icons-react",
|
||||
"mui-core",
|
||||
"react-icons/ai",
|
||||
"react-icons/bi",
|
||||
"react-icons/bs",
|
||||
"react-icons/cg",
|
||||
"react-icons/ci",
|
||||
"react-icons/di",
|
||||
"react-icons/fa",
|
||||
"react-icons/fa6",
|
||||
"react-icons/fc",
|
||||
"react-icons/fi",
|
||||
"react-icons/gi",
|
||||
"react-icons/go",
|
||||
"react-icons/gr",
|
||||
"react-icons/hi",
|
||||
"react-icons/hi2",
|
||||
"react-icons/im",
|
||||
"react-icons/io",
|
||||
"react-icons/io5",
|
||||
"react-icons/lia",
|
||||
"react-icons/lib",
|
||||
"react-icons/lu",
|
||||
"react-icons/md",
|
||||
"react-icons/pi",
|
||||
"react-icons/ri",
|
||||
"react-icons/rx",
|
||||
"react-icons/si",
|
||||
"react-icons/sl",
|
||||
"react-icons/tb",
|
||||
"react-icons/tfi",
|
||||
"react-icons/ti",
|
||||
"react-icons/vsc",
|
||||
"react-icons/wi"
|
||||
],
|
||||
"trustHostHeader": false,
|
||||
"isExperimentalCompile": false
|
||||
},
|
||||
"htmlLimitedBots": "[\\w-]+-Google|Google-[\\w-]+|Chrome-Lighthouse|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti|googleweblight",
|
||||
"bundlePagesRouterDependencies": false,
|
||||
"configFileName": "next.config.mjs",
|
||||
"turbopack": {
|
||||
"root": "/Users/robert"
|
||||
}
|
||||
},
|
||||
"appDir": "/Users/robert/MicroCash/agents/robertseares/frontend",
|
||||
"relativeAppDir": "MicroCash/agents/robertseares/frontend",
|
||||
"files": [
|
||||
".next/routes-manifest.json",
|
||||
".next/server/pages-manifest.json",
|
||||
".next/build-manifest.json",
|
||||
".next/prerender-manifest.json",
|
||||
".next/server/functions-config-manifest.json",
|
||||
".next/server/middleware-manifest.json",
|
||||
".next/server/middleware-build-manifest.js",
|
||||
".next/server/middleware-react-loadable-manifest.js",
|
||||
".next/react-loadable-manifest.json",
|
||||
".next/server/app-paths-manifest.json",
|
||||
".next/app-path-routes-manifest.json",
|
||||
".next/app-build-manifest.json",
|
||||
".next/server/server-reference-manifest.js",
|
||||
".next/server/server-reference-manifest.json",
|
||||
".next/BUILD_ID",
|
||||
".next/server/next-font-manifest.js",
|
||||
".next/server/next-font-manifest.json",
|
||||
".next/required-server-files.json"
|
||||
],
|
||||
"ignore": [
|
||||
"node_modules/next/dist/compiled/@ampproject/toolbox-optimizer/**/*"
|
||||
]
|
||||
}
|
||||
@@ -1,66 +0,0 @@
|
||||
{
|
||||
"version": 3,
|
||||
"pages404": true,
|
||||
"caseSensitive": false,
|
||||
"basePath": "",
|
||||
"redirects": [
|
||||
{
|
||||
"source": "/:file((?!\\.well-known(?:/.*)?)(?:[^/]+/)*[^/]+\\.\\w+)/",
|
||||
"destination": "/:file",
|
||||
"internal": true,
|
||||
"missing": [
|
||||
{
|
||||
"type": "header",
|
||||
"key": "x-nextjs-data"
|
||||
}
|
||||
],
|
||||
"statusCode": 308,
|
||||
"regex": "^(?:/((?!\\.well-known(?:/.*)?)(?:[^/]+/)*[^/]+\\.\\w+))/$"
|
||||
},
|
||||
{
|
||||
"source": "/:notfile((?!\\.well-known(?:/.*)?)(?:[^/]+/)*[^/\\.]+)",
|
||||
"destination": "/:notfile/",
|
||||
"internal": true,
|
||||
"statusCode": 308,
|
||||
"regex": "^(?:/((?!\\.well-known(?:/.*)?)(?:[^/]+/)*[^/\\.]+))$"
|
||||
}
|
||||
],
|
||||
"headers": [],
|
||||
"rewrites": {
|
||||
"beforeFiles": [],
|
||||
"afterFiles": [],
|
||||
"fallback": []
|
||||
},
|
||||
"dynamicRoutes": [],
|
||||
"staticRoutes": [
|
||||
{
|
||||
"page": "/",
|
||||
"regex": "^/(?:/)?$",
|
||||
"routeKeys": {},
|
||||
"namedRegex": "^/(?:/)?$"
|
||||
},
|
||||
{
|
||||
"page": "/_not-found",
|
||||
"regex": "^/_not\\-found(?:/)?$",
|
||||
"routeKeys": {},
|
||||
"namedRegex": "^/_not\\-found(?:/)?$"
|
||||
}
|
||||
],
|
||||
"dataRoutes": [],
|
||||
"rsc": {
|
||||
"header": "rsc",
|
||||
"varyHeader": "rsc, next-router-state-tree, next-router-prefetch, next-router-segment-prefetch",
|
||||
"prefetchHeader": "next-router-prefetch",
|
||||
"didPostponeHeader": "x-nextjs-postponed",
|
||||
"contentTypeHeader": "text/x-component",
|
||||
"suffix": ".rsc",
|
||||
"prefetchSuffix": ".prefetch.rsc",
|
||||
"prefetchSegmentHeader": "next-router-segment-prefetch",
|
||||
"prefetchSegmentSuffix": ".segment.rsc",
|
||||
"prefetchSegmentDirSuffix": ".segments"
|
||||
},
|
||||
"rewriteHeaders": {
|
||||
"pathHeader": "x-nextjs-rewritten-path",
|
||||
"queryHeader": "x-nextjs-rewritten-query"
|
||||
}
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{
|
||||
"/_not-found/page": "app/_not-found/page.js",
|
||||
"/page": "app/page.js"
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
@@ -1,8 +0,0 @@
|
||||
{
|
||||
"status": 404,
|
||||
"headers": {
|
||||
"x-nextjs-stale-time": "300",
|
||||
"x-nextjs-prerender": "1",
|
||||
"x-next-cache-tags": "_N_T_/layout,_N_T_/_not-found/layout,_N_T_/_not-found/page,_N_T_/_not-found/"
|
||||
}
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
1:"$Sreact.fragment"
|
||||
2:I[9766,[],""]
|
||||
3:I[8924,[],""]
|
||||
4:I[4431,[],"OutletBoundary"]
|
||||
6:I[5278,[],"AsyncMetadataOutlet"]
|
||||
8:I[4431,[],"ViewportBoundary"]
|
||||
a:I[4431,[],"MetadataBoundary"]
|
||||
b:"$Sreact.suspense"
|
||||
d:I[7150,[],""]
|
||||
:HL["/_next/static/css/5d263d3abd9811a6.css","style"]
|
||||
0:{"P":null,"b":"Wk-jrwnV3DPU6_gWZ0ZM0","p":"","c":["","_not-found",""],"i":false,"f":[[["",{"children":["/_not-found",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/5d263d3abd9811a6.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}],{"children":["/_not-found",["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],null,["$","$L4",null,{"children":["$L5",["$","$L6",null,{"promise":"$@7"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],[["$","$L8",null,{"children":"$L9"}],null],["$","$La",null,{"children":["$","div",null,{"hidden":true,"children":["$","$b",null,{"fallback":null,"children":"$Lc"}]}]}]]}],false]],"m":"$undefined","G":["$d",[]],"s":false,"S":true}
|
||||
9:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
|
||||
5:null
|
||||
7:{"metadata":[["$","title","0",{"children":"Robert Seares"}],["$","meta","1",{"name":"description","content":"Software engineer, engineering leader, founder, and product builder."}]],"error":null,"digest":"$undefined"}
|
||||
c:"$7:metadata"
|
||||
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
{"version":1,"files":["../../../../node_modules/next/dist/client/components/app-router-headers.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../node_modules/next/dist/lib/constants.js","../../../../node_modules/next/dist/lib/interop-default.js","../../../../node_modules/next/dist/lib/is-error.js","../../../../node_modules/next/dist/lib/semver-noop.js","../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../node_modules/next/dist/server/lib/cache-handlers/default.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../node_modules/next/dist/server/response-cache/types.js","../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../node_modules/next/dist/shared/lib/page-path/ensure-leading-slash.js","../../../../node_modules/next/dist/shared/lib/router/utils/app-paths.js","../../../../node_modules/next/dist/shared/lib/router/utils/html-bots.js","../../../../node_modules/next/dist/shared/lib/router/utils/is-bot.js","../../../../node_modules/next/dist/shared/lib/segment.js","../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../node_modules/next/package.json","../../../package.json","../../chunks/833.js","../../webpack-runtime.js","page_client-reference-manifest.js"]}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"headers": {
|
||||
"x-nextjs-stale-time": "300",
|
||||
"x-nextjs-prerender": "1",
|
||||
"x-next-cache-tags": "_N_T_/layout,_N_T_/page,_N_T_/"
|
||||
}
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
1:"$Sreact.fragment"
|
||||
2:I[9766,[],""]
|
||||
3:I[8924,[],""]
|
||||
b:I[7150,[],""]
|
||||
:HL["/_next/static/css/5d263d3abd9811a6.css","style"]
|
||||
0:{"P":null,"b":"Wk-jrwnV3DPU6_gWZ0ZM0","p":"","c":["",""],"i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/5d263d3abd9811a6.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","main",null,{"children":[["$","section",null,{"className":"hero","children":["$","div",null,{"className":"hero-inner","children":[["$","p",null,{"className":"eyebrow","children":"Software engineer, founder, product builder"}],["$","h1",null,{"children":"Robert Seares"}],["$","p",null,{"className":"lede","children":"I build companies, software, and systems."}],["$","p",null,{"className":"intro","children":"I am a software engineer, engineering leader, founder, and product builder currently living in Brazil with my wife and two children. Over the last decade I have worked across startups, AI, biotech, consumer products, infrastructure, and automation, always gravitating toward difficult technical problems where software can create outsized leverage."}]]}]}],["$","section",null,{"className":"section narrative","children":["$","div",null,{"className":"content-grid","children":[["$","div",null,{"children":[["$","p",null,{"className":"eyebrow","children":"Today"}],["$","h2",null,{"children":"Engineering at Ark Biotech"}]]}],["$","div",null,{"className":"copy","children":[["$","p",null,{"children":"Today I lead software engineering at Ark Biotech, where I help build the infrastructure, applications, simulation tooling, and AI systems powering next-generation biomanufacturing."}],["$","p",null,{"children":"My work spans cloud infrastructure, developer platforms, simulation systems, machine learning applications, frontend architecture, backend services, and engineering leadership."}]]}]]}]}],["$","section",null,{"className":"section question-band","children":["$","div",null,{"className":"question","children":[["$","p",null,{"className":"eyebrow","children":"The question"}],["$","h2",null,{"children":"How do we make it dramatically easier for people to build useful things?"}],["$","p",null,{"children":"That question has led me through projects ranging from AI systems and developer platforms to restaurant software, biotechnology infrastructure, and autonomous agents."}]]}]}],["$","section",null,{"className":"section","children":["$","div",null,{"className":"content-grid","children":[["$","div",null,{"children":[["$","p",null,{"className":"eyebrow","children":"What I do"}],["$","h2",null,{"children":"Systems that scale from idea to business"}]]}],["$","div",null,{"children":[["$","p",null,{"className":"copy lead-copy","children":"I enjoy building systems that can scale from a single user to thousands, and from a proof of concept to a business. My preferred stack is Python, TypeScript, Kubernetes, FastAPI, React, PostgreSQL, cloud-native infrastructure, and AI-powered workflows."}],"$L4"]}]]}]}],"$L5","$L6","$L7","$L8"]}],null,"$L9"]}],{},null,false]},null,false],"$La",false]],"m":"$undefined","G":["$b",[]],"s":false,"S":true}
|
||||
c:I[4431,[],"OutletBoundary"]
|
||||
e:I[5278,[],"AsyncMetadataOutlet"]
|
||||
10:I[4431,[],"ViewportBoundary"]
|
||||
12:I[4431,[],"MetadataBoundary"]
|
||||
13:"$Sreact.suspense"
|
||||
4:["$","div",null,{"className":"pill-grid","children":[["$","span","Artificial Intelligence",{"children":"Artificial Intelligence"}],["$","span","Cloud Infrastructure",{"children":"Cloud Infrastructure"}],["$","span","Distributed Systems",{"children":"Distributed Systems"}],["$","span","Developer Platforms",{"children":"Developer Platforms"}],["$","span","Product Engineering",{"children":"Product Engineering"}],["$","span","Startup Operations",{"children":"Startup Operations"}],["$","span","Automation",{"children":"Automation"}],["$","span","Technical Leadership",{"children":"Technical Leadership"}]]}]
|
||||
5:["$","section",null,{"className":"section split-band","children":[["$","article",null,{"children":[["$","p",null,{"className":"eyebrow","children":"Philosophy"}],["$","h2",null,{"children":"Software should create leverage."}],["$","p",null,{"children":"The best technology removes complexity rather than adding it. Great systems are understandable, maintainable, and useful. Great companies solve real problems. Great engineers ship."}],["$","ul",null,{"className":"clean-list","children":[["$","li","Ownership over bureaucracy",{"children":"Ownership over bureaucracy"}],["$","li","Speed over perfection",{"children":"Speed over perfection"}],["$","li","Simplicity over complexity",{"children":"Simplicity over complexity"}],["$","li","Learning over ego",{"children":"Learning over ego"}],["$","li","Execution over presentations",{"children":"Execution over presentations"}]]}]]}],["$","article",null,{"children":[["$","p",null,{"className":"eyebrow","children":"Building"}],["$","h2",null,{"children":"A laptop, an idea, and enough persistence."}],["$","p",null,{"children":"Outside of my day job, I spend most of my time building. I have launched products in AI, SaaS, developer tooling, restaurant technology, and automation. Some succeeded, some failed, and all of them taught me something valuable."}],["$","p",null,{"children":"What keeps me motivated is the same thing that motivated me when I started writing software: the ability to create something from nothing."}]]}]]}]
|
||||
6:["$","section",null,{"className":"section","children":["$","div",null,{"className":"content-grid","children":[["$","div",null,{"children":[["$","p",null,{"className":"eyebrow","children":"Life"}],["$","h2",null,{"children":"Countryside of Sao Paulo, Brazil"}]]}],["$","div",null,{"className":"copy","children":["$","p",null,{"children":"When I am not building software, I am spending time with my family, exploring business ideas, studying technology, lifting weights, reading about startups, or working on the next project that probably should not exist but sounds too interesting not to build."}]}]]}]}]
|
||||
7:["$","section",null,{"className":"section interests","children":[["$","div",null,{"children":[["$","p",null,{"className":"eyebrow","children":"Current interests"}],["$","h2",null,{"children":"Problems worth paying attention to"}]]}],["$","div",null,{"className":"interest-grid","children":[["$","span","AI agents and autonomous systems",{"children":"AI agents and autonomous systems"}],["$","span","Cloud-native platforms",{"children":"Cloud-native platforms"}],["$","span","Scientific computing",{"children":"Scientific computing"}],["$","span","Biotechnology",{"children":"Biotechnology"}],["$","span","Startup strategy",{"children":"Startup strategy"}],["$","span","Developer experience",{"children":"Developer experience"}],["$","span","Infrastructure automation",{"children":"Infrastructure automation"}],["$","span","Human-computer collaboration",{"children":"Human-computer collaboration"}]]}]]}]
|
||||
8:["$","section",null,{"className":"section connect","children":[["$","p",null,{"className":"eyebrow","children":"Connect"}],["$","h2",null,{"children":"If you are building something ambitious, I would love to hear about it."}],["$","p",null,{"children":"I am always interested in talking with builders, founders, engineers, and people working on difficult problems."}]]}]
|
||||
9:["$","$Lc",null,{"children":["$Ld",["$","$Le",null,{"promise":"$@f"}]]}]
|
||||
a:["$","$1","h",{"children":[null,[["$","$L10",null,{"children":"$L11"}],null],["$","$L12",null,{"children":["$","div",null,{"hidden":true,"children":["$","$13",null,{"fallback":null,"children":"$L14"}]}]}]]}]
|
||||
11:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
|
||||
d:null
|
||||
f:{"metadata":[["$","title","0",{"children":"Robert Seares"}],["$","meta","1",{"name":"description","content":"Software engineer, engineering leader, founder, and product builder."}]],"error":null,"digest":"$undefined"}
|
||||
14:"$f:metadata"
|
||||
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
{"version":1,"files":["../../../../../../../package.json","../../../node_modules/next/dist/client/components/app-router-headers.js","../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../../node_modules/next/dist/lib/client-and-server-references.js","../../../node_modules/next/dist/lib/constants.js","../../../node_modules/next/dist/lib/interop-default.js","../../../node_modules/next/dist/lib/is-error.js","../../../node_modules/next/dist/lib/semver-noop.js","../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../node_modules/next/dist/server/lib/cache-handlers/default.external.js","../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../node_modules/next/dist/server/lib/lru-cache.js","../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../node_modules/next/dist/server/lib/trace/constants.js","../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../node_modules/next/dist/server/load-manifest.external.js","../../../node_modules/next/dist/server/response-cache/types.js","../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../node_modules/next/dist/shared/lib/page-path/ensure-leading-slash.js","../../../node_modules/next/dist/shared/lib/router/utils/app-paths.js","../../../node_modules/next/dist/shared/lib/router/utils/html-bots.js","../../../node_modules/next/dist/shared/lib/router/utils/is-bot.js","../../../node_modules/next/dist/shared/lib/segment.js","../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../node_modules/next/package.json","../../../package.json","../../package.json","../chunks/833.js","../webpack-runtime.js","page_client-reference-manifest.js"]}
|
||||
@@ -1 +0,0 @@
|
||||
globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"622":{"*":{"id":"2146","name":"*","chunks":[],"async":false}},"1959":{"*":{"id":"1603","name":"*","chunks":[],"async":false}},"3886":{"*":{"id":"5170","name":"*","chunks":[],"async":false}},"4431":{"*":{"id":"2263","name":"*","chunks":[],"async":false}},"5278":{"*":{"id":"8922","name":"*","chunks":[],"async":false}},"7150":{"*":{"id":"4160","name":"*","chunks":[],"async":false}},"7989":{"*":{"id":"8495","name":"*","chunks":[],"async":false}},"8924":{"*":{"id":"9234","name":"*","chunks":[],"async":false}},"9766":{"*":{"id":"7526","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Users/robert/MicroCash/agents/robertseares/frontend/node_modules/next/dist/client/components/builtin/global-error.js":{"id":7150,"name":"*","chunks":[],"async":false},"/Users/robert/MicroCash/agents/robertseares/frontend/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":7150,"name":"*","chunks":[],"async":false},"/Users/robert/MicroCash/agents/robertseares/frontend/node_modules/next/dist/client/components/client-page.js":{"id":1959,"name":"*","chunks":[],"async":false},"/Users/robert/MicroCash/agents/robertseares/frontend/node_modules/next/dist/esm/client/components/client-page.js":{"id":1959,"name":"*","chunks":[],"async":false},"/Users/robert/MicroCash/agents/robertseares/frontend/node_modules/next/dist/client/components/client-segment.js":{"id":7989,"name":"*","chunks":[],"async":false},"/Users/robert/MicroCash/agents/robertseares/frontend/node_modules/next/dist/esm/client/components/client-segment.js":{"id":7989,"name":"*","chunks":[],"async":false},"/Users/robert/MicroCash/agents/robertseares/frontend/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":3886,"name":"*","chunks":[],"async":false},"/Users/robert/MicroCash/agents/robertseares/frontend/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":3886,"name":"*","chunks":[],"async":false},"/Users/robert/MicroCash/agents/robertseares/frontend/node_modules/next/dist/client/components/layout-router.js":{"id":9766,"name":"*","chunks":[],"async":false},"/Users/robert/MicroCash/agents/robertseares/frontend/node_modules/next/dist/esm/client/components/layout-router.js":{"id":9766,"name":"*","chunks":[],"async":false},"/Users/robert/MicroCash/agents/robertseares/frontend/node_modules/next/dist/client/components/metadata/async-metadata.js":{"id":5278,"name":"*","chunks":[],"async":false},"/Users/robert/MicroCash/agents/robertseares/frontend/node_modules/next/dist/esm/client/components/metadata/async-metadata.js":{"id":5278,"name":"*","chunks":[],"async":false},"/Users/robert/MicroCash/agents/robertseares/frontend/node_modules/next/dist/client/components/render-from-template-context.js":{"id":8924,"name":"*","chunks":[],"async":false},"/Users/robert/MicroCash/agents/robertseares/frontend/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":8924,"name":"*","chunks":[],"async":false},"/Users/robert/MicroCash/agents/robertseares/frontend/node_modules/next/dist/lib/framework/boundary-components.js":{"id":4431,"name":"*","chunks":[],"async":false},"/Users/robert/MicroCash/agents/robertseares/frontend/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":4431,"name":"*","chunks":[],"async":false},"/Users/robert/MicroCash/agents/robertseares/frontend/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":622,"name":"*","chunks":[],"async":false},"/Users/robert/MicroCash/agents/robertseares/frontend/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":622,"name":"*","chunks":[],"async":false},"/Users/robert/MicroCash/agents/robertseares/frontend/app/globals.css":{"id":1290,"name":"*","chunks":["177","static/chunks/app/layout-0ec9780b79cf85e4.js"],"async":false}},"entryCSSFiles":{"/Users/robert/MicroCash/agents/robertseares/frontend/":[],"/Users/robert/MicroCash/agents/robertseares/frontend/app/layout":[{"inlined":false,"path":"static/css/5d263d3abd9811a6.css"}],"/Users/robert/MicroCash/agents/robertseares/frontend/app/page":[]},"rscModuleMapping":{"622":{"*":{"id":"1384","name":"*","chunks":[],"async":false}},"1290":{"*":{"id":"2704","name":"*","chunks":[],"async":false}},"1959":{"*":{"id":"3597","name":"*","chunks":[],"async":false}},"3886":{"*":{"id":"9748","name":"*","chunks":[],"async":false}},"4431":{"*":{"id":"3041","name":"*","chunks":[],"async":false}},"5278":{"*":{"id":"7184","name":"*","chunks":[],"async":false}},"7150":{"*":{"id":"1170","name":"*","chunks":[],"async":false}},"7989":{"*":{"id":"6893","name":"*","chunks":[],"async":false}},"8924":{"*":{"id":"9576","name":"*","chunks":[],"async":false}},"9766":{"*":{"id":"6060","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,4 +0,0 @@
|
||||
{
|
||||
"version": 1,
|
||||
"functions": {}
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
self.__INTERCEPTION_ROUTE_REWRITE_MANIFEST="[]";
|
||||
@@ -1 +0,0 @@
|
||||
globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],ampDevFiles:[],lowPriorityFiles:[],rootMainFiles:["static/chunks/webpack-4a462cecab786e93.js","static/chunks/4bd1b696-c023c6e3521b1417.js","static/chunks/255-2aa030c9ba2867e3.js","static/chunks/main-app-d59f6883d44390ab.js"],rootMainFilesTree:{},pages:{"/_app":["static/chunks/webpack-4a462cecab786e93.js","static/chunks/framework-2c534e0e662575a2.js","static/chunks/main-af3375a02f18db6d.js","static/chunks/pages/_app-7d307437aca18ad4.js"],"/_error":["static/chunks/webpack-4a462cecab786e93.js","static/chunks/framework-2c534e0e662575a2.js","static/chunks/main-af3375a02f18db6d.js","static/chunks/pages/_error-cb2a52f75f2162e2.js"]},ampFirstPages:[]},globalThis.__BUILD_MANIFEST.lowPriorityFiles=["/static/"+process.env.__NEXT_BUILD_ID+"/_buildManifest.js",,"/static/"+process.env.__NEXT_BUILD_ID+"/_ssgManifest.js"];
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"version": 3,
|
||||
"middleware": {},
|
||||
"functions": {},
|
||||
"sortedMiddleware": []
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
self.__REACT_LOADABLE_MANIFEST="{}";
|
||||
@@ -1 +0,0 @@
|
||||
self.__NEXT_FONT_MANIFEST='{"pages":{},"app":{},"appUsingSizeAdjust":false,"pagesUsingSizeAdjust":false}';
|
||||
@@ -1 +0,0 @@
|
||||
{"pages":{},"app":{},"appUsingSizeAdjust":false,"pagesUsingSizeAdjust":false}
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"/_error": "pages/_error.js",
|
||||
"/_app": "pages/_app.js",
|
||||
"/_document": "pages/_document.js",
|
||||
"/404": "pages/404.html"
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
<!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width" data-next-head=""/><title data-next-head="">500: Internal Server Error</title><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-4a462cecab786e93.js" defer=""></script><script src="/_next/static/chunks/framework-2c534e0e662575a2.js" defer=""></script><script src="/_next/static/chunks/main-af3375a02f18db6d.js" defer=""></script><script src="/_next/static/chunks/pages/_app-7d307437aca18ad4.js" defer=""></script><script src="/_next/static/chunks/pages/_error-cb2a52f75f2162e2.js" defer=""></script><script src="/_next/static/Wk-jrwnV3DPU6_gWZ0ZM0/_buildManifest.js" defer=""></script><script src="/_next/static/Wk-jrwnV3DPU6_gWZ0ZM0/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":500}},"page":"/_error","query":{},"buildId":"Wk-jrwnV3DPU6_gWZ0ZM0","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
|
||||
@@ -1 +0,0 @@
|
||||
"use strict";(()=>{var a={};a.id=636,a.ids=[636],a.modules={625:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"default",{enumerable:!0,get:function(){return i}});let d=c(7020),e=c(8732),f=d._(c(2015)),g=c(6915);async function h(a){let{Component:b,ctx:c}=a;return{pageProps:await (0,g.loadGetInitialProps)(b,c)}}class i extends f.default.Component{render(){let{Component:a,pageProps:b}=this.props;return(0,e.jsx)(a,{...b})}}i.origGetInitialProps=h,i.getInitialProps=h,("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},2015:a=>{a.exports=require("react")},6915:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(b,{DecodeError:function(){return o},MiddlewareNotFoundError:function(){return s},MissingStaticPage:function(){return r},NormalizeError:function(){return p},PageNotFoundError:function(){return q},SP:function(){return m},ST:function(){return n},WEB_VITALS:function(){return c},execOnce:function(){return d},getDisplayName:function(){return i},getLocationOrigin:function(){return g},getURL:function(){return h},isAbsoluteUrl:function(){return f},isResSent:function(){return j},loadGetInitialProps:function(){return l},normalizeRepeatedSlashes:function(){return k},stringifyError:function(){return t}});let c=["CLS","FCP","FID","INP","LCP","TTFB"];function d(a){let b,c=!1;return function(){for(var d=arguments.length,e=Array(d),f=0;f<d;f++)e[f]=arguments[f];return c||(c=!0,b=a(...e)),b}}let e=/^[a-zA-Z][a-zA-Z\d+\-.]*?:/,f=a=>e.test(a);function g(){let{protocol:a,hostname:b,port:c}=window.location;return a+"//"+b+(c?":"+c:"")}function h(){let{href:a}=window.location,b=g();return a.substring(b.length)}function i(a){return"string"==typeof a?a:a.displayName||a.name||"Unknown"}function j(a){return a.finished||a.headersSent}function k(a){let b=a.split("?");return b[0].replace(/\\/g,"/").replace(/\/\/+/g,"/")+(b[1]?"?"+b.slice(1).join("?"):"")}async function l(a,b){let c=b.res||b.ctx&&b.ctx.res;if(!a.getInitialProps)return b.ctx&&b.Component?{pageProps:await l(b.Component,b.ctx)}:{};let d=await a.getInitialProps(b);if(c&&j(c))return d;if(!d)throw Object.defineProperty(Error('"'+i(a)+'.getInitialProps()" should resolve to an object. But found "'+d+'" instead.'),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return d}let m="undefined"!=typeof performance,n=m&&["mark","measure","getEntriesByName"].every(a=>"function"==typeof performance[a]);class o extends Error{}class p extends Error{}class q extends Error{constructor(a){super(),this.code="ENOENT",this.name="PageNotFoundError",this.message="Cannot find module for page: "+a}}class r extends Error{constructor(a,b){super(),this.message="Failed to load static file for page: "+a+" "+b}}class s extends Error{constructor(){super(),this.code="ENOENT",this.message="Cannot find the middleware module"}}function t(a){return JSON.stringify({message:a.message,stack:a.stack})}},7020:(a,b)=>{b._=function(a){return a&&a.__esModule?a:{default:a}}},8732:a=>{a.exports=require("react/jsx-runtime")}};var b=require("../webpack-runtime.js");b.C(a);var c=b(b.s=625);module.exports=c})();
|
||||
@@ -1 +0,0 @@
|
||||
{"version":1,"files":["../../../../../../../package.json","../../../node_modules/next/dist/pages/_app.js","../../../node_modules/react/cjs/react-jsx-runtime.development.js","../../../node_modules/react/cjs/react-jsx-runtime.production.js","../../../node_modules/react/cjs/react.development.js","../../../node_modules/react/cjs/react.production.js","../../../node_modules/react/index.js","../../../node_modules/react/jsx-runtime.js","../../../node_modules/react/package.json","../../../package.json","../../package.json","../webpack-runtime.js"]}
|
||||
@@ -1 +0,0 @@
|
||||
"use strict";(()=>{var a={};a.id=220,a.ids=[220],a.modules={361:a=>{a.exports=require("next/dist/compiled/next-server/pages.runtime.prod.js")},2015:a=>{a.exports=require("react")},8732:a=>{a.exports=require("react/jsx-runtime")},9902:a=>{a.exports=require("path")}};var b=require("../webpack-runtime.js");b.C(a);var c=b.X(0,[611],()=>b(b.s=5611));module.exports=c})();
|
||||
@@ -1 +0,0 @@
|
||||
{"version":1,"files":["../../../../../../../package.json","../../../node_modules/client-only/index.js","../../../node_modules/client-only/package.json","../../../node_modules/next/dist/client/components/app-router-headers.js","../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../node_modules/next/dist/compiled/next-server/pages.runtime.prod.js","../../../node_modules/next/dist/lib/client-and-server-references.js","../../../node_modules/next/dist/lib/constants.js","../../../node_modules/next/dist/lib/interop-default.js","../../../node_modules/next/dist/lib/is-error.js","../../../node_modules/next/dist/lib/semver-noop.js","../../../node_modules/next/dist/pages/_document.js","../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../node_modules/next/dist/server/lib/cache-handlers/default.external.js","../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../node_modules/next/dist/server/lib/lru-cache.js","../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../node_modules/next/dist/server/lib/trace/constants.js","../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../node_modules/next/dist/server/load-manifest.external.js","../../../node_modules/next/dist/server/response-cache/types.js","../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../node_modules/next/package.json","../../../node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js","../../../node_modules/react-dom/cjs/react-dom-server-legacy.browser.production.js","../../../node_modules/react-dom/cjs/react-dom-server.browser.development.js","../../../node_modules/react-dom/cjs/react-dom-server.browser.production.js","../../../node_modules/react-dom/cjs/react-dom-server.edge.development.js","../../../node_modules/react-dom/cjs/react-dom-server.edge.production.js","../../../node_modules/react-dom/cjs/react-dom.development.js","../../../node_modules/react-dom/cjs/react-dom.production.js","../../../node_modules/react-dom/index.js","../../../node_modules/react-dom/package.json","../../../node_modules/react-dom/server.browser.js","../../../node_modules/react-dom/server.edge.js","../../../node_modules/react/cjs/react-jsx-runtime.development.js","../../../node_modules/react/cjs/react-jsx-runtime.production.js","../../../node_modules/react/cjs/react.development.js","../../../node_modules/react/cjs/react.production.js","../../../node_modules/react/index.js","../../../node_modules/react/jsx-runtime.js","../../../node_modules/react/package.json","../../../node_modules/styled-jsx/dist/index/index.js","../../../node_modules/styled-jsx/index.js","../../../node_modules/styled-jsx/package.json","../../../package.json","../../package.json","../chunks/611.js","../webpack-runtime.js"]}
|
||||
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
{"version":1,"files":["../../../node_modules/client-only/index.js","../../../node_modules/client-only/package.json","../../../node_modules/next/dist/client/components/app-router-headers.js","../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../node_modules/next/dist/compiled/next-server/pages.runtime.prod.js","../../../node_modules/next/dist/lib/client-and-server-references.js","../../../node_modules/next/dist/lib/constants.js","../../../node_modules/next/dist/lib/interop-default.js","../../../node_modules/next/dist/lib/is-error.js","../../../node_modules/next/dist/lib/semver-noop.js","../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../node_modules/next/dist/server/lib/cache-handlers/default.external.js","../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../node_modules/next/dist/server/lib/lru-cache.js","../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../node_modules/next/dist/server/lib/trace/constants.js","../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../node_modules/next/dist/server/load-manifest.external.js","../../../node_modules/next/dist/server/response-cache/types.js","../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../node_modules/next/package.json","../../../node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js","../../../node_modules/react-dom/cjs/react-dom-server-legacy.browser.production.js","../../../node_modules/react-dom/cjs/react-dom-server.browser.development.js","../../../node_modules/react-dom/cjs/react-dom-server.browser.production.js","../../../node_modules/react-dom/cjs/react-dom-server.edge.development.js","../../../node_modules/react-dom/cjs/react-dom-server.edge.production.js","../../../node_modules/react-dom/cjs/react-dom.development.js","../../../node_modules/react-dom/cjs/react-dom.production.js","../../../node_modules/react-dom/index.js","../../../node_modules/react-dom/package.json","../../../node_modules/react-dom/server.browser.js","../../../node_modules/react-dom/server.edge.js","../../../node_modules/react/cjs/react-jsx-runtime.development.js","../../../node_modules/react/cjs/react-jsx-runtime.production.js","../../../node_modules/react/cjs/react.development.js","../../../node_modules/react/cjs/react.production.js","../../../node_modules/react/index.js","../../../node_modules/react/jsx-runtime.js","../../../node_modules/react/package.json","../../../node_modules/styled-jsx/dist/index/index.js","../../../node_modules/styled-jsx/index.js","../../../node_modules/styled-jsx/package.json","../../package.json","../chunks/611.js","../webpack-runtime.js"]}
|
||||
@@ -1 +0,0 @@
|
||||
self.__RSC_SERVER_MANIFEST="{\"node\":{},\"edge\":{},\"encryptionKey\":\"process.env.NEXT_SERVER_ACTIONS_ENCRYPTION_KEY\"}"
|
||||
@@ -1 +0,0 @@
|
||||
{"node":{},"edge":{},"encryptionKey":"2zMh+Q+skbyWQHWXtVoQqoOOEWrhrFwRdxSthkoR/h8="}
|
||||
@@ -1 +0,0 @@
|
||||
(()=>{"use strict";var a={},b={};function c(d){var e=b[d];if(void 0!==e)return e.exports;var f=b[d]={exports:{}},g=!0;try{a[d](f,f.exports,c),g=!1}finally{g&&delete b[d]}return f.exports}c.m=a,c.n=a=>{var b=a&&a.__esModule?()=>a.default:()=>a;return c.d(b,{a:b}),b},(()=>{var a,b=Object.getPrototypeOf?a=>Object.getPrototypeOf(a):a=>a.__proto__;c.t=function(d,e){if(1&e&&(d=this(d)),8&e||"object"==typeof d&&d&&(4&e&&d.__esModule||16&e&&"function"==typeof d.then))return d;var f=Object.create(null);c.r(f);var g={};a=a||[null,b({}),b([]),b(b)];for(var h=2&e&&d;"object"==typeof h&&!~a.indexOf(h);h=b(h))Object.getOwnPropertyNames(h).forEach(a=>g[a]=()=>d[a]);return g.default=()=>d,c.d(f,g),f}})(),c.d=(a,b)=>{for(var d in b)c.o(b,d)&&!c.o(a,d)&&Object.defineProperty(a,d,{enumerable:!0,get:b[d]})},c.f={},c.e=a=>Promise.all(Object.keys(c.f).reduce((b,d)=>(c.f[d](a,b),b),[])),c.u=a=>""+a+".js",c.o=(a,b)=>Object.prototype.hasOwnProperty.call(a,b),c.r=a=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(a,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(a,"__esModule",{value:!0})},c.X=(a,b,d)=>{var e=b;d||(b=a,d=()=>c(c.s=e)),b.map(c.e,c);var f=d();return void 0===f?a:f},(()=>{var a={311:1},b=b=>{var d=b.modules,e=b.ids,f=b.runtime;for(var g in d)c.o(d,g)&&(c.m[g]=d[g]);f&&f(c);for(var h=0;h<e.length;h++)a[e[h]]=1};c.f.require=(d,e)=>{a[d]||(311!=d?b(require("./chunks/"+c.u(d))):a[d]=1)},module.exports=c,c.C=b})()})();
|
||||
@@ -1 +0,0 @@
|
||||
self.__BUILD_MANIFEST=function(e,r,t){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},__routerFilterStatic:{numItems:2,errorRate:1e-4,numBits:39,numHashes:14,bitArray:[0,1,1,0,r,e,e,r,r,e,e,r,e,e,e,r,r,e,e,e,e,r,e,r,r,r,r,e,e,e,r,e,r,e,r,e,e,e,r]},__routerFilterDynamic:{numItems:r,errorRate:1e-4,numBits:r,numHashes:null,bitArray:[]},"/_error":["static/chunks/pages/_error-cb2a52f75f2162e2.js"],sortedPages:["/_app","/_error"]}}(1,0,1e-4),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
|
||||
@@ -1 +0,0 @@
|
||||
self.__SSG_MANIFEST=new Set([]);self.__SSG_MANIFEST_CB&&self.__SSG_MANIFEST_CB()
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[492],{4585:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"styles",{enumerable:!0,get:function(){return l}});let l={error:{fontFamily:'system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"',height:"100vh",textAlign:"center",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},desc:{display:"inline-block"},h1:{display:"inline-block",margin:"0 20px 0 0",padding:"0 23px 0 0",fontSize:24,fontWeight:500,verticalAlign:"top",lineHeight:"49px"},h2:{fontSize:14,fontWeight:400,lineHeight:"49px",margin:0}};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6458:(e,t,l)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/_not-found/page",function(){return l(9520)}])},8886:(e,t,l)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"HTTPAccessErrorFallback",{enumerable:!0,get:function(){return o}});let r=l(5155),n=l(4585);function o(e){let{status:t,message:l}=e;return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("title",{children:t+": "+l}),(0,r.jsx)("div",{style:n.styles.error,children:(0,r.jsxs)("div",{children:[(0,r.jsx)("style",{dangerouslySetInnerHTML:{__html:"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}),(0,r.jsx)("h1",{className:"next-error-h1",style:n.styles.h1,children:t}),(0,r.jsx)("div",{style:n.styles.desc,children:(0,r.jsx)("h2",{style:n.styles.h2,children:l})})]})})]})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9520:(e,t,l)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return o}});let r=l(5155),n=l(8886),o=function(){return(0,r.jsx)("html",{children:(0,r.jsx)("body",{children:(0,r.jsx)(n.HTTPAccessErrorFallback,{status:404,message:"This page could not be found."})})})};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)}},e=>{e.O(0,[441,255,358],()=>e(e.s=6458)),_N_E=e.O()}]);
|
||||
@@ -1 +0,0 @@
|
||||
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[177],{1290:()=>{},4784:(e,s,_)=>{Promise.resolve().then(_.t.bind(_,1290,23))}},e=>{e.O(0,[741,441,255,358],()=>e(e.s=4784)),_N_E=e.O()}]);
|
||||
@@ -1 +0,0 @@
|
||||
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[974],{4441:()=>{}},_=>{_.O(0,[441,255,358],()=>_(_.s=4441)),_N_E=_.O()}]);
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[358],{6338:(e,s,n)=>{Promise.resolve().then(n.t.bind(n,7150,23)),Promise.resolve().then(n.t.bind(n,1959,23)),Promise.resolve().then(n.t.bind(n,7989,23)),Promise.resolve().then(n.t.bind(n,3886,23)),Promise.resolve().then(n.t.bind(n,9766,23)),Promise.resolve().then(n.t.bind(n,5278,23)),Promise.resolve().then(n.t.bind(n,8924,23)),Promise.resolve().then(n.t.bind(n,4431,23)),Promise.resolve().then(n.bind(n,622))},9393:()=>{}},e=>{var s=s=>e(e.s=s);e.O(0,[441,255],()=>(s(1666),s(6338))),_N_E=e.O()}]);
|
||||
@@ -1 +0,0 @@
|
||||
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[636],{326:(_,n,p)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/_app",function(){return p(5139)}])}},_=>{var n=n=>_(_.s=n);_.O(0,[593,792],()=>(n(326),n(6763))),_N_E=_.O()}]);
|
||||
@@ -1 +0,0 @@
|
||||
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[731],{2164:(_,n,e)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/_error",function(){return e(1646)}])}},_=>{_.O(0,[636,593,792],()=>_(_.s=2164)),_N_E=_.O()}]);
|
||||
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
(()=>{"use strict";var e={},t={};function r(o){var n=t[o];if(void 0!==n)return n.exports;var i=t[o]={exports:{}},a=!0;try{e[o](i,i.exports,r),a=!1}finally{a&&delete t[o]}return i.exports}r.m=e,(()=>{var e=[];r.O=(t,o,n,i)=>{if(o){i=i||0;for(var a=e.length;a>0&&e[a-1][2]>i;a--)e[a]=e[a-1];e[a]=[o,n,i];return}for(var u=1/0,a=0;a<e.length;a++){for(var[o,n,i]=e[a],l=!0,c=0;c<o.length;c++)(!1&i||u>=i)&&Object.keys(r.O).every(e=>r.O[e](o[c]))?o.splice(c--,1):(l=!1,i<u&&(u=i));if(l){e.splice(a--,1);var f=n();void 0!==f&&(t=f)}}return t}})(),(()=>{var e,t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__;r.t=function(o,n){if(1&n&&(o=this(o)),8&n||"object"==typeof o&&o&&(4&n&&o.__esModule||16&n&&"function"==typeof o.then))return o;var i=Object.create(null);r.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var u=2&n&&o;"object"==typeof u&&!~e.indexOf(u);u=t(u))Object.getOwnPropertyNames(u).forEach(e=>a[e]=()=>o[e]);return a.default=()=>o,r.d(i,a),i}})(),r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((t,o)=>(r.f[o](e,t),t),[])),r.u=e=>{},r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{var e={},t="_N_E:";r.l=(o,n,i,a)=>{if(e[o])return void e[o].push(n);if(void 0!==i)for(var u,l,c=document.getElementsByTagName("script"),f=0;f<c.length;f++){var s=c[f];if(s.getAttribute("src")==o||s.getAttribute("data-webpack")==t+i){u=s;break}}u||(l=!0,(u=document.createElement("script")).charset="utf-8",u.timeout=120,r.nc&&u.setAttribute("nonce",r.nc),u.setAttribute("data-webpack",t+i),u.src=r.tu(o)),e[o]=[n];var d=(t,r)=>{u.onerror=u.onload=null,clearTimeout(p);var n=e[o];if(delete e[o],u.parentNode&&u.parentNode.removeChild(u),n&&n.forEach(e=>e(r)),t)return t(r)},p=setTimeout(d.bind(null,void 0,{type:"timeout",target:u}),12e4);u.onerror=d.bind(null,u.onerror),u.onload=d.bind(null,u.onload),l&&document.head.appendChild(u)}})(),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;r.tt=()=>(void 0===e&&(e={createScriptURL:e=>e},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(e=trustedTypes.createPolicy("nextjs#bundler",e))),e)})(),r.tu=e=>r.tt().createScriptURL(e),r.p="/_next/",(()=>{var e={68:0,741:0};r.f.j=(t,o)=>{var n=r.o(e,t)?e[t]:void 0;if(0!==n)if(n)o.push(n[2]);else if(/^(68|741)$/.test(t))e[t]=0;else{var i=new Promise((r,o)=>n=e[t]=[r,o]);o.push(n[2]=i);var a=r.p+r.u(t),u=Error();r.l(a,o=>{if(r.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var i=o&&("load"===o.type?"missing":o.type),a=o&&o.target&&o.target.src;u.message="Loading chunk "+t+" failed.\n("+i+": "+a+")",u.name="ChunkLoadError",u.type=i,u.request=a,n[1](u)}},"chunk-"+t,t)}},r.O.j=t=>0===e[t];var t=(t,o)=>{var n,i,[a,u,l]=o,c=0;if(a.some(t=>0!==e[t])){for(n in u)r.o(u,n)&&(r.m[n]=u[n]);if(l)var f=l(r)}for(t&&t(o);c<a.length;c++)i=a[c],r.o(e,i)&&e[i]&&e[i][0](),e[i]=0;return r.O(f)},o=self.webpackChunk_N_E=self.webpackChunk_N_E||[];o.forEach(t.bind(null,0)),o.push=t.bind(null,o.push.bind(o))})()})();
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,84 +0,0 @@
|
||||
// File: /Users/robert/MicroCash/agents/robertseares/frontend/app/layout.jsx
|
||||
import * as entry from '../../../app/layout.js'
|
||||
import type { ResolvingMetadata, ResolvingViewport } from 'next/dist/lib/metadata/types/metadata-interface.js'
|
||||
|
||||
type TEntry = typeof import('../../../app/layout.js')
|
||||
|
||||
type SegmentParams<T extends Object = any> = T extends Record<string, any>
|
||||
? { [K in keyof T]: T[K] extends string ? string | string[] | undefined : never }
|
||||
: T
|
||||
|
||||
// Check that the entry is a valid entry
|
||||
checkFields<Diff<{
|
||||
default: Function
|
||||
config?: {}
|
||||
generateStaticParams?: Function
|
||||
revalidate?: RevalidateRange<TEntry> | false
|
||||
dynamic?: 'auto' | 'force-dynamic' | 'error' | 'force-static'
|
||||
dynamicParams?: boolean
|
||||
fetchCache?: 'auto' | 'force-no-store' | 'only-no-store' | 'default-no-store' | 'default-cache' | 'only-cache' | 'force-cache'
|
||||
preferredRegion?: 'auto' | 'global' | 'home' | string | string[]
|
||||
runtime?: 'nodejs' | 'experimental-edge' | 'edge'
|
||||
maxDuration?: number
|
||||
|
||||
metadata?: any
|
||||
generateMetadata?: Function
|
||||
viewport?: any
|
||||
generateViewport?: Function
|
||||
experimental_ppr?: boolean
|
||||
|
||||
}, TEntry, ''>>()
|
||||
|
||||
|
||||
// Check the prop type of the entry function
|
||||
checkFields<Diff<LayoutProps, FirstArg<TEntry['default']>, 'default'>>()
|
||||
|
||||
// Check the arguments and return type of the generateMetadata function
|
||||
if ('generateMetadata' in entry) {
|
||||
checkFields<Diff<LayoutProps, FirstArg<MaybeField<TEntry, 'generateMetadata'>>, 'generateMetadata'>>()
|
||||
checkFields<Diff<ResolvingMetadata, SecondArg<MaybeField<TEntry, 'generateMetadata'>>, 'generateMetadata'>>()
|
||||
}
|
||||
|
||||
// Check the arguments and return type of the generateViewport function
|
||||
if ('generateViewport' in entry) {
|
||||
checkFields<Diff<LayoutProps, FirstArg<MaybeField<TEntry, 'generateViewport'>>, 'generateViewport'>>()
|
||||
checkFields<Diff<ResolvingViewport, SecondArg<MaybeField<TEntry, 'generateViewport'>>, 'generateViewport'>>()
|
||||
}
|
||||
|
||||
// Check the arguments and return type of the generateStaticParams function
|
||||
if ('generateStaticParams' in entry) {
|
||||
checkFields<Diff<{ params: SegmentParams }, FirstArg<MaybeField<TEntry, 'generateStaticParams'>>, 'generateStaticParams'>>()
|
||||
checkFields<Diff<{ __tag__: 'generateStaticParams', __return_type__: any[] | Promise<any[]> }, { __tag__: 'generateStaticParams', __return_type__: ReturnType<MaybeField<TEntry, 'generateStaticParams'>> }>>()
|
||||
}
|
||||
|
||||
export interface PageProps {
|
||||
params?: Promise<SegmentParams>
|
||||
searchParams?: Promise<any>
|
||||
}
|
||||
export interface LayoutProps {
|
||||
children?: React.ReactNode
|
||||
|
||||
params?: Promise<SegmentParams>
|
||||
}
|
||||
|
||||
// =============
|
||||
// Utility types
|
||||
type RevalidateRange<T> = T extends { revalidate: any } ? NonNegative<T['revalidate']> : never
|
||||
|
||||
// If T is unknown or any, it will be an empty {} type. Otherwise, it will be the same as Omit<T, keyof Base>.
|
||||
type OmitWithTag<T, K extends keyof any, _M> = Omit<T, K>
|
||||
type Diff<Base, T extends Base, Message extends string = ''> = 0 extends (1 & T) ? {} : OmitWithTag<T, keyof Base, Message>
|
||||
|
||||
type FirstArg<T extends Function> = T extends (...args: [infer T, any]) => any ? unknown extends T ? any : T : never
|
||||
type SecondArg<T extends Function> = T extends (...args: [any, infer T]) => any ? unknown extends T ? any : T : never
|
||||
type MaybeField<T, K extends string> = T extends { [k in K]: infer G } ? G extends Function ? G : never : never
|
||||
|
||||
|
||||
|
||||
function checkFields<_ extends { [k in keyof any]: never }>() {}
|
||||
|
||||
// https://github.com/sindresorhus/type-fest
|
||||
type Numeric = number | bigint
|
||||
type Zero = 0 | 0n
|
||||
type Negative<T extends Numeric> = T extends Zero ? never : `${T}` extends `-${string}` ? T : never
|
||||
type NonNegative<T extends Numeric> = T extends Zero ? T : Negative<T> extends never ? T : '__invalid_negative_number__'
|
||||
@@ -1,84 +0,0 @@
|
||||
// File: /Users/robert/MicroCash/agents/robertseares/frontend/app/page.jsx
|
||||
import * as entry from '../../../app/page.js'
|
||||
import type { ResolvingMetadata, ResolvingViewport } from 'next/dist/lib/metadata/types/metadata-interface.js'
|
||||
|
||||
type TEntry = typeof import('../../../app/page.js')
|
||||
|
||||
type SegmentParams<T extends Object = any> = T extends Record<string, any>
|
||||
? { [K in keyof T]: T[K] extends string ? string | string[] | undefined : never }
|
||||
: T
|
||||
|
||||
// Check that the entry is a valid entry
|
||||
checkFields<Diff<{
|
||||
default: Function
|
||||
config?: {}
|
||||
generateStaticParams?: Function
|
||||
revalidate?: RevalidateRange<TEntry> | false
|
||||
dynamic?: 'auto' | 'force-dynamic' | 'error' | 'force-static'
|
||||
dynamicParams?: boolean
|
||||
fetchCache?: 'auto' | 'force-no-store' | 'only-no-store' | 'default-no-store' | 'default-cache' | 'only-cache' | 'force-cache'
|
||||
preferredRegion?: 'auto' | 'global' | 'home' | string | string[]
|
||||
runtime?: 'nodejs' | 'experimental-edge' | 'edge'
|
||||
maxDuration?: number
|
||||
|
||||
metadata?: any
|
||||
generateMetadata?: Function
|
||||
viewport?: any
|
||||
generateViewport?: Function
|
||||
experimental_ppr?: boolean
|
||||
|
||||
}, TEntry, ''>>()
|
||||
|
||||
|
||||
// Check the prop type of the entry function
|
||||
checkFields<Diff<PageProps, FirstArg<TEntry['default']>, 'default'>>()
|
||||
|
||||
// Check the arguments and return type of the generateMetadata function
|
||||
if ('generateMetadata' in entry) {
|
||||
checkFields<Diff<PageProps, FirstArg<MaybeField<TEntry, 'generateMetadata'>>, 'generateMetadata'>>()
|
||||
checkFields<Diff<ResolvingMetadata, SecondArg<MaybeField<TEntry, 'generateMetadata'>>, 'generateMetadata'>>()
|
||||
}
|
||||
|
||||
// Check the arguments and return type of the generateViewport function
|
||||
if ('generateViewport' in entry) {
|
||||
checkFields<Diff<PageProps, FirstArg<MaybeField<TEntry, 'generateViewport'>>, 'generateViewport'>>()
|
||||
checkFields<Diff<ResolvingViewport, SecondArg<MaybeField<TEntry, 'generateViewport'>>, 'generateViewport'>>()
|
||||
}
|
||||
|
||||
// Check the arguments and return type of the generateStaticParams function
|
||||
if ('generateStaticParams' in entry) {
|
||||
checkFields<Diff<{ params: SegmentParams }, FirstArg<MaybeField<TEntry, 'generateStaticParams'>>, 'generateStaticParams'>>()
|
||||
checkFields<Diff<{ __tag__: 'generateStaticParams', __return_type__: any[] | Promise<any[]> }, { __tag__: 'generateStaticParams', __return_type__: ReturnType<MaybeField<TEntry, 'generateStaticParams'>> }>>()
|
||||
}
|
||||
|
||||
export interface PageProps {
|
||||
params?: Promise<SegmentParams>
|
||||
searchParams?: Promise<any>
|
||||
}
|
||||
export interface LayoutProps {
|
||||
children?: React.ReactNode
|
||||
|
||||
params?: Promise<SegmentParams>
|
||||
}
|
||||
|
||||
// =============
|
||||
// Utility types
|
||||
type RevalidateRange<T> = T extends { revalidate: any } ? NonNegative<T['revalidate']> : never
|
||||
|
||||
// If T is unknown or any, it will be an empty {} type. Otherwise, it will be the same as Omit<T, keyof Base>.
|
||||
type OmitWithTag<T, K extends keyof any, _M> = Omit<T, K>
|
||||
type Diff<Base, T extends Base, Message extends string = ''> = 0 extends (1 & T) ? {} : OmitWithTag<T, keyof Base, Message>
|
||||
|
||||
type FirstArg<T extends Function> = T extends (...args: [infer T, any]) => any ? unknown extends T ? any : T : never
|
||||
type SecondArg<T extends Function> = T extends (...args: [any, infer T]) => any ? unknown extends T ? any : T : never
|
||||
type MaybeField<T, K extends string> = T extends { [k in K]: infer G } ? G extends Function ? G : never : never
|
||||
|
||||
|
||||
|
||||
function checkFields<_ extends { [k in keyof any]: never }>() {}
|
||||
|
||||
// https://github.com/sindresorhus/type-fest
|
||||
type Numeric = number | bigint
|
||||
type Zero = 0 | 0n
|
||||
type Negative<T extends Numeric> = T extends Zero ? never : `${T}` extends `-${string}` ? T : never
|
||||
type NonNegative<T extends Numeric> = T extends Zero ? T : Negative<T> extends never ? T : '__invalid_negative_number__'
|
||||
141
frontend/.next/types/cache-life.d.ts
vendored
141
frontend/.next/types/cache-life.d.ts
vendored
@@ -1,141 +0,0 @@
|
||||
// Type definitions for Next.js cacheLife configs
|
||||
|
||||
declare module 'next/cache' {
|
||||
export { unstable_cache } from 'next/dist/server/web/spec-extension/unstable-cache'
|
||||
export {
|
||||
revalidateTag,
|
||||
revalidatePath,
|
||||
unstable_expireTag,
|
||||
unstable_expirePath,
|
||||
} from 'next/dist/server/web/spec-extension/revalidate'
|
||||
export { unstable_noStore } from 'next/dist/server/web/spec-extension/unstable-no-store'
|
||||
|
||||
|
||||
/**
|
||||
* Cache this `"use cache"` for a timespan defined by the `"default"` profile.
|
||||
* ```
|
||||
* stale: 300 seconds (5 minutes)
|
||||
* revalidate: 900 seconds (15 minutes)
|
||||
* expire: never
|
||||
* ```
|
||||
*
|
||||
* This cache may be stale on clients for 5 minutes before checking with the server.
|
||||
* If the server receives a new request after 15 minutes, start revalidating new values in the background.
|
||||
* It lives for the maximum age of the server cache. If this entry has no traffic for a while, it may serve an old value the next request.
|
||||
*/
|
||||
export function unstable_cacheLife(profile: "default"): void
|
||||
|
||||
/**
|
||||
* Cache this `"use cache"` for a timespan defined by the `"seconds"` profile.
|
||||
* ```
|
||||
* stale: 30 seconds
|
||||
* revalidate: 1 seconds
|
||||
* expire: 60 seconds (1 minute)
|
||||
* ```
|
||||
*
|
||||
* This cache may be stale on clients for 30 seconds before checking with the server.
|
||||
* If the server receives a new request after 1 seconds, start revalidating new values in the background.
|
||||
* If this entry has no traffic for 1 minute it will expire. The next request will recompute it.
|
||||
*/
|
||||
export function unstable_cacheLife(profile: "seconds"): void
|
||||
|
||||
/**
|
||||
* Cache this `"use cache"` for a timespan defined by the `"minutes"` profile.
|
||||
* ```
|
||||
* stale: 300 seconds (5 minutes)
|
||||
* revalidate: 60 seconds (1 minute)
|
||||
* expire: 3600 seconds (1 hour)
|
||||
* ```
|
||||
*
|
||||
* This cache may be stale on clients for 5 minutes before checking with the server.
|
||||
* If the server receives a new request after 1 minute, start revalidating new values in the background.
|
||||
* If this entry has no traffic for 1 hour it will expire. The next request will recompute it.
|
||||
*/
|
||||
export function unstable_cacheLife(profile: "minutes"): void
|
||||
|
||||
/**
|
||||
* Cache this `"use cache"` for a timespan defined by the `"hours"` profile.
|
||||
* ```
|
||||
* stale: 300 seconds (5 minutes)
|
||||
* revalidate: 3600 seconds (1 hour)
|
||||
* expire: 86400 seconds (1 day)
|
||||
* ```
|
||||
*
|
||||
* This cache may be stale on clients for 5 minutes before checking with the server.
|
||||
* If the server receives a new request after 1 hour, start revalidating new values in the background.
|
||||
* If this entry has no traffic for 1 day it will expire. The next request will recompute it.
|
||||
*/
|
||||
export function unstable_cacheLife(profile: "hours"): void
|
||||
|
||||
/**
|
||||
* Cache this `"use cache"` for a timespan defined by the `"days"` profile.
|
||||
* ```
|
||||
* stale: 300 seconds (5 minutes)
|
||||
* revalidate: 86400 seconds (1 day)
|
||||
* expire: 604800 seconds (1 week)
|
||||
* ```
|
||||
*
|
||||
* This cache may be stale on clients for 5 minutes before checking with the server.
|
||||
* If the server receives a new request after 1 day, start revalidating new values in the background.
|
||||
* If this entry has no traffic for 1 week it will expire. The next request will recompute it.
|
||||
*/
|
||||
export function unstable_cacheLife(profile: "days"): void
|
||||
|
||||
/**
|
||||
* Cache this `"use cache"` for a timespan defined by the `"weeks"` profile.
|
||||
* ```
|
||||
* stale: 300 seconds (5 minutes)
|
||||
* revalidate: 604800 seconds (1 week)
|
||||
* expire: 2592000 seconds (30 days)
|
||||
* ```
|
||||
*
|
||||
* This cache may be stale on clients for 5 minutes before checking with the server.
|
||||
* If the server receives a new request after 1 week, start revalidating new values in the background.
|
||||
* If this entry has no traffic for 30 days it will expire. The next request will recompute it.
|
||||
*/
|
||||
export function unstable_cacheLife(profile: "weeks"): void
|
||||
|
||||
/**
|
||||
* Cache this `"use cache"` for a timespan defined by the `"max"` profile.
|
||||
* ```
|
||||
* stale: 300 seconds (5 minutes)
|
||||
* revalidate: 2592000 seconds (30 days)
|
||||
* expire: never
|
||||
* ```
|
||||
*
|
||||
* This cache may be stale on clients for 5 minutes before checking with the server.
|
||||
* If the server receives a new request after 30 days, start revalidating new values in the background.
|
||||
* It lives for the maximum age of the server cache. If this entry has no traffic for a while, it may serve an old value the next request.
|
||||
*/
|
||||
export function unstable_cacheLife(profile: "max"): void
|
||||
|
||||
/**
|
||||
* Cache this `"use cache"` using a custom timespan.
|
||||
* ```
|
||||
* stale: ... // seconds
|
||||
* revalidate: ... // seconds
|
||||
* expire: ... // seconds
|
||||
* ```
|
||||
*
|
||||
* This is similar to Cache-Control: max-age=`stale`,s-max-age=`revalidate`,stale-while-revalidate=`expire-revalidate`
|
||||
*
|
||||
* If a value is left out, the lowest of other cacheLife() calls or the default, is used instead.
|
||||
*/
|
||||
export function unstable_cacheLife(profile: {
|
||||
/**
|
||||
* This cache may be stale on clients for ... seconds before checking with the server.
|
||||
*/
|
||||
stale?: number,
|
||||
/**
|
||||
* If the server receives a new request after ... seconds, start revalidating new values in the background.
|
||||
*/
|
||||
revalidate?: number,
|
||||
/**
|
||||
* If this entry has no traffic for ... seconds it will expire. The next request will recompute it.
|
||||
*/
|
||||
expire?: number
|
||||
}): void
|
||||
|
||||
|
||||
export { cacheTag as unstable_cacheTag } from 'next/dist/server/use-cache/cache-tag'
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
{"type": "module"}
|
||||
57
frontend/.next/types/routes.d.ts
vendored
57
frontend/.next/types/routes.d.ts
vendored
@@ -1,57 +0,0 @@
|
||||
// This file is generated automatically by Next.js
|
||||
// Do not edit this file manually
|
||||
|
||||
type AppRoutes = never
|
||||
type PageRoutes = never
|
||||
type LayoutRoutes = "/"
|
||||
type RedirectRoutes = never
|
||||
type RewriteRoutes = never
|
||||
type Routes = AppRoutes | PageRoutes | LayoutRoutes | RedirectRoutes | RewriteRoutes
|
||||
|
||||
|
||||
interface ParamMap {
|
||||
"/": {}
|
||||
}
|
||||
|
||||
|
||||
export type ParamsOf<Route extends Routes> = ParamMap[Route]
|
||||
|
||||
interface LayoutSlotMap {
|
||||
"/": never
|
||||
}
|
||||
|
||||
|
||||
export type { AppRoutes, PageRoutes, LayoutRoutes, RedirectRoutes, RewriteRoutes, ParamMap }
|
||||
|
||||
declare global {
|
||||
/**
|
||||
* Props for Next.js App Router page components
|
||||
* @example
|
||||
* ```tsx
|
||||
* export default function Page(props: PageProps<'/blog/[slug]'>) {
|
||||
* const { slug } = await props.params
|
||||
* return <div>Blog post: {slug}</div>
|
||||
* }
|
||||
* ```
|
||||
*/
|
||||
interface PageProps<AppRoute extends AppRoutes> {
|
||||
params: Promise<ParamMap[AppRoute]>
|
||||
searchParams: Promise<Record<string, string | string[] | undefined>>
|
||||
}
|
||||
|
||||
/**
|
||||
* Props for Next.js App Router layout components
|
||||
* @example
|
||||
* ```tsx
|
||||
* export default function Layout(props: LayoutProps<'/dashboard'>) {
|
||||
* return <div>{props.children}</div>
|
||||
* }
|
||||
* ```
|
||||
*/
|
||||
type LayoutProps<LayoutRoute extends LayoutRoutes> = {
|
||||
params: Promise<ParamMap[LayoutRoute]>
|
||||
children: React.ReactNode
|
||||
} & {
|
||||
[K in LayoutSlotMap[LayoutRoute]]: React.ReactNode
|
||||
}
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
// This file is generated automatically by Next.js
|
||||
// Do not edit this file manually
|
||||
// This file validates that all pages and layouts export the correct types
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
12
frontend/app/(en)/layout.jsx
Normal file
12
frontend/app/(en)/layout.jsx
Normal file
@@ -0,0 +1,12 @@
|
||||
import "../globals.css";
|
||||
import { baseMetadata } from "../seo.js";
|
||||
|
||||
export const metadata = baseMetadata;
|
||||
|
||||
export default function EnglishLayout({ children }) {
|
||||
return (
|
||||
<html lang="en">
|
||||
<body>{children}</body>
|
||||
</html>
|
||||
);
|
||||
}
|
||||
35
frontend/app/(en)/page.jsx
Normal file
35
frontend/app/(en)/page.jsx
Normal file
@@ -0,0 +1,35 @@
|
||||
import { profileContent } from "../content.js";
|
||||
import { ProfilePage } from "../ProfilePage.jsx";
|
||||
|
||||
export const metadata = {
|
||||
title: "Robert Seares | Software Engineer, Founder, Product Builder",
|
||||
description:
|
||||
"Robert Seares builds companies, software, and systems across AI, biotech, cloud infrastructure, developer platforms, product engineering, and automation.",
|
||||
alternates: {
|
||||
canonical: "/",
|
||||
languages: {
|
||||
en: "/",
|
||||
"pt-BR": "/pt/",
|
||||
"x-default": "/",
|
||||
},
|
||||
},
|
||||
openGraph: {
|
||||
locale: "en_US",
|
||||
url: "/",
|
||||
title: "Robert Seares | Software Engineer, Founder, Product Builder",
|
||||
description:
|
||||
"I build companies, software, and systems across AI, biotech, infrastructure, developer platforms, and automation.",
|
||||
images: [
|
||||
{
|
||||
url: "/og-image.png",
|
||||
width: 1200,
|
||||
height: 630,
|
||||
alt: "Robert Seares - I build companies, software, and systems.",
|
||||
},
|
||||
],
|
||||
},
|
||||
};
|
||||
|
||||
export default function Home() {
|
||||
return <ProfilePage content={profileContent.en} />;
|
||||
}
|
||||
221
frontend/app/ProfilePage.jsx
Normal file
221
frontend/app/ProfilePage.jsx
Normal file
@@ -0,0 +1,221 @@
|
||||
export function ProfilePage({ content }) {
|
||||
const siteUrl = process.env.NEXT_PUBLIC_SITE_URL || "https://robertseares.com";
|
||||
const pageUrl = new URL(content.locale === "pt" ? "/pt/" : "/", siteUrl).toString();
|
||||
const jsonLd = {
|
||||
"@context": "https://schema.org",
|
||||
"@graph": [
|
||||
{
|
||||
"@type": "Person",
|
||||
"@id": `${siteUrl}/#person`,
|
||||
name: "Robert Seares",
|
||||
url: siteUrl,
|
||||
jobTitle: [
|
||||
content.locale === "pt" ? "Engenheiro de software" : "Software Engineer",
|
||||
content.locale === "pt" ? "Lider de engenharia" : "Engineering Leader",
|
||||
"Founder",
|
||||
content.locale === "pt" ? "Builder de produto" : "Product Builder",
|
||||
],
|
||||
homeLocation: {
|
||||
"@type": "Place",
|
||||
name: "Sao Paulo, Brazil",
|
||||
},
|
||||
worksFor: {
|
||||
"@type": "Organization",
|
||||
name: "Ark Biotech",
|
||||
},
|
||||
knowsAbout: [
|
||||
"Artificial Intelligence",
|
||||
"Biotechnology",
|
||||
"Cloud Infrastructure",
|
||||
"Distributed Systems",
|
||||
"Developer Platforms",
|
||||
"Product Engineering",
|
||||
"Automation",
|
||||
"Python",
|
||||
"TypeScript",
|
||||
"Kubernetes",
|
||||
"FastAPI",
|
||||
"React",
|
||||
"PostgreSQL",
|
||||
],
|
||||
knowsLanguage: ["English", "Portuguese"],
|
||||
description: content.hero.intro,
|
||||
},
|
||||
{
|
||||
"@type": "WebSite",
|
||||
"@id": `${siteUrl}/#website`,
|
||||
name: "Robert Seares",
|
||||
url: siteUrl,
|
||||
inLanguage: ["en", "pt-BR"],
|
||||
publisher: {
|
||||
"@id": `${siteUrl}/#person`,
|
||||
},
|
||||
},
|
||||
{
|
||||
"@type": "ProfilePage",
|
||||
"@id": `${pageUrl}#webpage`,
|
||||
url: pageUrl,
|
||||
name: content.hero.title,
|
||||
headline: content.hero.lede,
|
||||
description: content.hero.intro,
|
||||
inLanguage: content.htmlLang,
|
||||
isPartOf: {
|
||||
"@id": `${siteUrl}/#website`,
|
||||
},
|
||||
about: {
|
||||
"@id": `${siteUrl}/#person`,
|
||||
},
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
return (
|
||||
<main lang={content.htmlLang}>
|
||||
<script
|
||||
type="application/ld+json"
|
||||
dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }}
|
||||
/>
|
||||
<nav className="topbar" aria-label={content.navAria}>
|
||||
<a className="brand" href="#top">RS</a>
|
||||
<div className="nav-links">
|
||||
<a href="#work">{content.nav.work}</a>
|
||||
<a href="#philosophy">{content.nav.philosophy}</a>
|
||||
<a href="#interests">{content.nav.interests}</a>
|
||||
<a href="#connect">{content.nav.connect}</a>
|
||||
</div>
|
||||
<div className="language-switch" aria-label="Language">
|
||||
<span>{content.currentLabel}</span>
|
||||
<a href={content.alternateHref}>{content.alternateLabel}</a>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section
|
||||
className="hero"
|
||||
id="top"
|
||||
style={{ "--hero-image": `url("${content.images.hero}")` }}
|
||||
>
|
||||
<div className="hero-panel">
|
||||
<p className="eyebrow">{content.hero.eyebrow}</p>
|
||||
<h1>{content.hero.title}</h1>
|
||||
<p className="lede">{content.hero.lede}</p>
|
||||
<p className="intro">{content.hero.intro}</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section className="stats-strip" aria-label={content.statsAria}>
|
||||
{content.stats.map(([value, label]) => (
|
||||
<div key={label}>
|
||||
<strong>{value}</strong>
|
||||
<span>{label}</span>
|
||||
</div>
|
||||
))}
|
||||
</section>
|
||||
|
||||
<section className="section intro-section" id="work">
|
||||
<div className="section-kicker">
|
||||
<p className="eyebrow">{content.work.eyebrow}</p>
|
||||
<h2>{content.work.title}</h2>
|
||||
</div>
|
||||
<div className="large-copy">
|
||||
{content.work.paragraphs.map((paragraph) => (
|
||||
<p key={paragraph}>{paragraph}</p>
|
||||
))}
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section className="timeline-section">
|
||||
<div className="timeline">
|
||||
{content.chapters.map((chapter) => (
|
||||
<article key={chapter.title}>
|
||||
<span>{chapter.label}</span>
|
||||
<div>
|
||||
<h3>{chapter.title}</h3>
|
||||
<p>{chapter.body}</p>
|
||||
</div>
|
||||
</article>
|
||||
))}
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section className="question-band">
|
||||
<div>
|
||||
<p className="eyebrow">{content.question.eyebrow}</p>
|
||||
<h2>{content.question.title}</h2>
|
||||
<p>{content.question.body}</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section className="section focus-section">
|
||||
<div className="section-kicker">
|
||||
<p className="eyebrow">{content.focus.eyebrow}</p>
|
||||
<h2>{content.focus.title}</h2>
|
||||
</div>
|
||||
<div>
|
||||
<p className="large-copy compact">{content.focus.body}</p>
|
||||
<div className="pill-grid">
|
||||
{content.focus.areas.map((area) => (
|
||||
<span key={area}>{area}</span>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section className="beliefs" id="philosophy">
|
||||
<article className="belief-primary">
|
||||
<p className="eyebrow">{content.philosophy.eyebrow}</p>
|
||||
<h2>{content.philosophy.title}</h2>
|
||||
<p>{content.philosophy.body}</p>
|
||||
</article>
|
||||
<article className="belief-list">
|
||||
<p className="eyebrow">{content.philosophy.valuesEyebrow}</p>
|
||||
<ul>
|
||||
{content.philosophy.values.map((value) => (
|
||||
<li key={value}>{value}</li>
|
||||
))}
|
||||
</ul>
|
||||
</article>
|
||||
</section>
|
||||
|
||||
<section className="section building">
|
||||
<div className="build-copy">
|
||||
<p className="eyebrow">{content.building.eyebrow}</p>
|
||||
<h2>{content.building.title}</h2>
|
||||
</div>
|
||||
<div className="large-copy">
|
||||
{content.building.paragraphs.map((paragraph) => (
|
||||
<p key={paragraph}>{paragraph}</p>
|
||||
))}
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section
|
||||
className="life-band"
|
||||
style={{ "--life-image": `url("${content.images.life}")` }}
|
||||
>
|
||||
<div>
|
||||
<p className="eyebrow">{content.life.eyebrow}</p>
|
||||
<h2>{content.life.title}</h2>
|
||||
</div>
|
||||
<p>{content.life.body}</p>
|
||||
</section>
|
||||
|
||||
<section className="section interests" id="interests">
|
||||
<div className="section-kicker">
|
||||
<p className="eyebrow">{content.interests.eyebrow}</p>
|
||||
<h2>{content.interests.title}</h2>
|
||||
</div>
|
||||
<div className="interest-grid">
|
||||
{content.interests.items.map((interest) => (
|
||||
<span key={interest}>{interest}</span>
|
||||
))}
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section className="connect" id="connect">
|
||||
<p className="eyebrow">{content.connect.eyebrow}</p>
|
||||
<h2>{content.connect.title}</h2>
|
||||
<p>{content.connect.body}</p>
|
||||
</section>
|
||||
</main>
|
||||
);
|
||||
}
|
||||
269
frontend/app/content.js
Normal file
269
frontend/app/content.js
Normal file
@@ -0,0 +1,269 @@
|
||||
const sharedImages = {
|
||||
hero:
|
||||
"https://images.unsplash.com/photo-1451187580459-43490279c0fa?auto=format&fit=crop&w=2400&q=85",
|
||||
life:
|
||||
"https://images.unsplash.com/photo-1500530855697-b586d89ba3ee?auto=format&fit=crop&w=2000&q=85",
|
||||
};
|
||||
|
||||
export const profileContent = {
|
||||
en: {
|
||||
locale: "en",
|
||||
htmlLang: "en",
|
||||
alternateHref: "/pt/",
|
||||
alternateLabel: "PT",
|
||||
currentLabel: "EN",
|
||||
navAria: "Primary navigation",
|
||||
nav: {
|
||||
work: "Work",
|
||||
philosophy: "Philosophy",
|
||||
interests: "Interests",
|
||||
connect: "Connect",
|
||||
},
|
||||
hero: {
|
||||
eyebrow: "Software engineer / founder / product builder",
|
||||
title: "Robert Seares",
|
||||
lede: "I build companies, software, and systems.",
|
||||
intro:
|
||||
"I am a software engineer, engineering leader, founder, and product builder currently living in Brazil with my wife and two children. Over the last decade I have worked across startups, AI, biotech, consumer products, infrastructure, and automation, always gravitating toward difficult technical problems where software can create outsized leverage.",
|
||||
},
|
||||
statsAria: "Profile highlights",
|
||||
stats: [
|
||||
["10+", "years building software"],
|
||||
["AI + Bio", "current frontier"],
|
||||
["Brazil", "home base"],
|
||||
["0 to 1", "favorite operating mode"],
|
||||
],
|
||||
work: {
|
||||
eyebrow: "What I do",
|
||||
title: "Engineering work for hard, useful problems.",
|
||||
paragraphs: [
|
||||
"Today I lead software engineering at Ark Biotech, where I help build the infrastructure, applications, simulation tooling, and AI systems powering next-generation biomanufacturing.",
|
||||
"My work spans cloud infrastructure, developer platforms, simulation systems, machine learning applications, frontend architecture, backend services, and engineering leadership.",
|
||||
],
|
||||
},
|
||||
chapters: [
|
||||
{
|
||||
label: "Now",
|
||||
title: "Ark Biotech",
|
||||
body:
|
||||
"Leading software engineering for the infrastructure, applications, simulation tooling, and AI systems behind next-generation biomanufacturing.",
|
||||
},
|
||||
{
|
||||
label: "Before",
|
||||
title: "PlanetPlay and ventures",
|
||||
body:
|
||||
"Led innovation initiatives, founded software companies, and helped startups turn rough ideas into production systems.",
|
||||
},
|
||||
{
|
||||
label: "Always",
|
||||
title: "Useful leverage",
|
||||
body:
|
||||
"Drawn to hard technical problems where a small team, the right abstractions, and relentless execution can change the shape of a business.",
|
||||
},
|
||||
],
|
||||
question: {
|
||||
eyebrow: "The question",
|
||||
title:
|
||||
"How do we make it dramatically easier for people to build useful things?",
|
||||
body:
|
||||
"That question has led me through projects ranging from AI systems and developer platforms to restaurant software, biotechnology infrastructure, and autonomous agents.",
|
||||
},
|
||||
focus: {
|
||||
eyebrow: "Operating range",
|
||||
title: "From proof of concept to production business.",
|
||||
body:
|
||||
"I enjoy building systems that scale from a single user to thousands. My preferred stack is Python, TypeScript, Kubernetes, FastAPI, React, PostgreSQL, cloud-native infrastructure, and AI-powered workflows.",
|
||||
areas: [
|
||||
"Artificial Intelligence",
|
||||
"Cloud Infrastructure",
|
||||
"Distributed Systems",
|
||||
"Developer Platforms",
|
||||
"Product Engineering",
|
||||
"Startup Operations",
|
||||
"Automation",
|
||||
"Technical Leadership",
|
||||
],
|
||||
},
|
||||
philosophy: {
|
||||
eyebrow: "Philosophy",
|
||||
title: "Software should create leverage.",
|
||||
body:
|
||||
"The best technology removes complexity rather than adding it. Great systems are understandable, maintainable, and useful. Great companies solve real problems. Great engineers ship.",
|
||||
valuesEyebrow: "Values",
|
||||
values: [
|
||||
"Ownership over bureaucracy",
|
||||
"Speed over perfection",
|
||||
"Simplicity over complexity",
|
||||
"Learning over ego",
|
||||
"Execution over presentations",
|
||||
],
|
||||
},
|
||||
building: {
|
||||
eyebrow: "Building",
|
||||
title:
|
||||
"A laptop, an idea, and enough persistence can change the trajectory of a business.",
|
||||
paragraphs: [
|
||||
"Outside of my day job, I spend most of my time building. I have launched products in AI, SaaS, developer tooling, restaurant technology, and automation. Some succeeded, some failed, and all of them taught me something valuable.",
|
||||
"What keeps me motivated is the same thing that motivated me when I started writing software: the ability to create something from nothing.",
|
||||
],
|
||||
},
|
||||
life: {
|
||||
eyebrow: "Life",
|
||||
title: "Countryside of São Paulo, Brazil.",
|
||||
body:
|
||||
"When I am not building software, I am spending time with my family, exploring business ideas, studying technology, lifting weights, reading about startups, or working on the next project that probably should not exist but sounds too interesting not to build.",
|
||||
},
|
||||
interests: {
|
||||
eyebrow: "Current interests",
|
||||
title: "Problems worth paying attention to.",
|
||||
items: [
|
||||
"AI agents and autonomous systems",
|
||||
"Cloud-native platforms",
|
||||
"Scientific computing",
|
||||
"Biotechnology",
|
||||
"Startup strategy",
|
||||
"Developer experience",
|
||||
"Infrastructure automation",
|
||||
"Human-computer collaboration",
|
||||
],
|
||||
},
|
||||
connect: {
|
||||
eyebrow: "Connect",
|
||||
title:
|
||||
"If you are building something ambitious, I would love to hear about it.",
|
||||
body:
|
||||
"I am always interested in talking with builders, founders, engineers, and people working on difficult problems.",
|
||||
},
|
||||
images: sharedImages,
|
||||
},
|
||||
pt: {
|
||||
locale: "pt",
|
||||
htmlLang: "pt-BR",
|
||||
alternateHref: "/",
|
||||
alternateLabel: "EN",
|
||||
currentLabel: "PT",
|
||||
navAria: "Navegação principal",
|
||||
nav: {
|
||||
work: "Trabalho",
|
||||
philosophy: "Filosofia",
|
||||
interests: "Interesses",
|
||||
connect: "Contato",
|
||||
},
|
||||
hero: {
|
||||
eyebrow: "Engenheiro de software / fundador / builder de produto",
|
||||
title: "Robert Seares",
|
||||
lede: "Eu construo empresas, software e sistemas.",
|
||||
intro:
|
||||
"Sou engenheiro de software, líder de engenharia, fundador e builder de produto, atualmente morando no Brasil com minha esposa e meus dois filhos. Na última década trabalhei com startups, IA, biotecnologia, produtos de consumo, infraestrutura e automação, sempre gravitando em direção a problemas técnicos difíceis onde software pode criar alavancagem fora do comum.",
|
||||
},
|
||||
statsAria: "Destaques do perfil",
|
||||
stats: [
|
||||
["10+", "anos construindo software"],
|
||||
["IA + Bio", "fronteira atual"],
|
||||
["Brasil", "base"],
|
||||
["0 a 1", "modo favorito de operação"],
|
||||
],
|
||||
work: {
|
||||
eyebrow: "O que faço",
|
||||
title: "Engenharia para problemas difíceis e úteis.",
|
||||
paragraphs: [
|
||||
"Hoje lidero engenharia de software na Ark Biotech, onde ajudo a construir a infraestrutura, as aplicações, as ferramentas de simulação e os sistemas de IA que impulsionam a próxima geração da biomanufatura.",
|
||||
"Meu trabalho passa por infraestrutura em nuvem, plataformas para desenvolvedores, sistemas de simulação, aplicações de machine learning, arquitetura frontend, serviços backend e liderança de engenharia.",
|
||||
],
|
||||
},
|
||||
chapters: [
|
||||
{
|
||||
label: "Agora",
|
||||
title: "Ark Biotech",
|
||||
body:
|
||||
"Liderando engenharia de software para a infraestrutura, as aplicações, as ferramentas de simulação e os sistemas de IA por trás da próxima geração da biomanufatura.",
|
||||
},
|
||||
{
|
||||
label: "Antes",
|
||||
title: "PlanetPlay e ventures",
|
||||
body:
|
||||
"Liderei iniciativas de inovação, fundei empresas de software e ajudei startups a transformar ideias iniciais em sistemas de produção.",
|
||||
},
|
||||
{
|
||||
label: "Sempre",
|
||||
title: "Alavancagem útil",
|
||||
body:
|
||||
"Atraído por problemas técnicos difíceis onde um time pequeno, as abstrações certas e execução constante podem mudar a forma de um negócio.",
|
||||
},
|
||||
],
|
||||
question: {
|
||||
eyebrow: "A pergunta",
|
||||
title:
|
||||
"Como tornamos dramaticamente mais fácil para as pessoas construírem coisas úteis?",
|
||||
body:
|
||||
"Essa pergunta me levou por projetos que vão de sistemas de IA e plataformas para desenvolvedores a software para restaurantes, infraestrutura de biotecnologia e agentes autônomos.",
|
||||
},
|
||||
focus: {
|
||||
eyebrow: "Alcance operacional",
|
||||
title: "Do proof of concept ao negócio em produção.",
|
||||
body:
|
||||
"Gosto de construir sistemas que escalam de um único usuário para milhares. Minha stack preferida é Python, TypeScript, Kubernetes, FastAPI, React, PostgreSQL, infraestrutura cloud-native e fluxos de trabalho potencializados por IA.",
|
||||
areas: [
|
||||
"Inteligência Artificial",
|
||||
"Infraestrutura em Nuvem",
|
||||
"Sistemas Distribuídos",
|
||||
"Plataformas para Desenvolvedores",
|
||||
"Engenharia de Produto",
|
||||
"Operações de Startup",
|
||||
"Automação",
|
||||
"Liderança Técnica",
|
||||
],
|
||||
},
|
||||
philosophy: {
|
||||
eyebrow: "Filosofia",
|
||||
title: "Software deve criar alavancagem.",
|
||||
body:
|
||||
"A melhor tecnologia remove complexidade em vez de adicionar. Grandes sistemas são compreensíveis, mantíveis e úteis. Grandes empresas resolvem problemas reais. Grandes engenheiros entregam.",
|
||||
valuesEyebrow: "Valores",
|
||||
values: [
|
||||
"Propriedade acima de burocracia",
|
||||
"Velocidade acima de perfeição",
|
||||
"Simplicidade acima de complexidade",
|
||||
"Aprendizado acima de ego",
|
||||
"Execução acima de apresentações",
|
||||
],
|
||||
},
|
||||
building: {
|
||||
eyebrow: "Construindo",
|
||||
title:
|
||||
"Um laptop, uma ideia e persistência suficiente podem mudar a trajetória de um negócio.",
|
||||
paragraphs: [
|
||||
"Fora do meu trabalho principal, passo a maior parte do tempo construindo. Já lancei produtos em IA, SaaS, ferramentas para desenvolvedores, tecnologia para restaurantes e automação. Alguns deram certo, outros falharam, e todos me ensinaram algo valioso.",
|
||||
"O que continua me motivando é a mesma coisa que me motivava quando comecei a programar: a capacidade de criar algo do nada.",
|
||||
],
|
||||
},
|
||||
life: {
|
||||
eyebrow: "Vida",
|
||||
title: "Interior de São Paulo, Brasil.",
|
||||
body:
|
||||
"Quando não estou construindo software, estou passando tempo com minha família, explorando ideias de negócio, estudando tecnologia, treinando, lendo sobre startups ou trabalhando no próximo projeto que provavelmente não deveria existir, mas parece interessante demais para não construir.",
|
||||
},
|
||||
interests: {
|
||||
eyebrow: "Interesses atuais",
|
||||
title: "Problemas que valem atenção.",
|
||||
items: [
|
||||
"Agentes de IA e sistemas autônomos",
|
||||
"Plataformas cloud-native",
|
||||
"Computação científica",
|
||||
"Biotecnologia",
|
||||
"Estratégia de startups",
|
||||
"Experiência de desenvolvedor",
|
||||
"Automação de infraestrutura",
|
||||
"Colaboração humano-computador",
|
||||
],
|
||||
},
|
||||
connect: {
|
||||
eyebrow: "Contato",
|
||||
title:
|
||||
"Se você está construindo algo ambicioso, eu adoraria saber mais.",
|
||||
body:
|
||||
"Estou sempre interessado em conversar com builders, fundadores, engenheiros e pessoas trabalhando em problemas difíceis.",
|
||||
},
|
||||
images: sharedImages,
|
||||
},
|
||||
};
|
||||
@@ -3,8 +3,8 @@
|
||||
:root {
|
||||
color-scheme: light;
|
||||
font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
||||
background: #f4f1ec;
|
||||
color: #191816;
|
||||
background: #f7f3ea;
|
||||
color: #171512;
|
||||
}
|
||||
|
||||
* {
|
||||
@@ -19,16 +19,26 @@ body {
|
||||
margin: 0;
|
||||
min-height: 100vh;
|
||||
background:
|
||||
linear-gradient(90deg, rgba(25, 24, 22, 0.05) 1px, transparent 1px),
|
||||
linear-gradient(180deg, rgba(25, 24, 22, 0.05) 1px, transparent 1px),
|
||||
#f4f1ec;
|
||||
background-size: 44px 44px;
|
||||
linear-gradient(90deg, rgba(23, 21, 18, 0.055) 1px, transparent 1px),
|
||||
linear-gradient(180deg, rgba(23, 21, 18, 0.045) 1px, transparent 1px),
|
||||
#f7f3ea;
|
||||
background-size: 56px 56px;
|
||||
}
|
||||
|
||||
body::selection {
|
||||
background: #d7f4df;
|
||||
color: #111;
|
||||
}
|
||||
|
||||
main {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
a {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
@@ -37,117 +47,287 @@ p {
|
||||
}
|
||||
|
||||
p {
|
||||
color: #4d4840;
|
||||
color: #514b41;
|
||||
font-size: 18px;
|
||||
line-height: 1.7;
|
||||
}
|
||||
|
||||
.topbar {
|
||||
position: fixed;
|
||||
top: 18px;
|
||||
left: 50%;
|
||||
z-index: 20;
|
||||
width: min(1120px, calc(100% - 40px));
|
||||
height: 54px;
|
||||
transform: translateX(-50%);
|
||||
border: 1px solid rgba(255, 255, 255, 0.36);
|
||||
border-radius: 8px;
|
||||
background: rgba(21, 24, 23, 0.76);
|
||||
backdrop-filter: blur(16px);
|
||||
color: #fffaf2;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: 10px;
|
||||
padding: 0 10px 0 14px;
|
||||
box-shadow: 0 18px 60px rgba(0, 0, 0, 0.18);
|
||||
}
|
||||
|
||||
.brand {
|
||||
width: 34px;
|
||||
height: 34px;
|
||||
border-radius: 6px;
|
||||
background: #dfffe7;
|
||||
color: #111;
|
||||
display: grid;
|
||||
place-items: center;
|
||||
font-size: 13px;
|
||||
font-weight: 900;
|
||||
}
|
||||
|
||||
.nav-links,
|
||||
.language-switch {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
}
|
||||
|
||||
.nav-links a,
|
||||
.language-switch a,
|
||||
.language-switch span {
|
||||
border-radius: 6px;
|
||||
padding: 9px 11px;
|
||||
color: rgba(255, 250, 242, 0.82);
|
||||
font-size: 13px;
|
||||
font-weight: 750;
|
||||
}
|
||||
|
||||
.nav-links a:hover,
|
||||
.language-switch a:hover {
|
||||
background: rgba(255, 255, 255, 0.1);
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.language-switch {
|
||||
border-left: 1px solid rgba(255, 255, 255, 0.16);
|
||||
padding-left: 8px;
|
||||
}
|
||||
|
||||
.language-switch span {
|
||||
background: rgba(223, 255, 231, 0.16);
|
||||
color: #dfffe7;
|
||||
}
|
||||
|
||||
.hero {
|
||||
min-height: 92vh;
|
||||
min-height: 100svh;
|
||||
padding: 108px 28px 46px;
|
||||
display: flex;
|
||||
align-items: flex-end;
|
||||
padding: 56px 28px;
|
||||
background:
|
||||
linear-gradient(135deg, rgba(22, 82, 73, 0.14), transparent 48%),
|
||||
linear-gradient(180deg, rgba(244, 241, 236, 0.52), #f4f1ec 84%),
|
||||
url("https://images.unsplash.com/photo-1497366754035-f200968a6e72?auto=format&fit=crop&w=2200&q=85");
|
||||
linear-gradient(90deg, rgba(16, 16, 14, 0.82), rgba(16, 16, 14, 0.38) 46%, rgba(16, 16, 14, 0.12)),
|
||||
linear-gradient(180deg, rgba(16, 16, 14, 0.14), rgba(247, 243, 234, 0.12) 72%, #f7f3ea 100%),
|
||||
var(--hero-image);
|
||||
background-position: center;
|
||||
background-size: cover;
|
||||
}
|
||||
|
||||
.hero-inner {
|
||||
.hero-panel {
|
||||
width: min(1120px, 100%);
|
||||
margin: 0 auto;
|
||||
padding-top: 18vh;
|
||||
padding-bottom: clamp(28px, 7vh, 86px);
|
||||
}
|
||||
|
||||
.eyebrow {
|
||||
margin-bottom: 14px;
|
||||
color: #0f6c5b;
|
||||
color: #167861;
|
||||
font-size: 12px;
|
||||
font-weight: 800;
|
||||
font-weight: 900;
|
||||
letter-spacing: 0;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.hero .eyebrow {
|
||||
color: #a8ffd4;
|
||||
}
|
||||
|
||||
h1 {
|
||||
max-width: 980px;
|
||||
max-width: 1040px;
|
||||
margin-bottom: 24px;
|
||||
color: #171512;
|
||||
font-size: clamp(64px, 11vw, 148px);
|
||||
line-height: 0.88;
|
||||
color: #fffaf2;
|
||||
font-size: clamp(72px, 12vw, 172px);
|
||||
font-weight: 900;
|
||||
line-height: 0.82;
|
||||
letter-spacing: 0;
|
||||
overflow-wrap: anywhere;
|
||||
text-wrap: balance;
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin-bottom: 18px;
|
||||
margin-bottom: 20px;
|
||||
color: #1b1915;
|
||||
font-size: clamp(38px, 5vw, 72px);
|
||||
font-weight: 880;
|
||||
line-height: 0.96;
|
||||
letter-spacing: 0;
|
||||
text-wrap: balance;
|
||||
}
|
||||
|
||||
h3 {
|
||||
margin-bottom: 8px;
|
||||
color: #1c1a17;
|
||||
font-size: clamp(34px, 5vw, 68px);
|
||||
line-height: 0.98;
|
||||
font-size: 26px;
|
||||
line-height: 1.05;
|
||||
letter-spacing: 0;
|
||||
}
|
||||
|
||||
.lede {
|
||||
max-width: 760px;
|
||||
margin-bottom: 18px;
|
||||
color: #1f352f;
|
||||
font-size: clamp(28px, 4vw, 48px);
|
||||
line-height: 1.08;
|
||||
font-weight: 750;
|
||||
color: #e9fff2;
|
||||
font-size: clamp(28px, 4vw, 52px);
|
||||
line-height: 1.06;
|
||||
font-weight: 850;
|
||||
text-wrap: balance;
|
||||
}
|
||||
|
||||
.intro {
|
||||
max-width: 820px;
|
||||
margin-bottom: 0;
|
||||
color: #27231e;
|
||||
font-size: 21px;
|
||||
color: rgba(255, 250, 242, 0.84);
|
||||
font-size: 20px;
|
||||
line-height: 1.65;
|
||||
}
|
||||
|
||||
.section {
|
||||
padding: 96px 28px;
|
||||
.stats-strip {
|
||||
width: min(1120px, calc(100% - 56px));
|
||||
margin: -42px auto 0;
|
||||
position: relative;
|
||||
z-index: 4;
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, minmax(0, 1fr));
|
||||
border: 1px solid rgba(23, 21, 18, 0.12);
|
||||
border-radius: 8px;
|
||||
background: rgba(255, 253, 248, 0.92);
|
||||
backdrop-filter: blur(14px);
|
||||
box-shadow: 0 24px 80px rgba(30, 25, 15, 0.16);
|
||||
}
|
||||
|
||||
.content-grid {
|
||||
width: min(1120px, 100%);
|
||||
margin: 0 auto;
|
||||
.stats-strip div {
|
||||
min-height: 132px;
|
||||
padding: 24px;
|
||||
display: grid;
|
||||
grid-template-columns: minmax(240px, 0.8fr) minmax(0, 1.2fr);
|
||||
gap: 56px;
|
||||
align-content: end;
|
||||
border-right: 1px solid rgba(23, 21, 18, 0.1);
|
||||
}
|
||||
|
||||
.stats-strip div:last-child {
|
||||
border-right: 0;
|
||||
}
|
||||
|
||||
.stats-strip strong {
|
||||
color: #15130f;
|
||||
font-size: clamp(28px, 4vw, 44px);
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
.stats-strip span {
|
||||
margin-top: 8px;
|
||||
color: #696054;
|
||||
font-size: 14px;
|
||||
font-weight: 750;
|
||||
}
|
||||
|
||||
.section {
|
||||
width: min(1120px, calc(100% - 56px));
|
||||
margin: 0 auto;
|
||||
padding: 112px 0;
|
||||
}
|
||||
|
||||
.intro-section,
|
||||
.focus-section,
|
||||
.building,
|
||||
.interests {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(240px, 0.85fr) minmax(0, 1.15fr);
|
||||
gap: 70px;
|
||||
align-items: start;
|
||||
}
|
||||
|
||||
.copy p:last-child {
|
||||
.section-kicker {
|
||||
position: sticky;
|
||||
top: 96px;
|
||||
}
|
||||
|
||||
.large-copy p,
|
||||
.large-copy {
|
||||
color: #3d382f;
|
||||
font-size: clamp(21px, 2vw, 28px);
|
||||
line-height: 1.55;
|
||||
}
|
||||
|
||||
.large-copy p:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.lead-copy {
|
||||
margin-bottom: 28px;
|
||||
.large-copy.compact {
|
||||
margin-bottom: 34px;
|
||||
}
|
||||
|
||||
.timeline-section {
|
||||
padding: 24px 28px 112px;
|
||||
}
|
||||
|
||||
.timeline {
|
||||
width: min(1120px, 100%);
|
||||
margin: 0 auto;
|
||||
border-top: 1px solid rgba(23, 21, 18, 0.16);
|
||||
}
|
||||
|
||||
.timeline article {
|
||||
display: grid;
|
||||
grid-template-columns: 150px 1fr;
|
||||
gap: 32px;
|
||||
padding: 30px 0;
|
||||
border-bottom: 1px solid rgba(23, 21, 18, 0.16);
|
||||
}
|
||||
|
||||
.timeline span {
|
||||
color: #0e755d;
|
||||
font-size: 13px;
|
||||
font-weight: 900;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.timeline p {
|
||||
max-width: 760px;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.question-band {
|
||||
background: #17231f;
|
||||
color: #f9f6ef;
|
||||
padding: 120px 28px;
|
||||
background:
|
||||
linear-gradient(120deg, rgba(13, 72, 61, 0.95), rgba(22, 22, 18, 0.96)),
|
||||
#17231f;
|
||||
}
|
||||
|
||||
.question {
|
||||
.question-band > div {
|
||||
width: min(980px, 100%);
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.question .eyebrow {
|
||||
color: #71d7b8;
|
||||
.question-band .eyebrow {
|
||||
color: #9dffd0;
|
||||
}
|
||||
|
||||
.question h2 {
|
||||
.question-band h2 {
|
||||
color: #fffaf2;
|
||||
font-size: clamp(42px, 6vw, 82px);
|
||||
}
|
||||
|
||||
.question p {
|
||||
.question-band p {
|
||||
max-width: 760px;
|
||||
margin-bottom: 0;
|
||||
color: #d9e2dc;
|
||||
color: #dbe8df;
|
||||
}
|
||||
|
||||
.pill-grid,
|
||||
@@ -159,124 +339,248 @@ h2 {
|
||||
|
||||
.pill-grid span,
|
||||
.interest-grid span {
|
||||
border: 1px solid rgba(25, 24, 22, 0.18);
|
||||
border: 1px solid rgba(23, 21, 18, 0.16);
|
||||
border-radius: 8px;
|
||||
background: rgba(255, 255, 255, 0.56);
|
||||
padding: 11px 13px;
|
||||
background: rgba(255, 253, 248, 0.78);
|
||||
padding: 12px 14px;
|
||||
color: #25221d;
|
||||
font-size: 15px;
|
||||
font-weight: 700;
|
||||
font-weight: 800;
|
||||
box-shadow: 0 10px 30px rgba(39, 31, 18, 0.06);
|
||||
}
|
||||
|
||||
.split-band {
|
||||
.beliefs {
|
||||
width: min(1120px, calc(100% - 56px));
|
||||
margin: 0 auto;
|
||||
padding-right: 0;
|
||||
padding-left: 0;
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
grid-template-columns: minmax(0, 1.35fr) minmax(280px, 0.65fr);
|
||||
gap: 1px;
|
||||
background: rgba(25, 24, 22, 0.18);
|
||||
background: rgba(23, 21, 18, 0.14);
|
||||
border: 1px solid rgba(23, 21, 18, 0.14);
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.split-band article {
|
||||
min-height: 520px;
|
||||
padding: 42px;
|
||||
.beliefs article {
|
||||
padding: clamp(30px, 5vw, 58px);
|
||||
background: #fffdf8;
|
||||
}
|
||||
|
||||
.split-band article:first-child {
|
||||
background: #e7eee8;
|
||||
}
|
||||
|
||||
.split-band h2 {
|
||||
font-size: clamp(32px, 4vw, 54px);
|
||||
}
|
||||
|
||||
.clean-list {
|
||||
.belief-primary {
|
||||
min-height: 560px;
|
||||
display: grid;
|
||||
gap: 12px;
|
||||
margin: 28px 0 0;
|
||||
align-content: space-between;
|
||||
}
|
||||
|
||||
.belief-primary p:last-child {
|
||||
max-width: 720px;
|
||||
margin-bottom: 0;
|
||||
font-size: 21px;
|
||||
}
|
||||
|
||||
.belief-list {
|
||||
background: #e8efe7 !important;
|
||||
}
|
||||
|
||||
.belief-list ul {
|
||||
margin: 34px 0 0;
|
||||
padding: 0;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.clean-list li {
|
||||
border-top: 1px solid rgba(25, 24, 22, 0.18);
|
||||
padding-top: 12px;
|
||||
color: #25221d;
|
||||
font-size: 17px;
|
||||
font-weight: 800;
|
||||
.belief-list li {
|
||||
border-top: 1px solid rgba(23, 21, 18, 0.18);
|
||||
padding: 17px 0;
|
||||
color: #1c1a17;
|
||||
font-size: 18px;
|
||||
font-weight: 900;
|
||||
}
|
||||
|
||||
.interests {
|
||||
width: min(1120px, 100%);
|
||||
.building {
|
||||
align-items: end;
|
||||
}
|
||||
|
||||
.build-copy h2 {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.life-band {
|
||||
width: min(1120px, calc(100% - 56px));
|
||||
margin: 0 auto;
|
||||
padding: 56px;
|
||||
border-radius: 8px;
|
||||
background:
|
||||
linear-gradient(90deg, rgba(247, 243, 234, 0.9), rgba(247, 243, 234, 0.62)),
|
||||
var(--life-image);
|
||||
background-position: center;
|
||||
background-size: cover;
|
||||
display: grid;
|
||||
grid-template-columns: minmax(260px, 0.9fr) minmax(0, 1.1fr);
|
||||
gap: 56px;
|
||||
box-shadow: 0 24px 90px rgba(33, 29, 20, 0.14);
|
||||
}
|
||||
|
||||
.interests h2 {
|
||||
max-width: 760px;
|
||||
.life-band p:last-child {
|
||||
margin-bottom: 0;
|
||||
color: #2f2a22;
|
||||
font-size: 21px;
|
||||
}
|
||||
|
||||
.interest-grid {
|
||||
align-content: start;
|
||||
}
|
||||
|
||||
.connect {
|
||||
width: min(1120px, calc(100% - 56px));
|
||||
margin: 0 auto 56px;
|
||||
margin: 0 auto 72px;
|
||||
padding: clamp(38px, 6vw, 72px);
|
||||
border-radius: 8px;
|
||||
background: #171512;
|
||||
padding: 56px;
|
||||
background:
|
||||
linear-gradient(135deg, rgba(11, 48, 42, 0.98), rgba(18, 18, 15, 0.98)),
|
||||
#171512;
|
||||
color: #fffaf2;
|
||||
}
|
||||
|
||||
.connect .eyebrow {
|
||||
color: #71d7b8;
|
||||
color: #9dffd0;
|
||||
}
|
||||
|
||||
.connect h2 {
|
||||
max-width: 920px;
|
||||
max-width: 980px;
|
||||
color: #fffaf2;
|
||||
}
|
||||
|
||||
.connect p {
|
||||
max-width: 720px;
|
||||
max-width: 760px;
|
||||
margin-bottom: 0;
|
||||
color: #d8d0c3;
|
||||
font-size: 21px;
|
||||
}
|
||||
|
||||
@media (max-width: 820px) {
|
||||
@media (max-width: 900px) {
|
||||
.topbar {
|
||||
top: 10px;
|
||||
width: calc(100% - 24px);
|
||||
}
|
||||
|
||||
.nav-links a,
|
||||
.language-switch a,
|
||||
.language-switch span {
|
||||
padding: 9px 7px;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.hero {
|
||||
min-height: 86vh;
|
||||
padding: 36px 20px;
|
||||
min-height: 92svh;
|
||||
padding: 94px 20px 34px;
|
||||
}
|
||||
|
||||
.hero-inner {
|
||||
padding-top: 12vh;
|
||||
h1 {
|
||||
font-size: clamp(58px, 18vw, 96px);
|
||||
}
|
||||
|
||||
.section {
|
||||
padding: 64px 20px;
|
||||
}
|
||||
|
||||
.content-grid,
|
||||
.split-band {
|
||||
grid-template-columns: 1fr;
|
||||
gap: 28px;
|
||||
}
|
||||
|
||||
.split-band {
|
||||
width: min(100% - 40px, 1120px);
|
||||
}
|
||||
|
||||
.split-band article {
|
||||
min-height: auto;
|
||||
padding: 28px;
|
||||
}
|
||||
|
||||
.connect {
|
||||
width: min(100% - 40px, 1120px);
|
||||
padding: 32px 24px;
|
||||
}
|
||||
|
||||
p,
|
||||
.intro {
|
||||
font-size: 17px;
|
||||
}
|
||||
|
||||
.stats-strip {
|
||||
width: calc(100% - 40px);
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
}
|
||||
|
||||
.stats-strip div {
|
||||
min-height: 116px;
|
||||
border-bottom: 1px solid rgba(23, 21, 18, 0.1);
|
||||
}
|
||||
|
||||
.stats-strip div:nth-child(2n) {
|
||||
border-right: 0;
|
||||
}
|
||||
|
||||
.stats-strip div:nth-last-child(-n + 2) {
|
||||
border-bottom: 0;
|
||||
}
|
||||
|
||||
.section,
|
||||
.beliefs,
|
||||
.life-band,
|
||||
.connect {
|
||||
width: calc(100% - 40px);
|
||||
}
|
||||
|
||||
.section {
|
||||
padding: 76px 0;
|
||||
}
|
||||
|
||||
.intro-section,
|
||||
.focus-section,
|
||||
.building,
|
||||
.interests,
|
||||
.beliefs,
|
||||
.life-band {
|
||||
grid-template-columns: 1fr;
|
||||
gap: 30px;
|
||||
}
|
||||
|
||||
.section-kicker {
|
||||
position: static;
|
||||
}
|
||||
|
||||
.timeline-section,
|
||||
.question-band {
|
||||
padding-right: 20px;
|
||||
padding-left: 20px;
|
||||
}
|
||||
|
||||
.timeline article {
|
||||
grid-template-columns: 1fr;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.belief-primary {
|
||||
min-height: auto;
|
||||
gap: 34px;
|
||||
}
|
||||
|
||||
.life-band {
|
||||
padding: 32px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 560px) {
|
||||
.nav-links a:nth-child(2),
|
||||
.nav-links a:nth-child(3) {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.hero {
|
||||
background-position: center right 38%;
|
||||
}
|
||||
|
||||
.stats-strip {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
|
||||
.stats-strip div,
|
||||
.stats-strip div:nth-child(2n),
|
||||
.stats-strip div:nth-last-child(-n + 2) {
|
||||
border-right: 0;
|
||||
border-bottom: 1px solid rgba(23, 21, 18, 0.1);
|
||||
}
|
||||
|
||||
.stats-strip div:last-child {
|
||||
border-bottom: 0;
|
||||
}
|
||||
|
||||
.large-copy p,
|
||||
.large-copy,
|
||||
.life-band p:last-child,
|
||||
.connect p {
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
.question-band h2,
|
||||
h2 {
|
||||
font-size: clamp(34px, 11vw, 48px);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
import "./globals.css";
|
||||
|
||||
export const metadata = {
|
||||
title: "Robert Seares",
|
||||
description: "Software engineer, engineering leader, founder, and product builder."
|
||||
};
|
||||
|
||||
export default function RootLayout({ children }) {
|
||||
return (
|
||||
<html lang="en">
|
||||
<body>{children}</body>
|
||||
</html>
|
||||
);
|
||||
}
|
||||
@@ -1,178 +0,0 @@
|
||||
const focusAreas = [
|
||||
"Artificial Intelligence",
|
||||
"Cloud Infrastructure",
|
||||
"Distributed Systems",
|
||||
"Developer Platforms",
|
||||
"Product Engineering",
|
||||
"Startup Operations",
|
||||
"Automation",
|
||||
"Technical Leadership",
|
||||
];
|
||||
|
||||
const values = [
|
||||
"Ownership over bureaucracy",
|
||||
"Speed over perfection",
|
||||
"Simplicity over complexity",
|
||||
"Learning over ego",
|
||||
"Execution over presentations",
|
||||
];
|
||||
|
||||
const interests = [
|
||||
"AI agents and autonomous systems",
|
||||
"Cloud-native platforms",
|
||||
"Scientific computing",
|
||||
"Biotechnology",
|
||||
"Startup strategy",
|
||||
"Developer experience",
|
||||
"Infrastructure automation",
|
||||
"Human-computer collaboration",
|
||||
];
|
||||
|
||||
export default function Home() {
|
||||
return (
|
||||
<main>
|
||||
<section className="hero">
|
||||
<div className="hero-inner">
|
||||
<p className="eyebrow">Software engineer, founder, product builder</p>
|
||||
<h1>Robert Seares</h1>
|
||||
<p className="lede">I build companies, software, and systems.</p>
|
||||
<p className="intro">
|
||||
I am a software engineer, engineering leader, founder, and product
|
||||
builder currently living in Brazil with my wife and two children.
|
||||
Over the last decade I have worked across startups, AI, biotech,
|
||||
consumer products, infrastructure, and automation, always gravitating
|
||||
toward difficult technical problems where software can create
|
||||
outsized leverage.
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section className="section narrative">
|
||||
<div className="content-grid">
|
||||
<div>
|
||||
<p className="eyebrow">Today</p>
|
||||
<h2>Engineering at Ark Biotech</h2>
|
||||
</div>
|
||||
<div className="copy">
|
||||
<p>
|
||||
Today I lead software engineering at Ark Biotech, where I help
|
||||
build the infrastructure, applications, simulation tooling, and AI
|
||||
systems powering next-generation biomanufacturing.
|
||||
</p>
|
||||
<p>
|
||||
My work spans cloud infrastructure, developer platforms,
|
||||
simulation systems, machine learning applications, frontend
|
||||
architecture, backend services, and engineering leadership.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section className="section question-band">
|
||||
<div className="question">
|
||||
<p className="eyebrow">The question</p>
|
||||
<h2>How do we make it dramatically easier for people to build useful things?</h2>
|
||||
<p>
|
||||
That question has led me through projects ranging from AI systems
|
||||
and developer platforms to restaurant software, biotechnology
|
||||
infrastructure, and autonomous agents.
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section className="section">
|
||||
<div className="content-grid">
|
||||
<div>
|
||||
<p className="eyebrow">What I do</p>
|
||||
<h2>Systems that scale from idea to business</h2>
|
||||
</div>
|
||||
<div>
|
||||
<p className="copy lead-copy">
|
||||
I enjoy building systems that can scale from a single user to
|
||||
thousands, and from a proof of concept to a business. My preferred
|
||||
stack is Python, TypeScript, Kubernetes, FastAPI, React,
|
||||
PostgreSQL, cloud-native infrastructure, and AI-powered workflows.
|
||||
</p>
|
||||
<div className="pill-grid">
|
||||
{focusAreas.map((area) => (
|
||||
<span key={area}>{area}</span>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section className="section split-band">
|
||||
<article>
|
||||
<p className="eyebrow">Philosophy</p>
|
||||
<h2>Software should create leverage.</h2>
|
||||
<p>
|
||||
The best technology removes complexity rather than adding it. Great
|
||||
systems are understandable, maintainable, and useful. Great
|
||||
companies solve real problems. Great engineers ship.
|
||||
</p>
|
||||
<ul className="clean-list">
|
||||
{values.map((value) => (
|
||||
<li key={value}>{value}</li>
|
||||
))}
|
||||
</ul>
|
||||
</article>
|
||||
|
||||
<article>
|
||||
<p className="eyebrow">Building</p>
|
||||
<h2>A laptop, an idea, and enough persistence.</h2>
|
||||
<p>
|
||||
Outside of my day job, I spend most of my time building. I have
|
||||
launched products in AI, SaaS, developer tooling, restaurant
|
||||
technology, and automation. Some succeeded, some failed, and all of
|
||||
them taught me something valuable.
|
||||
</p>
|
||||
<p>
|
||||
What keeps me motivated is the same thing that motivated me when I
|
||||
started writing software: the ability to create something from
|
||||
nothing.
|
||||
</p>
|
||||
</article>
|
||||
</section>
|
||||
|
||||
<section className="section">
|
||||
<div className="content-grid">
|
||||
<div>
|
||||
<p className="eyebrow">Life</p>
|
||||
<h2>Countryside of Sao Paulo, Brazil</h2>
|
||||
</div>
|
||||
<div className="copy">
|
||||
<p>
|
||||
When I am not building software, I am spending time with my
|
||||
family, exploring business ideas, studying technology, lifting
|
||||
weights, reading about startups, or working on the next project
|
||||
that probably should not exist but sounds too interesting not to
|
||||
build.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section className="section interests">
|
||||
<div>
|
||||
<p className="eyebrow">Current interests</p>
|
||||
<h2>Problems worth paying attention to</h2>
|
||||
</div>
|
||||
<div className="interest-grid">
|
||||
{interests.map((interest) => (
|
||||
<span key={interest}>{interest}</span>
|
||||
))}
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section className="section connect">
|
||||
<p className="eyebrow">Connect</p>
|
||||
<h2>If you are building something ambitious, I would love to hear about it.</h2>
|
||||
<p>
|
||||
I am always interested in talking with builders, founders, engineers,
|
||||
and people working on difficult problems.
|
||||
</p>
|
||||
</section>
|
||||
</main>
|
||||
);
|
||||
}
|
||||
22
frontend/app/pt/layout.jsx
Normal file
22
frontend/app/pt/layout.jsx
Normal file
@@ -0,0 +1,22 @@
|
||||
import "../globals.css";
|
||||
import { baseMetadata } from "../seo.js";
|
||||
|
||||
export const metadata = {
|
||||
...baseMetadata,
|
||||
alternates: {
|
||||
canonical: "/pt/",
|
||||
languages: {
|
||||
en: "/",
|
||||
"pt-BR": "/pt/",
|
||||
"x-default": "/",
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
export default function PortugueseLayout({ children }) {
|
||||
return (
|
||||
<html lang="pt-BR">
|
||||
<body>{children}</body>
|
||||
</html>
|
||||
);
|
||||
}
|
||||
42
frontend/app/pt/page.jsx
Normal file
42
frontend/app/pt/page.jsx
Normal file
@@ -0,0 +1,42 @@
|
||||
import { profileContent } from "../content.js";
|
||||
import { ProfilePage } from "../ProfilePage.jsx";
|
||||
|
||||
export const metadata = {
|
||||
title: "Robert Seares | Engenheiro de Software, Fundador, Builder de Produto",
|
||||
description:
|
||||
"Robert Seares constroi empresas, software e sistemas em IA, biotecnologia, infraestrutura em nuvem, plataformas para desenvolvedores, produto e automacao.",
|
||||
alternates: {
|
||||
canonical: "/pt/",
|
||||
languages: {
|
||||
en: "/",
|
||||
"pt-BR": "/pt/",
|
||||
"x-default": "/",
|
||||
},
|
||||
},
|
||||
openGraph: {
|
||||
locale: "pt_BR",
|
||||
url: "/pt/",
|
||||
title: "Robert Seares | Engenheiro de Software, Fundador, Builder de Produto",
|
||||
description:
|
||||
"Eu construo empresas, software e sistemas em IA, biotecnologia, infraestrutura, plataformas para desenvolvedores e automacao.",
|
||||
images: [
|
||||
{
|
||||
url: "/og-image.png",
|
||||
width: 1200,
|
||||
height: 630,
|
||||
alt: "Robert Seares - Eu construo empresas, software e sistemas.",
|
||||
},
|
||||
],
|
||||
},
|
||||
twitter: {
|
||||
card: "summary_large_image",
|
||||
title: "Robert Seares | Engenheiro de Software, Fundador, Builder de Produto",
|
||||
description:
|
||||
"Eu construo empresas, software e sistemas em IA, biotecnologia, infraestrutura, plataformas para desenvolvedores e automacao.",
|
||||
images: ["/og-image.png"],
|
||||
},
|
||||
};
|
||||
|
||||
export default function PortugueseHome() {
|
||||
return <ProfilePage content={profileContent.pt} />;
|
||||
}
|
||||
14
frontend/app/robots.js
Normal file
14
frontend/app/robots.js
Normal file
@@ -0,0 +1,14 @@
|
||||
const siteUrl = process.env.NEXT_PUBLIC_SITE_URL || "https://robertseares.com";
|
||||
|
||||
export const dynamic = "force-static";
|
||||
|
||||
export default function robots() {
|
||||
return {
|
||||
rules: {
|
||||
userAgent: "*",
|
||||
allow: "/",
|
||||
},
|
||||
sitemap: `${siteUrl}/sitemap.xml`,
|
||||
host: siteUrl,
|
||||
};
|
||||
}
|
||||
86
frontend/app/seo.js
Normal file
86
frontend/app/seo.js
Normal file
@@ -0,0 +1,86 @@
|
||||
const siteUrl = process.env.NEXT_PUBLIC_SITE_URL || "https://robertseares.com";
|
||||
|
||||
export const baseMetadata = {
|
||||
metadataBase: new URL(siteUrl),
|
||||
title: {
|
||||
default: "Robert Seares | Software Engineer, Founder, Product Builder",
|
||||
template: "%s | Robert Seares",
|
||||
},
|
||||
description:
|
||||
"Robert Seares is a software engineer, engineering leader, founder, and product builder working across AI, biotech, cloud infrastructure, developer platforms, and automation.",
|
||||
applicationName: "Robert Seares",
|
||||
authors: [{ name: "Robert Seares", url: siteUrl }],
|
||||
creator: "Robert Seares",
|
||||
publisher: "Robert Seares",
|
||||
category: "Technology",
|
||||
keywords: [
|
||||
"Robert Seares",
|
||||
"software engineer",
|
||||
"engineering leader",
|
||||
"founder",
|
||||
"product builder",
|
||||
"AI",
|
||||
"biotechnology",
|
||||
"cloud infrastructure",
|
||||
"developer platforms",
|
||||
"automation",
|
||||
"FastAPI",
|
||||
"React",
|
||||
"Kubernetes",
|
||||
"TypeScript",
|
||||
"Python",
|
||||
"Ark Biotech",
|
||||
],
|
||||
alternates: {
|
||||
canonical: "/",
|
||||
languages: {
|
||||
en: "/",
|
||||
"pt-BR": "/pt/",
|
||||
"x-default": "/",
|
||||
},
|
||||
},
|
||||
openGraph: {
|
||||
type: "profile",
|
||||
locale: "en_US",
|
||||
alternateLocale: ["pt_BR"],
|
||||
url: siteUrl,
|
||||
siteName: "Robert Seares",
|
||||
title: "Robert Seares | Software Engineer, Founder, Product Builder",
|
||||
description:
|
||||
"I build companies, software, and systems across AI, biotech, infrastructure, developer platforms, and automation.",
|
||||
images: [
|
||||
{
|
||||
url: "/og-image.png",
|
||||
width: 1200,
|
||||
height: 630,
|
||||
alt: "Robert Seares - I build companies, software, and systems.",
|
||||
},
|
||||
],
|
||||
},
|
||||
twitter: {
|
||||
card: "summary_large_image",
|
||||
title: "Robert Seares | Software Engineer, Founder, Product Builder",
|
||||
description:
|
||||
"I build companies, software, and systems across AI, biotech, infrastructure, developer platforms, and automation.",
|
||||
images: ["/og-image.png"],
|
||||
},
|
||||
icons: {
|
||||
icon: [
|
||||
{ url: "/favicon.ico", sizes: "any" },
|
||||
{ url: "/icon.svg", type: "image/svg+xml" },
|
||||
],
|
||||
apple: [{ url: "/apple-touch-icon.png", type: "image/png" }],
|
||||
},
|
||||
manifest: "/site.webmanifest",
|
||||
robots: {
|
||||
index: true,
|
||||
follow: true,
|
||||
googleBot: {
|
||||
index: true,
|
||||
follow: true,
|
||||
"max-image-preview": "large",
|
||||
"max-snippet": -1,
|
||||
"max-video-preview": -1,
|
||||
},
|
||||
},
|
||||
};
|
||||
35
frontend/app/sitemap.js
Normal file
35
frontend/app/sitemap.js
Normal file
@@ -0,0 +1,35 @@
|
||||
const siteUrl = process.env.NEXT_PUBLIC_SITE_URL || "https://robertseares.com";
|
||||
const lastModified = new Date("2026-06-11T00:00:00.000Z");
|
||||
|
||||
export const dynamic = "force-static";
|
||||
|
||||
export default function sitemap() {
|
||||
return [
|
||||
{
|
||||
url: `${siteUrl}/`,
|
||||
lastModified,
|
||||
changeFrequency: "monthly",
|
||||
priority: 1,
|
||||
alternates: {
|
||||
languages: {
|
||||
en: `${siteUrl}/`,
|
||||
"pt-BR": `${siteUrl}/pt/`,
|
||||
"x-default": `${siteUrl}/`,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
url: `${siteUrl}/pt/`,
|
||||
lastModified,
|
||||
changeFrequency: "monthly",
|
||||
priority: 0.9,
|
||||
alternates: {
|
||||
languages: {
|
||||
en: `${siteUrl}/`,
|
||||
"pt-BR": `${siteUrl}/pt/`,
|
||||
"x-default": `${siteUrl}/`,
|
||||
},
|
||||
},
|
||||
},
|
||||
];
|
||||
}
|
||||
BIN
frontend/public/apple-touch-icon.png
Normal file
BIN
frontend/public/apple-touch-icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 7.4 KiB |
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user