A cross-platform mobile application for smart home automation, built with React Native and Expo. SmartNest enables users to monitor and control IoT devices remotely with secure authentication and an intuitive interface.
- Device Control: Remotely manage and monitor connected IoT devices
- Firebase Integration: Real-time database synchronization and user authentication
- Secure Authentication: Email/password authentication with biometric security options
- Cross-Platform: Runs on iOS, Android, and web browsers
- Modern UI: Clean, responsive interface with native navigation
- Settings Management: Customizable app preferences and security settings
- Framework: React Native with Expo (~54.0.30)
- Routing: Expo Router (~6.0.21)
- Backend: Firebase (Auth + Realtime Database/Firestore)
- Language: TypeScript
- Animations: React Native Reanimated (~4.1.1)
- Storage: AsyncStorage for local data persistence
- Security: Expo Local Authentication for biometric login
- Node.js (v14 or higher)
- npm or yarn
- Expo CLI
- iOS Simulator (for macOS) or Android Emulator
- Firebase account with a configured project
- Clone the repository
git clone https://github.com/darshan-regmi/SmartNest.git
cd SmartNest- Install dependencies
npm install-
Configure Firebase
- Create a Firebase project at Firebase Console
- Enable Authentication (Email/Password provider)
- Create a Firestore/Realtime Database
- Add your Firebase config to the project (in
lib/firebase.tsor similar)
-
Start the development server
npm startnpm start- Start the Expo development servernpm run android- Run on Android emulator/devicenpm run ios- Run on iOS simulator/devicenpm run web- Run in web browsernpm run web:build- Build for web deploymentnpm run web:serve- Build and serve web version locallynpm run lint- Run ESLint for code qualitynpm run type-check- Run TypeScript type checking
SmartNest/
├── app/ # Main application screens
│ ├── (auth)/ # Authentication screens
│ ├── (tabs)/ # Tab-based navigation screens
│ ├── security/ # Security-related screens
│ ├── settings.tsx # Settings screen
│ └── _layout.tsx # Root layout configuration
├── components/ # Reusable UI components
├── constants/ # App constants and configuration
├── lib/ # Utility functions and Firebase setup
├── assets/ # Images, fonts, and other static assets
└── public/ # Web-specific public assets
SmartNest implements secure user authentication with:
- Email/password registration and login
- Firebase Authentication backend
- Optional biometric authentication (fingerprint/Face ID)
- Persistent login sessions with AsyncStorage
Create a lib/firebase.ts file with your Firebase configuration:
import { initializeApp } from 'firebase/app';
import { getAuth } from 'firebase/auth';
import { getFirestore } from 'firebase/firestore';
const firebaseConfig = {
apiKey: "YOUR_API_KEY",
authDomain: "YOUR_AUTH_DOMAIN",
projectId: "YOUR_PROJECT_ID",
storageBucket: "YOUR_STORAGE_BUCKET",
messagingSenderId: "YOUR_MESSAGING_SENDER_ID",
appId: "YOUR_APP_ID"
};
const app = initializeApp(firebaseConfig);
export const auth = getAuth(app);
export const db = getFirestore(app);eas build --platform androideas build --platform iosnpm run web:buildSmartNest is designed to work with ESP8266/ESP32 microcontrollers and Arduino-based IoT devices. Configure your hardware to communicate with Firebase for real-time device control.
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is private and maintained by Darshan Regmi.
- GitHub: @darshan-regmi
- Project Link: https://github.com/darshan-regmi/SmartNest