empathize-with-others
⚠️ IMPORTANT NOTICE
Disclaimer
This is a personal learning project. The developer makes NO warranties or guarantees regarding this application. Use at your own risk.
- ❌ No Warranty: This software is provided "as is" without warranty of any kind
- ❌ No Liability: The developer assumes no responsibility for any issues, damages, or consequences arising from the use of this application
- ⚠️ Potential Bugs: This project may contain bugs, security vulnerabilities, or other defects
- 📚 Educational Purpose: This is a practice project for learning Android development
Privacy & Data Security
Important information about data handling:
- 🏠 Local-Only Architecture: This app runs entirely on your device with NO backend server
- 💾 Local Data Storage: All data (chat history, contact information, tags, etc.) is stored locally on your device
- 🔐 Your Responsibility: You are responsible for securing your device and the data stored on it
- 🌐 API Communication: Data is only transmitted when you make requests to third-party AI APIs (OpenAI, DeepSeek, etc.)
- ⚠️ Sensitive Information: This app may process sensitive information including chat messages and contact details. Use with caution and ensure you have appropriate permissions to process such data
By using this application, you acknowledge that:
- You understand this is an experimental learning project
- You accept all risks associated with its use
- You are responsible for complying with applicable privacy laws and regulations
- You will not hold the developer liable for any issues or damages
A privacy-first Android social communication assistant that helps users better understand and respond to social scenarios through AI technology.
✨ Core Features
- 🔒 Privacy First: Zero-backend architecture with all data stored locally
- 🔑 Bring Your Own Key (BYOK): Support for 7+ AI providers including OpenAI, DeepSeek, and more
- 🎯 Local First: High-frequency operations use local rules for zero-latency response
- 🏗️ Clean Architecture: Strict multi-module architecture with pure Kotlin domain layer
- 🎨 Material Design 3: Modern Jetpack Compose UI
🏛️ Architecture
The project adopts Clean Architecture + MVVM multi-module architecture:
:domain/ # Pure Kotlin - Business models, UseCases, Repository interfaces
:data/ # Android Library - Room, Retrofit, Repository implementations
:presentation/ # Android Library - Compose UI, ViewModels
:app/ # Application - Entry point, Android services
Dependency Rules
appdepends ondataandpresentationdataandpresentationdepend ondomaindomainlayer is pure Kotlin with NO Android SDK dependencies
Data Flow
UI → ViewModel → UseCase → Repository (Interface) → Repository (Impl) → Data Source
Tech Stack
- Language: Kotlin 2.0.21 (K2 Compiler)
- Build Tool: Gradle 8.13 + Kotlin DSL
- UI Framework: Jetpack Compose (BOM 2024.12.01) + Material 3
- Dependency Injection: Hilt 2.52
- Database: Room 2.6.1 (Schema v16)
- Networking: Retrofit 2.11.0 + OkHttp 4.12.0
- Async: Kotlin Coroutines 1.9.0 + Flow
🚀 Quick Start
Requirements
- Android Studio Ladybug | 2024.2.1 or higher
- JDK 17
- Android SDK 34
- Gradle 8.13
Setup
- Clone the repository
git clone https://github.com/yourusername/empathy-ai.git
cd empathy-ai
- Configure SDK path
# Copy example configuration
cp local.properties.example local.properties
# Edit local.properties and set your Android SDK path
# Windows: sdk.dir=C\:\\Users\\YourUsername\\AppData\\Local\\Android\\Sdk
# macOS/Linux: sdk.dir=/Users/YourUsername/Library/Android/sdk
- Build the project
# Windows
.\gradlew assembleDebug
# macOS/Linux
./gradlew assembleDebug
- Run the app
# Install to device
.\gradlew installDebug
# Or run directly in Android Studio
Configure AI Provider
On first launch, you need to configure an AI provider:
- Go to Settings → AI Configuration
- Click "Add Provider"
- Select provider type (OpenAI, DeepSeek, etc.)
- Enter your API key
- Set as default provider
📱 Main Features
- AI Advisor: Analyze chat context and provide communication suggestions
- Contact Profiles: Intelligently record and analyze contact information
- Tag System: Manage landmine tags and strategy tags
- Floating Window: System-level floating window for quick access
- Privacy Protection: Data desensitization engine to protect sensitive information
- Prompt Management: Customize AI prompt templates
🧪 Testing
# Run all unit tests
.\gradlew test
# Run specific module tests
.\gradlew :domain:test
.\gradlew :data:test
.\gradlew :presentation:test
# Run Android tests (requires connected device)
.\gradlew connectedAndroidTest
🤝 Contributing
We welcome contributions! Here's how you can help:
Getting Started
- Fork the repository and clone your fork
- Create a feature branch from
maingit checkout -b feature/your-feature-name - Read the documentation
- CLAUDE.md - Project overview and development guidelines
- WORKSPACE.md - Task coordination and conflict prevention
Development Guidelines
Code Style
- Follow Kotlin coding conventions
- Use meaningful variable and function names
- Keep functions small and focused
- Run
.\gradlew ktlintCheckbefore committing
Architecture Rules
- Respect module boundaries (see architecture section)
- Domain layer must remain pure Kotlin (no Android dependencies)
- Use
StateFlowfor state management - Use
Result<T>for error handling - Use
viewModelScopein ViewModels, neverGlobalScope
Database Changes
- Room schema changes MUST include migration scripts
- Add migration tests
- Update schema version in
gradle.properties
Testing
- Write unit tests for business logic
- Test coverage for critical paths
- Run tests before submitting PR
Commit Messages
- Use conventional commits format:
type(scope): description - Types:
feat,fix,docs,style,refactor,test,chore - Example:
feat(domain): add contact profile use case
- Use conventional commits format:
Submitting Changes
Ensure all tests pass
.\gradlew test .\gradlew lintCommit your changes
git add . git commit -m "feat(scope): your feature description"Push to your fork
git push origin feature/your-feature-nameCreate a Pull Request
- Provide a clear description of the changes
- Reference any related issues
- Ensure CI checks pass
Areas for Contribution
- 🐛 Bug fixes
- ✨ New features (check issues for feature requests)
- 📝 Documentation improvements
- 🌐 Translations
- 🧪 Test coverage improvements
- ♿ Accessibility enhancements
Code Review Process
- All submissions require review
- Maintainers will provide feedback
- Address review comments
- Once approved, your PR will be merged
📖 Documentation
🐛 Reporting Issues
Found a bug? Please create an issue with:
- Clear description of the problem
- Steps to reproduce
- Expected vs actual behavior
- Device/OS information
- Relevant logs or screenshots
📄 License
This project is licensed under the Apache License 2.0.
🙏 Acknowledgments
Thanks to all open source contributors, especially:
Note: This project is for learning and research purposes only. Please comply with the terms of service of relevant AI providers.
