├── .env.dev.example ├── .env.prod.example ├── .gitignore ├── .vscode └── settings.json ├── README.md ├── alchemy.run.ts ├── biome.json ├── bun.lock ├── components.json ├── drizzle.config.ts ├── index.html ├── package.json ├── public └── preview-screenshot.png ├── src ├── client │ ├── components │ │ ├── footer.tsx │ │ ├── navbar │ │ │ ├── header.tsx │ │ │ ├── loader.tsx │ │ │ ├── theme-toggle.tsx │ │ │ └── user-menu.tsx │ │ └── ui │ │ │ ├── avatar.tsx │ │ │ ├── badge.tsx │ │ │ ├── button.tsx │ │ │ ├── card.tsx │ │ │ ├── dropdown-menu.tsx │ │ │ ├── input-otp.tsx │ │ │ ├── input.tsx │ │ │ ├── label.tsx │ │ │ ├── separator.tsx │ │ │ ├── skeleton.tsx │ │ │ ├── slider.tsx │ │ │ ├── sonner.tsx │ │ │ ├── tanstack-form.tsx │ │ │ └── textarea.tsx │ ├── hooks │ │ ├── use-counter-query.ts │ │ └── use-dual-websocket.ts │ ├── index.css │ ├── lib │ │ ├── api │ │ │ ├── connection-counter.ts │ │ │ └── counter.ts │ │ ├── auth-client.ts │ │ ├── constants.ts │ │ ├── theme-provider.tsx │ │ ├── trpc-client.ts │ │ └── utils.ts │ ├── main.tsx │ ├── routeTree.gen.ts │ └── routes │ │ ├── __root.tsx │ │ ├── _authLayout.tsx │ │ ├── _authLayout │ │ ├── -components │ │ │ └── sign-in-form.tsx │ │ └── sign-in.tsx │ │ ├── _protectedLayout.tsx │ │ ├── _protectedLayout │ │ ├── -components │ │ │ ├── counter │ │ │ │ ├── connection-status.tsx │ │ │ │ ├── counter-controls.tsx │ │ │ │ └── counter-display.tsx │ │ │ ├── guestbook.tsx │ │ │ └── profile.tsx │ │ ├── counter.tsx │ │ ├── guestbook.tsx │ │ └── profile.tsx │ │ └── index.tsx └── server │ ├── db │ ├── index.ts │ ├── migrations │ │ ├── 0000_past_blockbuster.sql │ │ └── meta │ │ │ ├── 0000_snapshot.json │ │ │ └── _journal.json │ ├── schema │ │ ├── auth.ts │ │ └── guestbook.ts │ └── utils.ts │ ├── durable-objects │ ├── connection-counter.ts │ └── counter.ts │ ├── index.ts │ ├── lib │ ├── auth.ts │ ├── constants.ts │ ├── context.ts │ ├── email-templates.ts │ ├── trpc.ts │ └── types.ts │ └── routers │ ├── connection-counter.ts │ ├── counter.ts │ ├── guestbook.ts │ ├── index.ts │ └── user.ts ├── tsconfig.app.json ├── tsconfig.json ├── tsconfig.node.json ├── tsconfig.worker.json ├── types ├── env.d.ts └── vite.d.ts └── vite.config.ts /.env.dev.example: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/.env.dev.example -------------------------------------------------------------------------------- /.env.prod.example: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/.env.prod.example -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/.gitignore -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/.vscode/settings.json -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/README.md -------------------------------------------------------------------------------- /alchemy.run.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/alchemy.run.ts -------------------------------------------------------------------------------- /biome.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/biome.json -------------------------------------------------------------------------------- /bun.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/bun.lock -------------------------------------------------------------------------------- /components.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/components.json -------------------------------------------------------------------------------- /drizzle.config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/drizzle.config.ts -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/index.html -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/package.json -------------------------------------------------------------------------------- /public/preview-screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/public/preview-screenshot.png -------------------------------------------------------------------------------- /src/client/components/footer.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/client/components/footer.tsx -------------------------------------------------------------------------------- /src/client/components/navbar/header.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/client/components/navbar/header.tsx -------------------------------------------------------------------------------- /src/client/components/navbar/loader.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/client/components/navbar/loader.tsx -------------------------------------------------------------------------------- /src/client/components/navbar/theme-toggle.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/client/components/navbar/theme-toggle.tsx -------------------------------------------------------------------------------- /src/client/components/navbar/user-menu.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/client/components/navbar/user-menu.tsx -------------------------------------------------------------------------------- /src/client/components/ui/avatar.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/client/components/ui/avatar.tsx -------------------------------------------------------------------------------- /src/client/components/ui/badge.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/client/components/ui/badge.tsx -------------------------------------------------------------------------------- /src/client/components/ui/button.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/client/components/ui/button.tsx -------------------------------------------------------------------------------- /src/client/components/ui/card.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/client/components/ui/card.tsx -------------------------------------------------------------------------------- /src/client/components/ui/dropdown-menu.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/client/components/ui/dropdown-menu.tsx -------------------------------------------------------------------------------- /src/client/components/ui/input-otp.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/client/components/ui/input-otp.tsx -------------------------------------------------------------------------------- /src/client/components/ui/input.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/client/components/ui/input.tsx -------------------------------------------------------------------------------- /src/client/components/ui/label.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/client/components/ui/label.tsx -------------------------------------------------------------------------------- /src/client/components/ui/separator.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/client/components/ui/separator.tsx -------------------------------------------------------------------------------- /src/client/components/ui/skeleton.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/client/components/ui/skeleton.tsx -------------------------------------------------------------------------------- /src/client/components/ui/slider.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/client/components/ui/slider.tsx -------------------------------------------------------------------------------- /src/client/components/ui/sonner.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/client/components/ui/sonner.tsx -------------------------------------------------------------------------------- /src/client/components/ui/tanstack-form.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/client/components/ui/tanstack-form.tsx -------------------------------------------------------------------------------- /src/client/components/ui/textarea.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/client/components/ui/textarea.tsx -------------------------------------------------------------------------------- /src/client/hooks/use-counter-query.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/client/hooks/use-counter-query.ts -------------------------------------------------------------------------------- /src/client/hooks/use-dual-websocket.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/client/hooks/use-dual-websocket.ts -------------------------------------------------------------------------------- /src/client/index.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/client/index.css -------------------------------------------------------------------------------- /src/client/lib/api/connection-counter.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/client/lib/api/connection-counter.ts -------------------------------------------------------------------------------- /src/client/lib/api/counter.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/client/lib/api/counter.ts -------------------------------------------------------------------------------- /src/client/lib/auth-client.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/client/lib/auth-client.ts -------------------------------------------------------------------------------- /src/client/lib/constants.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/client/lib/constants.ts -------------------------------------------------------------------------------- /src/client/lib/theme-provider.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/client/lib/theme-provider.tsx -------------------------------------------------------------------------------- /src/client/lib/trpc-client.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/client/lib/trpc-client.ts -------------------------------------------------------------------------------- /src/client/lib/utils.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/client/lib/utils.ts -------------------------------------------------------------------------------- /src/client/main.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/client/main.tsx -------------------------------------------------------------------------------- /src/client/routeTree.gen.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/client/routeTree.gen.ts -------------------------------------------------------------------------------- /src/client/routes/__root.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/client/routes/__root.tsx -------------------------------------------------------------------------------- /src/client/routes/_authLayout.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/client/routes/_authLayout.tsx -------------------------------------------------------------------------------- /src/client/routes/_authLayout/-components/sign-in-form.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/client/routes/_authLayout/-components/sign-in-form.tsx -------------------------------------------------------------------------------- /src/client/routes/_authLayout/sign-in.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/client/routes/_authLayout/sign-in.tsx -------------------------------------------------------------------------------- /src/client/routes/_protectedLayout.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/client/routes/_protectedLayout.tsx -------------------------------------------------------------------------------- /src/client/routes/_protectedLayout/-components/counter/connection-status.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/client/routes/_protectedLayout/-components/counter/connection-status.tsx -------------------------------------------------------------------------------- /src/client/routes/_protectedLayout/-components/counter/counter-controls.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/client/routes/_protectedLayout/-components/counter/counter-controls.tsx -------------------------------------------------------------------------------- /src/client/routes/_protectedLayout/-components/counter/counter-display.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/client/routes/_protectedLayout/-components/counter/counter-display.tsx -------------------------------------------------------------------------------- /src/client/routes/_protectedLayout/-components/guestbook.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/client/routes/_protectedLayout/-components/guestbook.tsx -------------------------------------------------------------------------------- /src/client/routes/_protectedLayout/-components/profile.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/client/routes/_protectedLayout/-components/profile.tsx -------------------------------------------------------------------------------- /src/client/routes/_protectedLayout/counter.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/client/routes/_protectedLayout/counter.tsx -------------------------------------------------------------------------------- /src/client/routes/_protectedLayout/guestbook.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/client/routes/_protectedLayout/guestbook.tsx -------------------------------------------------------------------------------- /src/client/routes/_protectedLayout/profile.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/client/routes/_protectedLayout/profile.tsx -------------------------------------------------------------------------------- /src/client/routes/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/client/routes/index.tsx -------------------------------------------------------------------------------- /src/server/db/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/server/db/index.ts -------------------------------------------------------------------------------- /src/server/db/migrations/0000_past_blockbuster.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/server/db/migrations/0000_past_blockbuster.sql -------------------------------------------------------------------------------- /src/server/db/migrations/meta/0000_snapshot.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/server/db/migrations/meta/0000_snapshot.json -------------------------------------------------------------------------------- /src/server/db/migrations/meta/_journal.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/server/db/migrations/meta/_journal.json -------------------------------------------------------------------------------- /src/server/db/schema/auth.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/server/db/schema/auth.ts -------------------------------------------------------------------------------- /src/server/db/schema/guestbook.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/server/db/schema/guestbook.ts -------------------------------------------------------------------------------- /src/server/db/utils.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/server/db/utils.ts -------------------------------------------------------------------------------- /src/server/durable-objects/connection-counter.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/server/durable-objects/connection-counter.ts -------------------------------------------------------------------------------- /src/server/durable-objects/counter.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/server/durable-objects/counter.ts -------------------------------------------------------------------------------- /src/server/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/server/index.ts -------------------------------------------------------------------------------- /src/server/lib/auth.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/server/lib/auth.ts -------------------------------------------------------------------------------- /src/server/lib/constants.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/server/lib/constants.ts -------------------------------------------------------------------------------- /src/server/lib/context.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/server/lib/context.ts -------------------------------------------------------------------------------- /src/server/lib/email-templates.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/server/lib/email-templates.ts -------------------------------------------------------------------------------- /src/server/lib/trpc.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/server/lib/trpc.ts -------------------------------------------------------------------------------- /src/server/lib/types.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/server/lib/types.ts -------------------------------------------------------------------------------- /src/server/routers/connection-counter.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/server/routers/connection-counter.ts -------------------------------------------------------------------------------- /src/server/routers/counter.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/server/routers/counter.ts -------------------------------------------------------------------------------- /src/server/routers/guestbook.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/server/routers/guestbook.ts -------------------------------------------------------------------------------- /src/server/routers/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/server/routers/index.ts -------------------------------------------------------------------------------- /src/server/routers/user.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/src/server/routers/user.ts -------------------------------------------------------------------------------- /tsconfig.app.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/tsconfig.app.json -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/tsconfig.json -------------------------------------------------------------------------------- /tsconfig.node.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/tsconfig.node.json -------------------------------------------------------------------------------- /tsconfig.worker.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/tsconfig.worker.json -------------------------------------------------------------------------------- /types/env.d.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/types/env.d.ts -------------------------------------------------------------------------------- /types/vite.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oscabriel/better-cloud/HEAD/vite.config.ts --------------------------------------------------------------------------------