SensitiveMinds is a dedicated application created for the needs of a research project conducted by psychology students. Its purpose is to streamline the process of collecting data about patients and conducted visits.
The application was designed as a tool for internal use among project participants. Although it is publicly available on Google Play, its functionality is limited exclusively to logged-in users. Accounts in the application can only be held by persons participating in the project, which ensures complete security and confidentiality of collected data.
- Google Play: SensitiveMinds
- App Store: SensitiveMinds
- Cross-Platform: Native performance on both iOS and Android
- Modern Architecture: Built with React Native 0.78.0 and TypeScript
- State Management: Redux Toolkit for predictable state management
- Authentication: JWT-based authentication with automatic token refresh
- Patient Management: Complete patient tracking and management system
- Visit Management: Therapeutic visit management system
- Therapeutic Exercises: Cognitive exercise progress tracking
- Center Grouping: Organization of patients by therapeutic centers
- Sorting: Advanced patient sorting options
- Patient Information Registration: Recording comprehensive patient data
- Weekly Visit Monitoring: Tracking and managing therapeutic sessions
- Secure Data Storage: Privacy-compliant data protection
- Intuitive Interface: Simple and user-friendly design for easy data entry
SensitiveMinds is a modern tool supporting the data analysis and monitoring process, providing convenience and security for users.
βΉοΈ Note: The application is not intended for general use. Only persons with accounts assigned to the project have login capabilities.
- Framework: React Native 0.78.0
- Language: TypeScript 5.0.4
- State Management: Redux Toolkit 2.6.0, React Redux 9.2.0
- Navigation: React Navigation 7.0.14, Native Stack 7.2.0, Bottom Tabs 7.2.1
- Storage: AsyncStorage 2.1.2
- UI Components: React Native Paper 5.13.1, React Native Elements 0.0.0-edge.2
- Forms: React Native Picker 2.11.0, DateTimePicker 8.3.0
- HTTP Client: Axios 1.8.1
- Authentication: JWT Decode 4.0.0
- Testing: Jest 29.6.3, React Test Renderer 19.0.0
- Linting: ESLint 8.19.0 with React Native config
- Formatting: Prettier 2.8.8
βββ src/ # Source code
β βββ config/ # Application configuration
β β βββ api.ts # API configuration
β βββ screens/ # Application screens
β β βββ Login.tsx # Login screen
β β βββ Nav.tsx # Navigation configuration
β β βββ Patients.tsx # Patient list
β β βββ PatientDetails.tsx # Patient details
β β βββ AddPatientScreen.tsx # Add patient
β β βββ EditPatient.tsx # Edit patient
β β βββ AddVisitScreen.tsx # Add visit
β β βββ EditVisitScreen.tsx # Edit visit
β β βββ VisitDetailsScreen.tsx # Visit details
β βββ store/ # Redux store configuration
β β βββ store.ts # Main store configuration
β β βββ slices/ # Redux slices
β β βββ authSlice.ts # Authentication state
β β βββ patientsSlice.ts # Patient state
β β βββ visitsSlice.ts # Visit state
β βββ types/ # TypeScript type definitions
β βββ utils/ # Utility functions
β βββ MyApi.ts # Hook for API data fetching
βββ android/ # Android-specific configuration
βββ ios/ # iOS-specific configuration
βββ __tests__/ # Test files
βββ public/ # Public assets
- Node.js >= 18
- React Native CLI
- Android Studio (for Android development)
- Xcode (for iOS development, macOS only)
-
Clone the repository
git clone <repository-url> cd SensitiveMinds
-
Install dependencies
npm install
-
For iOS, install CocoaPods
cd ios && pod install && cd ..
The API URL is configured in the src/config/api.ts
file. You can change it according to your needs:
export const API_CONFIG = {
BASE_URL: 'https://your-backend-url.com',
TIMEOUT: 10000,
RETRY_ATTEMPTS: 3,
};
-
Generate a new signing key:
keytool -genkey -v -keystore android/app/my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
-
Set passwords in environment variables or in the
android/gradle.properties
file:MYAPP_RELEASE_STORE_PASSWORD=your_store_password MYAPP_RELEASE_KEY_PASSWORD=your_key_password
IMPORTANT: Never commit actual passwords to the repository!
npm start
- Start React Native development servernpm run android
- Run application on Android device/emulatornpm run ios
- Run application on iOS device/simulatornpm test
- Run Jest testsnpm run lint
- Run ESLint for code quality
The application uses React Native Paper for UI components. Custom styles can be added in:
- Individual component files
- Shared style constants in
src/constants/
- Theme configuration for consistent design
- Display patient list grouped by centers
- Add new patients
- Edit patient data
- Detailed patient information
- Sort by room and bed number
- Add new therapeutic visits
- Edit existing visits
- Track cognitive exercises:
- Memory exercises
- Arithmetic exercises
- Reading exercises
- Stroop Test
- Visit notes
- Secure JWT login
- Automatic token refresh
- Logout with confirmation
The project uses ESLint and Prettier for code quality and formatting:
# Check for linting errors
npm run lint
# Auto-fix linting issues
npx eslint . --fix
Run tests using Jest:
npm test
- All sensitive data (passwords, keys) have been removed from the repository
- Use environment variables for production configuration
- Never commit
.keystore
files or passwords
This project is private and proprietary. All rights reserved.
SensitiveMinds
- Author: Daniel ΕledΕΊ
- Frontend Repository: SensitiveMinds
- Backend Repository: SensitiveMinds Backend
Built with β€οΈ for efficient therapy management
Modern mobile solutions for modern healthcare