Mamaβs Kitchen is a high-performance Android application built to demonstrate the pinnacle of Modern Android Development (MAD). It offers a refined, visual-first journey through world-class recipes, backed by a secure, offline-first technical foundation.
Immersive Experience: The interface was designed using Material 3 principles, ensuring smooth transitions and a visual-first approach to recipe discovery with a consistent 60 FPS performance.
Discovery & Home |
Advanced Search |
Recipe Details |
Mamaβs Kitchen is a premium recipe discovery platform designed to showcase the integration of high-performance networking, hardware-level security, and a fluid, 100% declarative UI.
π What is Mama's Kitchen? (Click to expand)
Designed for the modern home cook, this application prioritizes speed, accessibility, and intuitive interaction. It serves as a technical benchmark for handling high-volume data from the FatSecret API while maintaining a consistent 60 FPS experience.
The app addresses the need for a reliable kitchen companion by offering:
- Visual-First Discovery: A high-density feed optimized for food photography.
- Lightning-Fast Search: Advanced filtering with low-latency response times.
- Secure Offline Mode: Ensuring critical recipe data is available without internet access, protected by local encryption.
β¨ View Core Features (Adaptive UI & Personalization) (Click to expand)
| Feature | Implementation | Benefit |
|---|---|---|
| Personal Favorites | Room + SQLCipher | Secure, encrypted local recipe storage. |
| Material You | Dynamic Palette API | UI colors that adapt to recipe photography. |
| Dark/Light Mode | Theme-aware Composables | Optimized readability for any environment. |
| Adaptive Layout | Split-Pane / Landscape | Seamless experience on tablets and foldable devices. |
The project is built on Strict Clean Architecture and MVVM, enforcing total separation of concerns and a predictable state management via Unidirectional Data Flow (UDF).
graph TD
%% Nodes definition
UI[Jetpack Compose Screens]
VM[ViewModels]
UC[UseCases]
REPO[Repository Pattern]
REM[Remote: Ktor Client]
LOC[Local: Room Database]
PAG[Paging 3 Source]
%% Main Flow (Clean Architecture)
UI --- VM
VM --- UC
UC --- REPO
%% Data Sources
REPO --> REM
REPO --> LOC
REPO --> PAG
%% Subgraph containers without borders or backgrounds
subgraph Presentation [" "]
direction TB
UI
VM
end
subgraph Domain [" "]
direction TB
UC
end
subgraph Data [" "]
direction TB
REPO
REM
LOC
PAG
end
%% Minimalist Styling (No Backgrounds)
linkStyle default stroke:#888,stroke-width:1px
style Presentation fill:none,stroke:none
style Domain fill:none,stroke:none
style Data fill:none,stroke:none
style UI fill:none,stroke:#333,stroke-width:2px
style VM fill:none,stroke:#333,stroke-width:2px
style UC fill:none,stroke:#333,stroke-width:2px
style REPO fill:none,stroke:#333,stroke-width:2px
%% Data implementations with dashed lines for distinction
style REM fill:none,stroke:#888,stroke-dasharray: 5 5
style LOC fill:none,stroke:#888,stroke-dasharray: 5 5
style PAG fill:none,stroke:#888,stroke-dasharray: 5 5
The project strictly follows Clean Architecture and SOLID principles, ensuring that business logic is completely decoupled from Android frameworks and UI implementations.
π Project Structure & Feature-Layered Architecture (Click to expand)
The codebase is partitioned into clearly defined layers to maximize testability and scalability:
| Layer | Responsibility | Key Components |
|---|---|---|
data/ |
Data source orchestration | Paging 3, Ktor, Room + SQLCipher |
domain/ |
Business Logic (Pure Kotlin) | UseCases, Repository Interfaces, Models |
presentation/ |
Declarative UI State | Jetpack Compose, ViewModels, ScreenStatus |
di/ |
Dependency Injection | Koin 4.1.1 Modules |
util/ |
Infrastructure and Helpers | CryptographyManager, NetworkTracker |
π Technical Implementation Details (MAD Stack) (Click to expand)
- Ktor Client: Native Kotlin multiplatform engine configured with
HttpClient(Android). - Kotlinx Serialization: Reflection-free JSON parsing for superior performance.
- Advanced Pipeline: Custom implementation of interceptors for
LoggingandDefaultRequest.
This project implements rigorous security protocols and automated quality assurance to ensure data integrity and application stability, exceeding standard mobile development practices.
π‘οΈ Hardware-Level Security & Persistence (Click to expand)
The application implements a multi-layered security strategy to protect user data at rest:
- Full Database Encryption: The entire Room Database is encrypted using SQLCipher, preventing unauthorized access to the local recipe cache.
- Android KeyStore HSM: Cryptographic keys are generated and securely stored within the device's Hardware Security Module, ensuring they never leave the secure hardware.
- Manual AES-CBC Encryption: Custom
CryptographyManagerimplementation using AES/CBC/PKCS7Padding for sensitive data stored as BLOBs. - Memory Management: Integrated LeakCanary in debug builds to proactively monitor and eliminate memory leaks.
π§ͺ Testing Strategy (Quality Assurance) (Click to expand)
A robust testing suite ensures the reliability of core components without unnecessary overhead:
- Security Testing (Instrumented): Dedicated
CryptographyManagerTestto verify AES encryption/decryption and KeyStore integration on a real Android runtime. - Unit Testing: Business logic and UseCases verified using JUnit4 and MockK to ensure predictable behavior.
- Reactive Flow Testing: Validation of asynchronous data streams and
StateFlowemissions using Turbine.
This project leverages a cutting-edge Modern Android Development (MAD) stack, prioritizing type-safety, reactive data streams, and hardware-accelerated performance.
π Core Technologies & Libraries (Click to expand)
The application is built with a carefully selected suite of tools to ensure a scalable and maintainable codebase:
| Category | Technologies |
|---|---|
| Language | Kotlin 2.2.20 (Latest features & Performance) |
| UI Framework | Jetpack Compose + Material 3 + Palette API |
| Networking | Ktor Client + Kotlinx Serialization |
| Persistence | Room 2.8.3 + SQLCipher (Military-grade encryption) |
| DI | Koin 4.1.1 (Lightweight Dependency Injection) |
| Async & Flow | Coroutines + Kotlin Flow + Paging 3 |
| Quality/CI | GitHub Actions + LeakCanary + Timber |
To ensure the application functions correctly, you must provide a valid API Key. This project uses a secure properties injection method to prevent sensitive credentials from being committed to version control.
π API Configuration & Credentials (Click to expand)
The application communicates with the FatSecret Platform API to fetch nutritional data and recipes. Follow these steps to set up your environment:
- Go to the FatSecret Platform API website.
- Register for a free developer account and navigate to the My Apps section.
- Create a new application to obtain your Client ID and Client Secret.
Create a file named key.properties in your root directory (at the same level as your build.gradle and settings.gradle files). This file is ignored by Git for your security.
Add the following lines to the file:
CLIENT_ID = your_client_id_here
CLIENT_SECRET = your_client_secret_hereSync Project with Gradle Files. The values will be injected via the generated BuildConfig class.
Created and Engineered by
Giovanna Amatucci
Android Software Engineer
"Specialized in designing and building high-performance, secure, and scalable applications."
Clean Architecture β’ Modern Android Development β’ Security-Driven Engineering
This project is a technical showcase of architectural excellence, performance optimization, and hardware-level security.
Β© 2025 | Giovanna Amatucci





