Contributing to Network Scanner
February 12, 2026 · View on GitHub
Thank you for your interest in contributing to Network Scanner! We welcome contributions from everyone.
Code of Conduct
- Be respectful and inclusive
- Focus on constructive feedback
- Help create a welcoming environment for all contributors
How Can I Contribute?
Reporting Bugs
Before creating bug reports, please check existing issues to avoid duplicates.
When submitting a bug report, include:
- Device model and Android version
- App version
- Steps to reproduce the issue
- Expected vs actual behavior
- Screenshots (if applicable)
- Logcat output (if possible)
Suggesting Features
Feature suggestions are welcome! Please:
- Check if the feature has already been suggested
- Explain the use case and benefits
- Consider if it aligns with the project's privacy-first philosophy
Pull Requests
- Fork the repository and create your branch from
main - Follow the code style (see below)
- Test your changes thoroughly
- Update documentation if needed
- Write clear commit messages
- Submit a pull request with description of changes
Development Setup
Prerequisites
- Android Studio Hedgehog or later
- JDK 17
- Git
Setup Steps
# Clone your fork
git clone https://github.com/your-username/network-scanner.git
cd network-scanner
# Add upstream remote
git remote add upstream https://github.com/usamaiqb/network-scanner.git
# Create a branch
git checkout -b feature/your-feature-name
Building
# Debug build
./gradlew assembleDebug
# Run tests
./gradlew test
# Run instrumented tests
./gradlew connectedAndroidTest
Code Style
Kotlin Style Guide
Follow Kotlin Coding Conventions:
- Use 4 spaces for indentation
- Use camelCase for variable and function names
- Use PascalCase for class names
- Place opening braces on the same line
- Prefer expression bodies for simple functions
- Use meaningful variable names
Example
class NetworkScanner(private val context: Context) {
fun scanNetwork(): Flow<List<Device>> = flow {
val devices = performScan()
emit(devices)
}
private suspend fun performScan(): List<Device> {
// Implementation
return emptyList()
}
}
Android Best Practices
- Use ViewBinding instead of findViewById
- Follow MVVM architecture pattern
- Use Kotlin Coroutines for async operations
- Handle configuration changes properly
- Request permissions at runtime appropriately
Commit Messages
Write clear and descriptive commit messages:
Short (72 chars or less) summary
More detailed explanatory text, if necessary. Wrap it to about 72
characters. The blank line separating the summary from the body is
critical.
- Bullet points are okay too
- Use present tense ("Add feature" not "Added feature")
- Use imperative mood ("Move cursor to..." not "Moves cursor to...")
Examples
- ✅
Add port scanning timeout option - ✅
Fix crash when WiFi is disabled - ✅
Update device detection algorithm - ❌
fixed stuff - ❌
WIP
Testing
Unit Tests
./gradlew test
Instrumented Tests
./gradlew connectedAndroidTest
Please add tests for new features when possible.
Project Structure
app/
├── src/
│ ├── main/
│ │ ├── java/com/networkscanner/app/
│ │ │ ├── data/ # Data models
│ │ │ ├── network/ # Network scanning logic
│ │ │ ├── ui/ # Activities and fragments
│ │ │ └── util/ # Utility classes
│ │ └── res/ # Resources
│ └── test/ # Unit tests
└── build.gradle.kts
Privacy Guidelines
This is a privacy-focused app. Never add:
- Analytics or tracking libraries
- Ad frameworks
- Data collection of any kind
- Network requests outside local network
- Proprietary dependencies
License
By contributing, you agree that your contributions will be licensed under the GNU General Public License v3.0.
Questions?
Feel free to open an issue for questions or clarifications!
Thank you for contributing! 🎉