Novix is a modern, feature-rich Android app for discovering, tracking, and managing your favorite movies and TV shows β built with the latest Android technologies.
Category | Features |
---|---|
π Search & Discovery | Search movies, TV shows, and actors with instant results |
π€ User Profiles | Secure authentication, personal ratings, and viewing history |
π Watchlists | Create, manage, and share custom watchlists |
π Actor Details | Filmography, photos, and career highlights |
π¬ Episode Tracking | Track seasons and episodes |
π Themes | Light/Dark mode with Material 3 design |
π Languages | Multi-language support for global users |
π‘ Content Safety | ML-powered moderation and parental controls |
π Offline Mode | Cached data for browsing without internet |
Novix follows Clean Architecture principles with a multi-module approach for scalability and maintainability.
βββββββββββββββββββββββββββββββββββββββββββββββββββ
β Presentation Layer β
βββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Domain Layer β
βββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Data Layer β
β βββββββββββββββ βββββββββββββββββββββββββββ β
β β Remote β β Local Data Source β β
β β Data Source β β βββββββββββββββββββββ β β
β β β β β Cache β β β
β β β β βββββββββββββββββββββ β β
β βββββββββββββββ βββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββ
Module | Description |
---|---|
app |
Application entry point and dependency injection |
presentation |
UI layer with Jetpack Compose screens and ViewModels |
domain |
Business logic, use cases, and domain entities |
data |
Data management, repositories, and API communication |
designSystem |
Reusable UI components and theming |
ImageHaramBlur |
Content moderation with ML-based image filtering |
buildSrc |
Build configuration |
- Android Studio Arctic Fox or later
- JDK 11 or higher
- Android SDK 21+
- TMDb API Key (required for movie data)
-
Clone the repository
git clone https://github.com/LondonSquad/Novix.git cd Novix
-
Configure API Keys
Create a
local.properties
file in the root directory with your TMDb API credentials:# TMDb API Configuration API_KEY="your_tmdb_api_key_here"
-
Release Signing Configuration (Optional)
For release builds, add signing configuration to
local.properties
:# Release Signing keyAlias=your_key_alias keyPassword=your_key_password storePassword=your_store_password storeFile=../path_to_your_keystore.jks
-
Build and Run
# Debug build ./gradlew assembleDebug ./gradlew installDebug # Run tests ./gradlew test # Generate coverage report (requires 80%+ coverage) ./gradlew koverReport # Release build ./gradlew assembleRelease
- Minimum SDK: API 21 (Android 5.0)
- Target SDK: API 36 (Android 14+)
- Compile SDK: API 36
- JDK: Version 17
- Gradle: 8.11.1
- Kotlin: 2.0.21
Novix/
βββ app/ # Application module
βββ buildSrc/ # Build configuration
βββ data/ # Data layer (repositories, APIs)
βββ domain/ # Business logic and entities
βββ presentation/ # UI layer with Compose screens
βββ designSystem/ # Reusable UI components
βββ feature/
β βββ ImageHaramBlur/ # Content moderation feature
βββ scripts/ # Git hooks and automation
βββ .github/ # CI/CD workflows
- Kotlin 2.0.21 - Modern programming language with latest features
- Jetpack Compose 2025.07.00 - Cutting-edge declarative UI toolkit
- Coroutines 1.10.2 - Advanced asynchronous programming
- Hilt 2.57 - Robust dependency injection framework
- KSP 2.0.21 - Kotlin Symbol Processing for faster builds
- MVVM - Model-View-ViewModel architecture pattern
- Clean Architecture - Separation of concerns with clear boundaries
- Multi-Module Architecture - Scalable modular design
- Repository Pattern - Data layer abstraction
- Use Cases - Business logic encapsulation
- Retrofit 3.0.0 - Type-safe HTTP client
- OkHttp 4.12.0 - Efficient HTTP & HTTP/2 client
- Room 2.7.2 - Robust SQLite abstraction layer
- DataStore 1.1.7 - Modern preference storage
- Kotlin Serialization - Fast JSON parsing
- Paging 3 - Efficient data pagination
- Material Design 3 - Latest Google design system
- Custom Design System - Consistent UI components
- Lottie 6.6.7 - Rich animations and micro-interactions
- Coil 2.7.0 - Efficient image loading and caching
- ConstraintLayout Compose - Advanced layouts
- Firebase Performance Monitoring - App performance tracking
- Firebase Crashlytics - Crash reporting and analytics
- Firebase Analytics - User behavior insights
- Firebase ML Model Downloader - Dynamic ML model updates
- JUnit 5 - Modern unit testing framework
- MockK 1.14.4 - Kotlin-first mocking library
- Truth 1.4.4 - Fluent assertion library
- Turbine 1.2.1 - Flow testing utilities
- Kover 0.9.1 - Code coverage analysis (80%+ requirement)
- TensorFlow Lite 2.17.0 - On-device ML inference
- TensorFlow Lite Support 0.5.0 - ML model utilities
- Custom Content Moderation - Advanced image filtering algorithms
- Face Detection - Privacy-focused content filtering
- Gradle 8.11.1 - Advanced build system
- GitHub Actions - CI/CD pipeline automation
- Firebase App Distribution - Beta app distribution
- ProGuard/R8 - Code optimization and obfuscation
- Git Hooks - Code quality enforcement
Role | Responsibility | Status |
---|---|---|
ποΈ Architecture Lead | System design, modularization structure | β Completed |
π¨ Design System Engineer | UI/UX components, theming implementation | β Completed |
π§ DevOps Engineer | CI/CD pipeline, Firebase integration | β Completed |
π§ͺ QA Engineer | Testing framework, 80%+ coverage enforcement | β Completed |
π± Mobile Developers | Feature implementation, code reviews | β Completed |
Thanks to all the amazing people who contributed to this project π
We follow strict development standards to maintain code quality:
# Before contributing
git clone https://github.com/LondonSquad/Novix.git
cd Novix
# Install git hooks for code quality
./gradlew configureGitHooks
# Run quality checks
./gradlew detekt # Static analysis
./gradlew test # Unit tests
./gradlew koverReport # Coverage report (must be 80%+)
Contribution Guidelines:
- π Code Review: All PRs require team review
- β Testing: Maintain 80%+ test coverage
- π Documentation: Update README for new features
- ποΈ Architecture: Follow Clean Architecture principles
- π¨ UI: Use design system components only
Pipeline | Status | Description |
---|---|---|
Build Verification | β Active | Ensures code compiles before merge |
Test Coverage | β Active | Blocks merge if coverage < 80% |
Static Analysis | β Active | Detekt code quality checks |
Firebase Distribution | β Active | Auto-deploy to beta testers |
- Test Coverage: 85%+ (exceeds 80% requirement)
- Build Success Rate: 98%
- Firebase Crash-Free Rate: 99.5%
- Performance Score: 95/100
π Complete Third-Party Dependencies (Click to expand)
// Compose BOM 2025.07.00 - Latest Compose components
androidx - compose - bom = "2025.07.00"
androidx - ui = "1.8.3"
androidx - material3 = "1.3.2"
androidx - navigation - compose = "2.9.2"
androidx - constraintlayout - compose = "1.1.1"
// UI Utilities
coil - compose = "2.7.0" // Image loading
lottie - compose = "6.6.7" // Animations
remember - preference = "1.1.1" // Preference management
// Dependency Injection
hilt - android = "2.57"
hilt - navigation - compose = "1.2.0"
// Architecture Components
androidx - core - ktx = "1.16.0"
// Networking
retrofit = "3.0.0"
okhttp = "4.12.0"
kotlinx - serialization = "1.8.1"
// Local Storage
androidx - room = "2.7.2"
androidx - datastore = "1.1.7"
// Pagination
androidx - paging = "3.4.0-alpha01"
androidx - paging - runtime = "3.3.6"
// Firebase Platform
firebase - bom = "33.16.0"
firebase - crashlytics = "19.4.4"
firebase - analytics = "22.5.0"
firebase - perf = "21.0.5"
firebase - ml - modeldownloader = "25.0.1"
// Coroutines & Reactive
kotlinx - coroutines = "1.10.2"
kotlinx - datetime = "0.6.0"
// TensorFlow Lite
tensorflow - lite = "2.17.0"
tensorflow - lite - support = "0.5.0"
// Unit Testing
junit - jupiter = "5.13.3"
mockk = "1.14.4"
truth = "1.4.4"
turbine = "1.2.1" // Flow testing
kotlinx - coroutines - test = "1.8.1"
// Android Testing
androidx - junit = "1.2.1"
androidx - espresso = "3.6.1"
androidx - ui - test = "1.8.3"
// Build & Analysis
kotlin = "2.0.21"
agp = "8.11.1"
ksp = "2.0.21-1.0.27"
kotlinx - kover = "0.9.1" // Coverage analysis
timber = "5.0.1" // Logging
gson = "2.13.1" // JSON parsing
// Gradle Plugins
android - application = "8.11.1"
kotlin - compose = "2.0.21"
kotlin - serialization = "2.0.21"
google - firebase = "1.4.2"
google - services = "4.4.3"
hilt = "2.57"
- Browse trending movies and TV shows
- Search by title, genre, or actor
- Secure authentication system
- Profile customization
- Viewing history tracking
- Personal ratings and reviews
- Create custom watchlists
- Add/remove content from lists
- Share lists with friends
- Detailed actor profiles
- Complete filmography
- Photo galleries
- Career highlights
- Season and episode tracking
- Episode details and ratings
- Watch progress synchronization
- Season-wise navigation
- Dark/Light theme toggle
- Language preferences
- Content filtering options
- Local data storage priority
- Minimal data collection
- Transparent privacy practices
- Content filtering for family safety
- Efficient image loading and caching
- Smooth scrolling and animations
- Optimized for low-end devices
- Battery-conscious implementation
- Consistent design system
- Adaptive layouts for all screen sizes
- Accessibility-first approach
- Intuitive user interactions
- ML-powered content moderation
- Parental control features
- Age-appropriate content filtering
- Community reporting system
MIT License
Copyright (c) 2025 London Squad - Novix Team
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Building the future of entertainment discovery