A modern Progressive Web Application built with React and Firebase, designed to provide a seamless offline-first experience across all devices.
graph TB
A[User Browser] --> B[Service Worker]
B --> C{Network Available?}
C -->|Yes| D[Fetch from Network]
C -->|No| E[Fetch from Cache]
D --> F[Update Cache]
F --> G[Display Content]
E --> G
G --> H[React Application]
H --> I[Firebase Backend]
I --> J[Cloud Firestore]
I --> K[Authentication]
I --> L[Cloud Storage]
style B fill:#5A0FC8
style H fill:#2466ff
style I fill:#ff0000
- 🔄 Offline Support: Works seamlessly without internet connection
- 📲 Installable: Add to home screen on mobile devices
- ⚡ Fast Loading: Optimized with service workers and caching
- 🔐 Secure: Firebase Authentication integration
- 📊 Real-time Data: Cloud Firestore for live updates
- 🎨 Responsive Design: Works on all screen sizes
- 🔔 Push Notifications: Stay updated with important events
- Node.js (v14 or higher)
- npm or yarn
- Firebase account
- Clone the repository:
git clone https://github.com/yourusername/memento.git
cd memento- Install dependencies:
npm install- Configure Firebase:
- Create a
.envfile in the root directory - Add your Firebase configuration:
- Create a
REACT_APP_FIREBASE_API_KEY=your_api_key
REACT_APP_FIREBASE_AUTH_DOMAIN=your_auth_domain
REACT_APP_FIREBASE_PROJECT_ID=your_project_id
REACT_APP_FIREBASE_STORAGE_BUCKET=your_storage_bucket
REACT_APP_FIREBASE_MESSAGING_SENDER_ID=your_sender_id
REACT_APP_FIREBASE_APP_ID=your_app_id- Start the development server:
npm startnpm run buildnpm install -g serve
serve -s buildnpm install -g firebase-tools
firebase login
firebase init
firebase deploymemento/
├── public/
│ ├── index.html
│ ├── manifest.json
│ └── service-worker.js
├── src/
│ ├── components/
│ ├── pages/
│ ├── services/
│ ├── utils/
│ ├── App.js
│ └── index.js
├── webpack.config.js
├── package.json
└── README.md
The project uses Webpack for bundling and optimization. Key features:
- Code splitting
- Tree shaking
- Asset optimization
- Hot module replacement (HMR)
The service worker enables:
- Offline functionality
- Background sync
- Push notifications
- Resource caching
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- React team for the amazing framework
- Firebase for backend services
- The PWA community for best practices and tools
Project Link: https://memento-fed12.web.app/
Made with ❤️ using React and Firebase

