Grow is a modern full-stack application platform that brings together web, mobile, and backend services into one unified ecosystem. Whether you're accessing it from your browser, iPhone, or Android device, Grow provides a seamless experience across all platforms.
- Multi-Platform Access: Use Grow on the web through your browser or on your mobile device with native iOS and Android apps
- Secure Authentication: Built-in user authentication and authorization to keep your data safe
- Real-Time Data: All your information is synchronized across devices in real-time
- Modern Interface: Clean, responsive design that works beautifully on any screen size
- Type-Safe Architecture: Built with TypeScript to ensure reliability and catch errors before they reach users
Grow is built with a modern technology stack designed for performance, scalability, and developer productivity:
- Web: Next.js 16 with React 19 for fast, SEO-friendly web applications
- Mobile: React Native with Expo for native iOS and Android experiences
- Styling: TailwindCSS for consistent, responsive design across platforms
- UI Components: shadcn/ui for web, heroui-native for mobile
- API Server: NestJS with Express for robust, scalable backend services
- Database: PostgreSQL with Drizzle ORM for reliable data management
- Authentication: Better Auth for secure user authentication
- Type Safety: TS-REST for end-to-end type-safe API contracts
- Monorepo: Turborepo for efficient multi-package development
- Package Manager: pnpm for fast, disk-efficient dependency management
- Code Quality: Oxlint and Oxfmt for consistent code formatting and linting
- Testing: Vitest and MSW for comprehensive testing coverage
Prerequisites: Node.js 18+, pnpm 10+, Docker (for PostgreSQL)
-
Install dependencies
pnpm install
-
Set up the database
# Start PostgreSQL container pnpm run db:start # Push database schema pnpm run db:push
-
Configure environment variables
- Copy
.env.exampleto.envinapps/server/ - Update with your database credentials
- Copy
-
Start development servers
# Start all applications pnpm run dev # Or start individually pnpm run dev:web # Web app on http://localhost:3001 pnpm run dev:server # API server on http://localhost:3000 pnpm run dev:native # Mobile app with Expo
grow/
├── apps/
│ ├── web/ # Next.js web application
│ ├── native/ # React Native mobile app (Expo)
│ └── server/ # NestJS API server
├── packages/
│ ├── api/ # Shared API contracts (TS-REST)
│ ├── auth/ # Authentication logic (Better Auth)
│ ├── db/ # Database schema & queries (Drizzle)
│ ├── env/ # Environment variable validation
│ └── config/ # Shared configurations
# Development
pnpm run dev # Start all apps
pnpm run build # Build all apps
pnpm run check-types # Type check all workspaces
# Database
pnpm run db:studio # Open Drizzle Studio
pnpm run db:generate # Generate migrations
pnpm run db:migrate # Run migrations
# Code Quality
pnpm run check # Lint and format code- Monorepo: Turborepo manages multiple apps and shared packages efficiently
- Type Safety: End-to-end type safety from database to UI using TypeScript, Drizzle, and TS-REST
- Shared Logic: Business logic in
@grow/apiis consumed by all applications - Workspace Protocol: Packages reference each other using
workspace:*for seamless development
This project was bootstrapped with Better Fullstack
