A cross-platform mobile and web application built with React Native and Expo. NotesMT allows users to create, manage, and visualize notes on an interactive map, featuring real-time synchronization with Firebase.
-
User Authentication: Secure Sign-Up and Login via Firebase Auth.
-
Interactive Map: View and add notes based on geographic locations.
-
Real-Time Sync: Instant updates across the app using Firebase Firestore onSnapshot.
-
Cross-Platform: Optimized for both iOS/Android (Native) and Web.
-
Framework: React Native & Expo SDK (TypeScript)
-
Database: Cloud Firestore (NoSQL DB)
-
Authentication: Firebase SDK
-
Maps: Google Maps
-
Navigation: Expo-router
-
UI Library: React Native Paper
-
All Firebase logic is encapsulato launch the app in Expo Goed within the /services directory. This ensures that UI components remain "dumb" and focused only on rendering, while data fetching and business logic are handled independently.
-
The app utilizes a useNotes custom hook that implements Firebase's onSnapshot listener. This provides a Single Source of Truth, ensuring that the Map View and List View are always in sync without redundant API calls.
-
Due to library limitations between Mobile and Web, the project uses Platform-Specific Extensions (
map.native.tsxandmap.web.tsx). This allows the app to use the Google Maps SDK on mobile and the Google Maps JS API on the web seamlessly
- Node.js
- Copy the contents of example.env to a new file named appsettings.json and fill in the details.
-
Clone the repository:
$ git clone https://github.com/naama-git/NotesMT.git -
Install Dependencies:
$ npm install -
Start the development server:
$ npx expo startthen press
wfor WEB orafor android. You can also scan the QR code generated in your terminal to o launch the app in Expo Go in your mobile.



