Silver Lining is a React Native mobile application that encourages gratitude and reflection through meaningful posts, that you can share with those you know
- Code Overview of the Application: Watch a detailed walkthrough of the application's code structure and functionality.
- Overview of the Cloud Database: Learn about the cloud database setup, features, and how it integrates with the application.
- View a scrollable list of others miracles (currently just mock posts).
- Includes the app logo and a profile picture button for quick navigation to the Profile Screen.
- Miracle button, a floating button to create a new post.
- Capture and save your miracles.
- Take photos using the device's camera.
- Add descriptions to remember each moment.
- Posts are saved locally.
- Showcase your personal miracles.
- Personalized Greeting!
- Display your saved posts in a grid.
- Option to clear all saved posts.
- React Native: For building the mobile application.
- Expo: For accessing device features like the camera and file system.
- React Navigation: For handling navigation between screens.
- expo-file-system: For storing user data and images.
- expo-camera: For using the device's camera.
- React Native Vector Icons: For icons.
- App.js: Sets up navigation and ensures directories/files are ready for use.
- TakePhoto.js: Manages the camera functionality, included a flip camera button.
- PhotoPreview.js: Displays a preview of the captured photo, retake button added.
- ProfileScreenPosts.js: Component to render each of the users post, used in the profile screen flatlist.
- Post.js: The component to handle when a post goes to the feed.
- Firebase Authentication: User authentication is handled with email and password.
- Firestore Database: User data, including profile information and posts, is stored securely.
- Cloud Storage: All images are stored in Firebase Cloud Storage.
- Persistent Authentication: Users remain logged in across sessions for seamless access.
- Efficient Queries: Firestore allows optimized retrieval and filtering of user posts and profile data.
-users Stores all the users of the application; here is a template
6nojLWSjomPhda7fhelDFU2:{
"firstName": "John",
"lastName": "Doe",
"profilePhotoUrl": "https://example.com/path/to/profile/photo.jpg",
"timestamp": "2025-01-01T00:00:00.000Z",
"userId": "exampleUserId123",
"username": "johndoe123"
}posts Stores all the posts; here is a template
{
"description": "This is great",
"photoURL": "exampleimage.com",
"timestamp": "2025-02-08T20:46:01.721Z",
"userId": "bqrbFFFB6DRkGnSBSooGf1"
}I configured Firebase Storage to manage and store images for both user posts and profile pictures.
I implemented user authentication with email and password, which also generates a unique user UID upon account creation.
- Ensure you have Node.js and npm installed.
- Install Expo CLI:
npm install expo-cli - Clone the repository:
git clone https://github.com/BBopsCode/Silver-Lining.git - Navigate to the project directory:
cd silver-lining - Install dependencies:
npm install - Start the development server:
npx expo start - Use the Expo Go app on your mobile device or an emulator to run the application.
- Firebase Documentation: Explore the official Firebase documentation to learn how to integrate and use Firebase services in your projects.
- React Native Getting Started Guide: Get started with React Native by following the official guide, which covers everything from setup to building your first app.
- Helpful YouTube Tutorial: Watch this highly recommended YouTube tutorial for practical tips and step-by-step guidance on mastering Firebase and React Native.