La Casa del Bordadito is a standard single-module Android project using the Kotlin DSL for Gradle (Documentation Index
Fetch the complete documentation index at: https://mintlify.com/AndresLopezCorrales/La-casa-del-bordadito/llms.txt
Use this file to discover all available pages before exploring further.
build.gradle.kts) and a version catalog at gradle/libs.versions.toml. Before the app will compile and run, you need to supply two configuration files that are intentionally excluded from the repository: app/google-services.json from your Firebase project and a local.properties file containing API keys.
Gradle setup
The project targets Android API 36 with a minimum SDK of 24 (Android 7.0 Nougat), compiled with Kotlin 2.0.21 and AGP 8.13.2.| Setting | Value |
|---|---|
| AGP version | 8.13.2 |
| Kotlin version | 2.0.21 |
applicationId | com.example.applacasadelbordadito |
compileSdk | 36 |
targetSdk | 36 |
minSdk | 24 |
versionCode | 1 |
versionName | 1.0 |
| Java compatibility | VERSION_11 |
viewBinding and buildConfig are enabled in build.gradle.kts:
buildConfig = true is required because FcmUtil and ApplicationClass read BuildConfig.ONESIGNAL_APP_ID and BuildConfig.ONESIGNAL_API_KEY at runtime — these fields are injected from local.properties via buildConfigField.
Key dependencies
All versions are declared centrally ingradle/libs.versions.toml and referenced via the version catalog alias syntax in build.gradle.kts.
Firebase
Firebase
| Library | Version | Purpose |
|---|---|---|
firebase-auth | 24.0.1 | Email/Password and Google authentication |
firebase-database | 22.0.1 | Realtime Database (users, chats, patterns) |
firebase-firestore-ktx | 25.1.1 | Firestore (menu, cart, orders) |
firebase-storage | 22.0.1 | Profile photos, chat images, workshop flyer |
play-services-auth | 21.4.0 | Google Sign-In credential provider |
google-services plugin | 4.4.3 | Applies google-services.json at build time |
UI and image loading
UI and image loading
| Library | Version | Purpose |
|---|---|---|
material | 1.13.0 | Material 3 components (BottomNavigationView, cards, dialogs) |
constraintlayout | 2.2.1 | Flexible view positioning |
glide | 5.0.5 | Image loading for menu items, profiles, chat images |
coil + coil-svg | 2.6.0 | SVG rendering for multiavatar-generated profile pictures |
photoView | 2.3.0 | Pinch-to-zoom for images in ChatActivity |
multiavatar | 1.0.1 | Deterministic avatar generation from user UID |
QR codes
QR codes
| Library | Version | Purpose |
|---|---|---|
zxing-core | 3.5.4 | QR code encoding engine |
zxing-android-embedded | 4.3.0 | Embedded QR scanner and generator UI in QRActivity |
Notifications and networking
Notifications and networking
| Library | Version | Purpose |
|---|---|---|
onesignal | 5.6.1 | Push notification SDK |
okhttp | 4.12.0 | HTTP client for OneSignal REST API calls in FcmUtil |
Payments and forms
Payments and forms
| Library | Version | Purpose |
|---|---|---|
edit-credit | 3.0.3 | Credit card number input formatting in TarjetaAgregarActivity |
ccp (CountryCodePicker) | 2.7.0 | Country code selector for phone number fields |
gson | 2.10.1 | JSON serialization/deserialization |
Required configuration files
1. google-services.json
Download this file from your Firebase Console (Project Settings → Your apps → Android app) and place it at:com.google.gms.google-services Gradle plugin and must be present before Gradle can sync. It is listed in .gitignore and is never committed to the repository.
2. local.properties
Create or editlocal.properties at the project root. In addition to the standard Android SDK path, add your OneSignal credentials and EmailJS credentials. All six fields are read unconditionally by build.gradle.kts and injected as BuildConfig string fields, so every key must be present even if you are not using EmailJS:
build.gradle.kts reads these properties and injects them as BuildConfig string fields:
Firebase Console setup
Before the app can connect to Firebase, you must enable the required services in your Firebase project.Authentication
Enable the following providers under Authentication → Sign-in method:
- Email/Password — used by
Login_emailandRegistro_email - Google — used by
OpcionesLoginwithplay-services-auth
Firestore Database
Create a Firestore database in production mode (or test mode for local development). The app expects these collections to exist (they are created automatically on first write):
cafes— café menu itemscarritos— per-user cart sub-collectionsordenes— placed orders
Realtime Database
Create a Realtime Database instance and configure rules to allow authenticated reads and writes. A minimal development rule set:The app writes to:
Usuarios, Chats, ChatsUnreadCount, patrones, and TallerInfo.Android Manifest permissions
The following permissions are declared inAndroidManifest.xml:
| Permission | Reason |
|---|---|
INTERNET | All Firebase SDK calls, OneSignal API, image loading |
CAMERA | Scanning QR codes in QRActivity; camera is declared required="false" so the app installs on devices without one |
WRITE_EXTERNAL_STORAGE | Legacy storage access for Android 9 and below |
POST_NOTIFICATIONS | Required on Android 13+ (API 33) to display push notifications |
READ_MEDIA_IMAGES at runtime via the Activity Result API rather than the legacy READ_EXTERNAL_STORAGE permission.
Building and running
Open the project in Android Studio Hedgehog or later. After Gradle sync completes:- Select a run configuration targeting
app. - Choose a connected device or AVD.
- Click Run ▶ (or press
Shift+F10).
The
functions/index.js file in the repository defines a welcome-email Cloud Function triggered on new Usuarios node creation. It is not currently deployed to Firebase Functions — all business logic runs client-side in the Android app. To deploy it, install the Firebase CLI, run firebase login, and then firebase deploy --only functions from the project root.