A modern mobile application built with React, TypeScript, and Capacitor for Android and iOS platforms.
Darbna is a content management mobile application that provides users with access to educational and informational content. The app features user authentication, content browsing, search functionality, favorites management, and comprehensive accessibility settings.
- User Authentication: Secure login and registration system
- Content Management: Browse, search, and view detailed content
- Category Navigation: Organized content by categories
- Favorites System: Save and manage favorite content
- User Profile: Comprehensive profile management with accessibility settings
- Multi-language Support: English and Arabic (RTL support)
- Accessibility Features:
- Dark mode
- High contrast mode
- Adjustable font sizes
- Screen reader optimization
- Search Functionality: Enhanced search with visual feedback
- Responsive Design: Optimized for mobile devices
- Framework: React 19.2.3 with TypeScript
- Mobile: Capacitor 8.0
- State Management: Redux Toolkit
- Routing: React Router v7
- HTTP Client: Axios
- Forms: React Hook Form
- Internationalization: react-i18next
- UI: Custom CSS with responsive design
- Node.js 18+ and npm
- Android Studio (for Android development)
- Xcode (for iOS development, macOS only)
- Java Development Kit (JDK)
-
Clone the repository
git clone <repository-url> cd Darbna-react
-
Install dependencies
npm install
-
Configure environment
- Update API endpoints in
src/constants/config.ts - Configure Capacitor settings in
capacitor.config.ts
- Update API endpoints in
npm startThis starts the React development server. Open http://localhost:3000 to view it in the browser.
npm run buildThis creates an optimized production build in the build folder.
-
Sync Capacitor
npm run cap:sync
-
Open in Android Studio
npm run cap:open:android
-
Build Debug APK
npm run android:build:debug
-
Build Release APK
npm run android:build
-
Build Release AAB (for Play Store)
cd android && gradlew.bat bundleRelease
-
Sync Capacitor
npm run cap:sync
-
Open in Xcode
npm run cap:open:ios
src/
βββ api/ # API service files
βββ components/ # Reusable React components
β βββ category/ # Category-related components
β βββ common/ # Common UI components
β βββ content/ # Content-related components
βββ constants/ # Configuration constants
βββ hooks/ # Custom React hooks
βββ i18n/ # Internationalization files
βββ navigation/ # Navigation configuration
βββ screens/ # Screen components
β βββ auth/ # Authentication screens
β βββ categories/ # Category screens
β βββ content/ # Content screens
β βββ favorites/ # Favorites screen
β βββ home/ # Home screen
β βββ profile/ # Profile screen
β βββ search/ # Search screen
βββ store/ # Redux store configuration
β βββ slices/ # Redux slices
βββ types/ # TypeScript type definitions
βββ utils/ # Utility functions
Update the API base URL in src/constants/config.ts:
export const API_BASE_URL = 'https://your-api-url.com/api';Configure app settings in capacitor.config.ts:
- App ID:
org.mpdl.darbna - App Name: Darbna
- Version: 2.1.0
The app is configured for release signing. Keystore files are included:
android/key.properties- Keystore configurationandroid/upload-keystore.jks- Signing keystorekey.properties- Root level keystore config (backup)upload-keystore.jks- Root level keystore (backup)
Important:
- The keystore files are provided for Play Store releases
- Keep the keystore file and passwords secure
- You'll need these same files for all future app updates
- Never commit keystore files to public repositories
cd android && gradlew.bat bundleReleaseThe signed AAB file will be generated at:
android/app/build/outputs/bundle/release/app-release.aab
npm run android:buildThe signed APK will be generated at:
android/app/build/outputs/apk/release/app-release.apk
The app supports English and Arabic languages. Translation files are located in:
src/i18n/en.json- English translationssrc/i18n/ar.json- Arabic translations
To add new translations, update the respective JSON files.
The app includes comprehensive accessibility features:
- Font Size: Adjustable (Small, Medium, Large)
- Dark Mode: System-wide dark theme
- High Contrast: Enhanced contrast mode
- Screen Reader: Optimized for screen readers
Accessibility settings are managed in the Profile screen and persist across app sessions.
Run tests with:
npm testnpm start- Start development servernpm run build- Build for productionnpm test- Run testsnpm run cap:sync- Sync web assets to native projectsnpm run cap:copy- Copy web assets to native projectsnpm run cap:open:android- Open Android project in Android Studionpm run cap:open:ios- Open iOS project in Xcodenpm run android:build- Build signed release APKnpm run android:build:debug- Build debug APK
ISC
For technical support or questions, please contact the development team.
- Package Name: org.mpdl.darbna
- Version: 2.1.0
- Version Code: 10
- Platform: Android, iOS (via Capacitor)
Built with β€οΈ using React and Capacitor