β¨ A comprehensive e-commerce marketplace platform with React Native mobile app and NestJS backend β¨.
hylo is a full-featured e-commerce marketplace that connects local shops with customers. The platform supports:
- Multi-shop marketplace - Multiple shops can list their products and services
- Product management - Complete product catalog with categories, pricing, and inventory
- Order management - Order processing, tracking, and delivery management
- Location-based services - Shop discovery based on user location
- Payment integration - Secure payment processing
- Real-time features - Live order tracking and notifications
Hereβs how the app looks:
![]() |
![]() |
![]() |
| Dashboard | Feed List | Multi Language - Hindi |
![]() |
![]() |
![]() |
| Multi Language - Malayalam | Search Shop or products | Search Result |
![]() |
![]() |
![]() |
| Product List | Product Details | Cart |
This workspace contains:
- Gravity π - React Native/Expo mobile application for customers
- Zenith π - NestJS backend API server with comprehensive e-commerce features
- Shared Libraries - Reusable UI components, types, and utilities
- Node.js 22.12.0 or higher
- npm or yarn
- For mobile development: Expo CLI, iOS Simulator/Android Emulator
- PostgreSQL with PostGIS extension for location-based features
npm installBefore running the mobile app, you need to update the API base URL in the mobile app:
File: apps/gravity/src/api/base-api.ts
Change the baseURL to match your backend server:
export const baseApi = axios.create({
baseURL: 'http://YOUR_SERVER_IP:3000/api', // Update this
headers: { 'Content-Type': 'application/json' },
});Note: For Expo development, use your computer's local IP address (e.g., 192.168.1.100) instead of localhost.
Create the following environment files in the project root:
.env (Development)
# Database
DATABASE_URL="postgresql://postgres:password@localhost:5432/helios"
# JWT Authentication
JWT_SECRET="your-jwt-secret-key"
# Redis Cache
REDIS_URL="redis://localhost:6379"
# Server Configuration
PORT=3000
NODE_ENV=development
# SMS Service (Optional - for OTP functionality)
# SMS_PROVIDER="twilio"
# TWILIO_ACCOUNT_SID="your-twilio-account-sid"
# TWILIO_AUTH_TOKEN="your-twilio-auth-token"
# TWILIO_PHONE_NUMBER="your-twilio-phone-number"
# Email Service (Optional - for email notifications)
# SMTP_HOST="smtp.gmail.com"
# SMTP_PORT=587
# SMTP_USER="your-email@gmail.com"
# SMTP_PASS="your-app-password"
# Payment Gateway (Optional - for payment processing)
# STRIPE_SECRET_KEY="your-stripe-secret-key"
# STRIPE_PUBLISHABLE_KEY="your-stripe-publishable-key".env.production (Production)
# Database
DATABASE_URL="postgresql://username:password@host:5432/database_name"
# JWT Authentication
JWT_SECRET="your-production-jwt-secret-key"
# Redis Cache
REDIS_URL="redis://host:6379"
# Server Configuration
PORT=3000
NODE_ENV=production
# Enable these in production
# SMS_PROVIDER="twilio"
# TWILIO_ACCOUNT_SID="your-twilio-account-sid"
# TWILIO_AUTH_TOKEN="your-twilio-auth-token"
# TWILIO_PHONE_NUMBER="your-twilio-phone-number"
# SMTP_HOST="smtp.gmail.com"
# SMTP_PORT=587
# SMTP_USER="your-email@gmail.com"
# SMTP_PASS="your-app-password"
# STRIPE_SECRET_KEY="your-stripe-secret-key"
# STRIPE_PUBLISHABLE_KEY="your-stripe-publishable-key"Important:
- Replace placeholder values with your actual configuration
- Commented variables are optional features that can be enabled later
- Keep your
.envfiles secure and never commit them to version control
Start the React Native/Expo development server:
nx run gravity:startThis will start the Expo development server. You can then:
- Press
ito open iOS simulator - Press
ato open Android emulator - Scan the QR code with Expo Go app on your device
Start the NestJS development server:
nx run zenith:serveThe API will be available at http://localhost:3000
# Build mobile app
nx run gravity:build
# Build backend
nx run zenith:build# Run tests for all projects
nx run-many --target=test --all
# Run tests for specific project
nx run gravity:test
nx run zenith:test# Lint all projects
nx run-many --target=lint --all
# Lint specific project
nx run gravity:lint
nx run zenith:lintThe backend uses Prisma for database management:
# Generate Prisma client
nx run prisma:generate --schema=../../../apps/zenith/prisma/
# Create a new migration
nx run prisma:migrate --schema=../../../apps/zenith/prisma/
# Reset database
nx run prisma:reset --schema=../../../apps/zenith/prisma/
# Seed database with dummy data
nx run zenith:prisma-seedRun the entire stack with Docker:
# Build and start all services
nx run zenith:docker-compose-up
# Stop all services
nx run zenith:docker-compose-down
# Build Docker image
nx run zenith:docker-build
# Run Docker container
nx run zenith:docker-runExplore the project dependencies and structure:
# View project graph
nx graph
# View specific project details
nx show project gravity
nx show project zenith# Add React Native support
nx add @nx/react-native
# Add NestJS support
nx add @nx/nest
# Add Expo support
nx add @nx/expo# Generate a new React Native app
nx g @nx/react-native:app my-app
# Generate a new NestJS app
nx g @nx/nest:app my-api
# Generate a new library
nx g @nx/js:lib my-lib- Nx Documentation
- React Native Documentation
- Expo Documentation
- NestJS Documentation
- Prisma Documentation
- Install dependencies:
npm install - Start development servers:
- Mobile:
nx run gravity:start - Backend:
nx run zenith:serve
- Mobile:
- Make your changes
- Run tests:
nx run-many --target=test --all - Submit a pull request
This software is licensed for internal use only by authorized personnel of hylo Technologies Pvt. Ltd.
For license terms, visit: https://hylo.com/license
Project Names Explained:
- Gravity π - The force that keeps everything together, just like your mobile app manages all the user interactions
- Zenith π - Symbolizes the peak, highest point, powering everything from the backend








