Prerequisites
Before installing Rippler, make sure you have the following tools installed on your system.Node.js & npm
Node.js & npm
Required Version: Node.js 18+ with npm 9+Check your current versions:Install Node.js:
- Download from nodejs.org
- Or use a version manager like nvm:
Git
Git
Required for: Cloning the repositoryCheck if installed:Install Git:
- macOS:
brew install gitor download from git-scm.com - Linux:
sudo apt-get install git(Ubuntu/Debian) orsudo yum install git(CentOS/RHEL) - Windows: Download from git-scm.com
Expo CLI
Expo CLI
Not required for installation - Expo CLI is included as a project dependency.The app uses
npx expo commands which automatically use the correct version from node_modules.PostgreSQL (Optional)
PostgreSQL (Optional)
Required for: Server-side data persistence (optional for client-only development)Check if installed:Install PostgreSQL:
- macOS:
brew install postgresql@15thenbrew services start postgresql@15 - Linux:
sudo apt-get install postgresql postgresql-contrib - Windows: Download from postgresql.org
You can skip PostgreSQL setup if you only want to run the mobile app. AsyncStorage handles all client-side persistence.
Platform-Specific Setup
Choose your development platform(s). You can set up multiple platforms on the same machine.- iOS (macOS only)
- Android
- Web
iOS Development Setup
Install Xcode
Download Xcode from the Mac App Store (15GB+, takes 30+ minutes).After installation, open Xcode and accept the license agreement.Install command line tools:
Install iOS Simulator
Open Xcode → Settings → PlatformsDownload the iOS simulator runtime for your target iOS version (iOS 17+ recommended).
Verify iOS Setup
Test that the simulator works:Project Installation
Now that your development environment is ready, let’s install Rippler.Install Dependencies
Install all npm packages:This installs:
- Expo SDK and React Native
- React Navigation and UI libraries
- TanStack Query for state management
- Express server dependencies
- TypeScript and development tools
Installation may take 2-5 minutes depending on your internet speed.
Configure Environment Variables
Create a Configuration Details:
.env file in the project root:.env
DATABASE_URL: PostgreSQL connection string (optional for client-only dev)PORT: Express server port (defaults to 5000)REPLIT_*: Only needed if deploying to Replit
Set Up Database (Optional)
If you want to use the PostgreSQL backend:The schema is defined in
shared/schema.ts:shared/schema.ts
Currently the database is only used for user management. Workout data is stored in AsyncStorage on the client.
Development Servers
Rippler has two separate processes: the Expo dev server (client) and Express server (backend).Start the Expo Dev Server
Start the React Native app with hot reloading:What these environment variables do
What these environment variables do
EXPO_PACKAGER_PROXY_URL: Proxy for Metro bundler (Replit-specific)REACT_NATIVE_PACKAGER_HOSTNAME: Metro hostname for mobile devicesEXPO_PUBLIC_DOMAIN: Backend API URL accessible from the app
--localhost is sufficient.- Press
i→ Open iOS simulator - Press
a→ Open Android emulator - Press
w→ Open web browser - Press
r→ Reload app - Press
m→ Toggle menu - Press
j→ Open debugger
Start the Express Server (Optional)
In a separate terminal, start the backend:- Express API routes
- CORS configuration for Expo
- Static file serving for production builds
- Request logging middleware
server/index.ts
The server is optional for client development. The mobile app works entirely with AsyncStorage without a backend.
Project Configuration
Understanding the key configuration files:Key Features Explained
New Architecture Enabled
New Architecture Enabled
Rippler uses React Native’s new architecture:Benefits:
app.json
- Faster rendering with synchronous layout
- Better interop between JS and native code
- Improved type safety with TurboModules
React Compiler (Experimental)
React Compiler (Experimental)
Rippler enables the experimental React Compiler:The React Compiler automatically memoizes components and values, eliminating the need for manual
app.json
useMemo and useCallback in many cases.Path Aliases
Path Aliases
Import from anywhere with clean paths:Configured in
tsconfig.json and babel.config.js.Drizzle ORM
Drizzle ORM
Type-safe database queries with Drizzle:Schema migrations with:
Troubleshooting
npm install fails with peer dependency warnings
npm install fails with peer dependency warnings
Peer dependency warnings are normal with React Native. As long as the install completes, you can ignore them.If install fails completely, try:
Metro bundler can't resolve @/* imports
Metro bundler can't resolve @/* imports
Clear Metro cache and restart:If that doesn’t work, check that
babel.config.js has the module-resolver plugin configured correctly.iOS simulator doesn't open
iOS simulator doesn't open
Make sure Xcode is fully installed and you’ve accepted the license:Check available simulators:
Android emulator shows 'Could not connect to development server'
Android emulator shows 'Could not connect to development server'
The emulator can’t reach Metro. Try:Or use tunnel mode:
Database connection fails
Database connection fails
Verify PostgreSQL is running:Test connection:Check your
.env file has the correct DATABASE_URL.Next Steps
Architecture Overview
Learn how Rippler is structured and how components interact
API Reference
Explore the storage APIs, hooks, and type definitions
Component Library
Browse all reusable UI components with examples
Development Scripts
Learn about available npm scripts and development workflow
Installation complete! You now have a fully configured Rippler development environment. Start the dev servers and begin building.