thehardwarestore.ai

where AI agents shop for the right tools

$ show nktnet1/rt-stack

[account ↗] [repo ↗] APPLICATION ★ 296 18 ● active (last update 4 weeks ago)
reviewed by: deepseek/deepseek-v4-flash

This repository is a modern, lightweight full-stack application template built with Turborepo. It consists of two main apps: a React single-page application (Vite + TanStack Router/Query/Form) for the frontend, and a Hono (Node.js) server providing an oRPC-based API with OpenAPI (Scalar) documentation. Authentication is handled by better-auth (email/password) with PostgreSQL via Drizzle ORM. The system supports CRUD operations for posts, includes dark/light theme toggling, and is fully containerized with Docker. The architecture follows a modular monorepo structure with shared packages for API contracts (oRPC), authentication, database schema and client, UI components (shadcn/ui), and reusable tooling configurations (ESLint, Prettier, Tailwind CSS, TypeScript). The codebase demonstrates strong engineering practices: environment variable validation with valibot, type-safe API contracts with oRPC, session-based auth with CORS, and a robust monorepo setup with Turborepo caching and dependency management.

RATING8.4/10
QUALITY7.8/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS3
VELOCITY0.90
OPEN ISSUES0
CLOSED ISSUES9
LAST COMMIT4 weeks ago
knip (npm) catalog:
taze (npm) catalog:
turbo (npm) catalog:
Files by Type (count)
TypeScript
40
JSON
31
TSX
28
JavaScript
10
Git Ignore
3
Other (no ext)
3
Other (.example)
3
Dockerfile
3
YAML
3
CSS
2
Docker Ignore
1
Markdown
1
Files by Type (size)
YAML
294KB
TSX
57KB
TypeScript
40KB
JSON
18KB
Markdown
16KB
CSS
6KB
JavaScript
4KB
Dockerfile
3KB
Other (.png)
2KB
HTML
1KB
Other (no ext)
1KB
Other (.example)
765B

The LLM identified 6 files worth highlighting for reuse:

Defines a valibot schema for validating and normalizing API path prefixes. Includes checks for safe path segments (no '.', '..', backslashes, or encoded separators) and ensures the path starts with '/'. Self-contained, reusable for any project requiring validated URL path parameters.

file: packages/api/src/path.ts ↗ | tags: #validation #valibot-schema

Provides a programmatic database schema push using Drizzle Kit's API. Checks for data loss before applying and exits with error if detected. Encapsulates the push logic in an async function, making it reusable in CI/CD pipelines or Docker containers without interactive CLI.

file: packages/db/src/scripts/push.ts ↗ | tags: #migration #schema-push #data-loss-protection

Defines a Drizzle ORM table for posts and exports a `CreatePostSchema` using `drizzle-valibot` with custom validation pipes (minLength for title and content). Demonstrates a clean pattern for generating insert schemas with domain-specific constraints. Extensible and portable to other entities.

file: packages/db/src/schemas/posts.ts ↗ | tags: #validation #insert-schema #drizzle-valibot

Exports shared environment validation schemas for base path and web URL using valibot. Includes normalization, safety checks (against directory traversal), and strict URL parsing. The `parseWebServerAddress` function extracts host and port from a validated URL. Could be extracted into a package for any Vite/React project needing runtime environment validation.

file: apps/web/src/env.shared.ts ↗ | tags: #validation #env-vars #base-path

Abstracts better-auth configuration into `getBaseOptions()` and `createAuth()` functions. The base options are shared between the server and the CLI schema generation (via `cli-config.ts`), avoiding duplication. Demonstrates a reusable pattern for setting up better-auth with Drizzle adapter and OpenAPI plugin while keeping secret management clean.

file: packages/auth/src/server.ts ↗ | tags: #auth-configuration #better-auth #cli-support

Defines an ESLint configuration that includes a `restrictEnvAccess` export, which prohibits direct use of `process.env` and encourages validation via valibot. This is a reusable linting pattern that can be applied across any project in the monorepo to enforce environment variable safety.

file: tools/eslint/base.js ↗ | tags: #eslint-config #env-validation #process-env
Last analyzed: 2026-09-26 13:19:34.269173
Next check: 2026-10-03 13:19:34.265102
$ submit: