Mobile client for DigiVault — a digital content marketplace where users can browse, purchase, and sell online courses. Built with React Native CLI and TypeScript.
| Platform | Link | Notes |
|---|---|---|
| Android (Appetize.io) | ▶ Run in browser | No install needed — runs in browser |
| iOS (Appetize.io) | ▶ Run in browser | iPhone 14 Pro simulator |
Login:
test/test
- Features
- Screenshots
- Tech Stack
- Prerequisites
- Installation & Setup
- Running the App
- Project Structure
- Environment Variables
- License
- Browse and search courses by category
- Purchase courses and access them in My Vault
- Wishlist and cart management
- JWT-based authentication (login & registration)
- Seller dashboard — create, edit, and manage course listings
- In-app notifications
- Order history with order details
- User profile management (name, email, password, balance)
- Course reviews and ratings
- Course reporting
Home Search Course details
Cart Wishlist Reviews
Orders Order details
Account Account details Editing
My courses New course
| Category | Library |
|---|---|
| Framework | React Native CLI 0.84 |
| Language | TypeScript 5.8 |
| Navigation | React Navigation 7 (Native Stack + Bottom Tabs) |
| Server state | TanStack React Query 5 |
| Auth | JWT via AsyncStorage |
| Icons | react-native-vector-icons (AntDesign) |
| Environment | react-native-dotenv |
Make sure the following are installed on your machine:
- Node.js >= 22.11.0
- React Native CLI environment (Android Studio / Xcode)
- iOS only: CocoaPods (
sudo gem install cocoapods)
git clone https://github.com/your-org/DigiVaultMobile.git
cd DigiVaultMobilenpm installcp .env.example .envOpen .env and fill in your values:
API_BASE_URL_ANDROID=http://10.0.2.2:5052
API_BASE_URL_IOS=http://localhost:5052Note: Use
http://10.0.2.2:<port>for Android emulators andhttp://localhost:<port>for iOS simulators.10.0.2.2is the loopback alias that routes from the Android emulator to the host machine.
cd ios && pod install && cd ..Start the Metro bundler:
npm startnpm run androidnpm run iosAfter changing
.env, always restart Metro with a cleared cache:npm start -- --reset-cache
src/
├── api/ # HTTP request functions (one file per domain)
│ ├── config.ts # Shared fetch wrapper & auth headers
│ ├── authApi.ts
│ ├── coursesApi.ts
│ └── ...
├── assets/ # Static assets (images, logo)
├── components/ # Reusable UI components
│ ├── CourseCard.tsx
│ ├── StarRating.tsx
│ ├── NotificationBell.tsx
│ └── ...
├── config/ # App-wide constants and theme
│ ├── constants.ts # BASE_URL from environment
│ └── theme.ts # Color palette
├── hooks/ # React Query hooks (data fetching & mutations)
│ ├── useCourses.ts
│ ├── useCart.ts
│ ├── useCurrentUser.ts
│ └── ...
├── navigation/ # Stack & tab navigator setup
│ └── AppNavigator.tsx
├── screens/ # One file per screen
│ ├── HomeScreen.tsx
│ ├── CourseDetailScreen.tsx
│ ├── CartScreen.tsx
│ └── ...
└── types/ # TypeScript interfaces and navigation types
├── course.ts
├── navigation.ts
└── ...
| Variable | Description |
|---|---|
| API_BASE_URL_ANDROID | Backend URL for Android emulator |
| API_BASE_URL_IOS | Backend URL for iOS simulator |
Android emulator — the emulator cannot reach localhost on the host machine directly. Use the special alias instead:
.envis listed in.gitignoreand will never be committed. Use.env.exampleas the source of truth for required variables.












