A fun, secure memory-sharing and digital scrapbooking application. Designed as a digital vault for any group to preserve their most precious moments.
- Coves: Private group spaces for sharing memories within a trusted, curated circle.
- Time Capsules: Create and unlock scheduled memory sets for collaborative, synchronized reliving.
- Secure Vault Architecture: Advanced server-authoritative data management with reliable cascade deletions.
- Memory Discovery: Relive forgotten moments through dynamic discovery tools like Roulette and Flashbacks.
- Unified Experience: High-performance mobile interface built on Expo with NativeWind styling.
Built with React Native (Expo SDK 52), NativeWind, Firebase, and Node.js.
Before you begin, ensure you have the following installed:
- Node.js: v18 or later
- Java Development Kit (JDK): v17 or later (required for Android)
- Android Studio: With Android SDK, Build Tools, and Emulator configured
- ADB (Android Debug Bridge): Required for physical device testing and port forwarding
To install all required packages for the root, client, and server, run the following starting from the project root:
npm run install-allYou must configure both the client and server with your own Firebase credentials.
-
Client Setup:
- Navigate to the
client/directory. - Copy
.env.exampleto.env. - Fill in the
EXPO_PUBLIC_FIREBASE_*variables with your Firebase web configuration. - Set
EXPO_PUBLIC_API_URLtohttp://localhost:3001(or your local IP for physical devices). - Ensure
google-services.json(Android) andGoogleService-Info.plist(iOS) are present in theclient/directory if you've already generated them in Firebase.
- Navigate to the
-
Server Setup:
- Navigate to the
server/directory. - Copy
.env.exampleto.env. - Place your Firebase
service-account.jsonfile in theserver/directory. - Fill in any other required variables in the
.envfile.
- Navigate to the
To build and run the application on an Android device or emulator, follow these steps from the root directory:
This generates the android/ directory required for native builds.
cd client
npx expo prebuildThis compiles the native code and launches the app. Ensure an emulator is running or a physical device is connected.
npx expo run:androidIn a separate terminal, start the Express server:
cd server
npm run devIf you are using a physical Android device for testing, you must forward the development ports to allow the app to communicate with the local server:
# From the root directory
npm run reverseFor a standard development session:
- Start the server:
cd server && npm run dev - Forward ports (if on physical device):
npm run reverse - Start Expo:
cd client && npx expo start(ornpx expo run:androidif you need to rebuild native code).