This is my TypeScript full-stack best practice project. After defining data models, you can directly operate the database from the frontend without writing backend API code, enabling rapid MVP development.
I'm really tired of writing traditional admin pages and don't want to do it anymore.
https://deepwiki.com/2234839/TsFullStack
-
Backend
- Tech stack: ts + prisma + zenstack + Effect + fastify
- Zenstack (an enhanced solution based on prisma) for database modeling and Row Level Security.
-
Bridge
- Tech stack: ts + superjson + self-developed RPC library
- Frontend can directly call backend APIs with full TypeScript type hints, eliminating the need for middleware code.
- Superjson supports complex object serialization/deserialization (Date, Map, Set, RegExp, etc.), ensuring seamless transfer of prisma parameters and results.
-
Frontend
- Tech stack: ts + vue3 + tailwindcss + primevue component library
- Perfect i18n internationalization support with dynamic language switching without page reload.
- Light/dark theme switching with synchronized component and tailwindcss support.
- Implemented feature pages:
Other application examples
- Browser Extension - InfoFlow
- Built with https://wxt.dev/guide/installation.html to demonstrate using tsfullstack as backend support for browser extensions.
- Clone the project
- Install dependencies: Enter backend directory and run
pnpm i
(ignore errors: Failed to resolve entry for package "tsfullstack-backend", we'll generate this package in later steps) - Initialize database: In backend directory, run
pnpm zenstack generate
andpnpm prisma migrate dev
- Build tsfullstack-backend api package: In backend directory run
pnpm build:lib
(some TypeScript errors may appear but won't affect usage) - Start backend service: In backend directory run
pnpm dev
- Start frontend service: In website-frontend directory run
pnpm dev