Skip to content

muazdev26/Notsi

Repository files navigation

Notsi Logo

Notsi

A reactive, modern Notes Android application built with SQLDelight and Clean Architecture principles.

CI/CD Kotlin Platform AGP


📱 Screenshots



🛠 Tech Stack & Architecture

Notsi follows Modern Android Development (MAD) practices and uses MVVM with Clean Architecture.


🧪 Testing Strategy

The project is heavily tested across all layers to ensure stability and correctness:

1. Unit Tests (app/src/test)

  • ViewModel Tests: Validates UI logic and state using InstantTaskExecutorRule.
  • Data Source Tests: In-memory integration tests for SQLDelight queries using Robolectric.
  • Mappers: Ensures data conversion between layers is accurate.
  • Libraries:
    • JUnit4 - The fundamental testing framework.
    • Truth - Fluent assertions for Kotlin/Java.
    • Turbine - A small testing library for Kotlin Flow.
    • Robolectric - Industry-standard unit testing framework for Android.
    • Mockito - Mocking framework for unit tests.

2. Instrumented Tests (app/src/androidTest)

  • Fragment Isolation Tests: Testing UI components in isolation using a custom Hilt container.
  • End-to-End (E2E) Tests: Full user flow verification from adding a note to seeing it in the list.
  • Libraries:

🚀 CI/CD Pipeline

The project uses GitHub Actions for automation:

  • Continuous Integration: Every pull request/manual trigger triggers a full test suite run (./gradlew testDebugUnitTest).
  • Continuous Deployment: On successful build and test completion, the debug APK is automatically distributed to Firebase App Distribution for testers.