SnapCam is a modern React Native camera application built with Expo, featuring photo and video capture, media library browsing, QR code scanning, and a beautiful themed UI. This project is designed for learning and experimentation, and was created using online references and community resources.
- 📷 Camera: Take photos and record videos using the device camera.
- 🎥 Video Player: Playback recorded videos with native controls.
- 🖼 Media Library: Browse your device's photo library.
- 🔦 Camera Tools: Toggle flash, torch, camera facing, and zoom.
- 🧑💻 Themed UI: Automatic light/dark mode support.
- 🧩 Reusable Components: Modular design with custom hooks and UI components.
- 📄 File-based Routing: Powered by expo-router.
- 🧪 Unit Tests: Includes tests for key components using Jest and React Native Testing Library.
- 🛠 CI/CD: GitHub Actions workflow for automated builds and Telegram notifications.
-
Clone the repository:
git clone https://github.com/your-username/snapcam.git cd snapcam -
Install dependencies:
npm install
-
Start the development server:
npx expo start
Follow the on-screen instructions to open the app in an emulator or on your device.
app/- Main application source code (screens, navigation)components/- Reusable UI componentsconstants/- App-wide constants (colors, etc.)hooks/- Custom React hooksassets/- Images and fontsscripts/- Utility scripts (e.g., project reset)android/- Android native project files
npm start- Start the Expo development servernpm run android- Run on Android device/emulatornpm run ios- Run on iOS simulator (macOS only)npm run web- Run in web browsernpm run test- Run unit testsnpm run reset-project- Reset to a blank project (see below)
To reset the project to a blank state (for starting fresh):
npm run reset-projectThis will move your current source files to app-example/ and create a new blank app/ directory.
This project was created by referencing various online resources, tutorials, and open-source projects in the React Native and Expo communities.
This project is for educational and demonstration purposes. Please review and update the license as appropriate for your use case.
Created by sulthan with ❤️ using Expo and inspiration from Code With Beto & open-source community.


