Full-stack investment platform
Home In Block
A property-investment and tokenization application with server rendering, type-safe routing, authentication, relational data, and production observability.
TypeScript · React 19 · TanStack Start · PostgreSQL · Drizzle ORM · Better Auth
Open build notes
What I built
- Modelled properties, users, transactions, investments, and token holdings in PostgreSQL.
- Kept types aligned across React components, routes, server functions, and database operations.
- Added authentication, seed data, controlled migrations, logging, tracing, and application monitoring.
Build sequence
- Define the ownership, investment, transaction, and token-holding relationships before building screens.
- Generate and review migrations so schema changes remain reproducible between environments.
- Put authenticated reads and writes behind server functions instead of trusting client state.
- Seed representative property and investment data to exercise the complete workflow.
- Instrument requests and database work with Sentry, OpenTelemetry, Grafana, and Loki.
Typical schema workflow
npx drizzle-kit generate
npx drizzle-kit migrate
npm run devFailure modes & troubleshooting
A server-only import reaches the browser bundle.
Separate database helpers from callable server-function wrappers and keep secrets behind the server boundary.
The TypeScript schema and deployed database drift apart.
Generate versioned SQL, inspect the diff, then apply the same migration sequence in every environment.
A protected action is hidden in the UI but still callable.
Repeat authorization at the server-function or middleware boundary; the interface is not a security control.