Momento is a collaborative album application built with React Native (Expo) that allows multiple users to create, share, and contribute to albums for events and memories.
Unlike simple photo storage apps, Momento focuses on shared experiences, where users can collectively build and view albums in real time.
- User sign up (Email/Password)
- User login
- Persistent authentication state
- Create albums
- View owned albums
- View shared albums
- Album details (title, description, metadata)
-
Invite users to albums
-
Role-based access:
- Owner
- Contributor
- Viewer
- Add photos using image URLs
- View photos inside albums
- Basic gallery display
- React Native (Expo)
- TypeScript
- Expo Router (navigation)
- Firebase Authentication
- Cloud Firestore
- (Firebase Storage planned for future version)
momento/
│
├── app/ # Screens (Expo Router)
│ ├── (auth)/ # Login & Signup
│ ├── (tabs)/ # Main app screens
│ └── _layout.tsx # Navigation layout
│
├── src/ # Core logic
│ ├── components/
│ ├── services/
│ │ └── firebase/
│ │ ├── config.ts
│ │ ├── auth.ts
│ │ └── albums.ts
│ ├── hooks/
│ ├── utils/
│ └── types/
│
├── assets/
├── constants/
└── scripts/
git clone https://github.com/your-username/momento.git
cd momento
npm install
npx expo start
Scan the QR Code generated after 'npx expo start'
-
Create a Firebase project
-
Enable:
- Authentication (Email/Password)
- Firestore Database
-
Add your Firebase config in:
src/services/firebase/config.ts
- No real image uploads (uses URL placeholders)
- No push notifications
- No offline support
- Basic UI (focus is functionality)
- Auth
- Albums
- Collaboration
- Mock gallery
- Timeline view
- Reactions / favorites
- Album themes
- Firebase Storage (real uploads)
- Memory recap / slideshow
- Highlight generation
- Auth & User Management
- Album System
- Upload / Gallery
- UI / UX
- Collaboration & Permissions
To build a platform where users can:
“Capture, share, and relive moments together — not alone.”
This project is for academic purposes.