easyStock is a simple and efficient inventory management app built with Expo, Expo Router, TypeScript, and Firebase. It helps you keep track of your products, stock levels, and inventory movements seamlessly on your mobile device.
- Add, edit, and delete inventory items
- Track stock quantities in real-time
- Organize items by categories
- User authentication with Firebase Auth
- Sync data instantly with Firebase Firestore
- Clean and intuitive UI powered by Expo Router and React Native
- Expo - Framework for building native apps using React Native
- Expo Router - File-based routing for React Native apps
- TypeScript - Strongly typed JavaScript for better development experience
- Firebase - Backend services including Authentication and Firestore database
- Node.js (recommended latest LTS)
- Expo CLI (
npm install -g expo-cli) - Firebase project with Firestore and Authentication enabled
- Clone the repository
git clone https://github.com/yourusername/easyStock.git
cd easyStock- Install dependencies
npm installor with yarn
yarn install- Configure Firebase
-
Create a Firebase project at Firebase Console
-
Enable Email/Password Authentication (or other preferred methods)
-
Enable Firestore database in test or production mode
-
Copy your Firebase config object from the project settings
- Create a .env file in the root directory and add your Firebase config:
FIREBASE_API_KEY=your_api_key
FIREBASE_AUTH_DOMAIN=your_auth_domain
FIREBASE_PROJECT_ID=your_project_id
FIREBASE_STORAGE_BUCKET=your_storage_bucket
FIREBASE_MESSAGING_SENDER_ID=your_messaging_sender_id
FIREBASE_APP_ID=your_app_id- Start the app
npm startor
yarn startThis will open the Expo Developer Tools. You can run the app on a simulator or physical device.
/app
_layout.tsx
/firebase
/components
/types
-
/app — Pages and routes managed by Expo Router
-
/firebase — Firebase configuration and initialization
-
/components — Reusable UI components
-
/types — TypeScript types and interfaces
import { initializeApp } from 'firebase/app';
import { getAuth } from 'firebase/auth';
import { getFirestore } from 'firebase/firestore';
const firebaseConfig = {
apiKey: process.env.FIREBASE_API_KEY!,
authDomain: process.env.FIREBASE_AUTH_DOMAIN!,
projectId: process.env.FIREBASE_PROJECT_ID!,
storageBucket: process.env.FIREBASE_STORAGE_BUCKET!,
messagingSenderId: process.env.FIREBASE_MESSAGING_SENDER_ID!,
appId: process.env.FIREBASE_APP_ID!,
};
const app = initializeApp(firebaseConfig);
export const auth = getAuth(app);
export const db = getFirestore(app);Command Description
-
npm start: Start Expo development server
-
npm run android: Run app on Android emulator or device
-
npm run ios: Run app on iOS simulator or device
-
npm run web: Run app in web browser
-
npm run lint: Run TypeScript and ESLint checks
Contributions are welcome! Feel free to open issues or submit pull requests.
Please ensure code style consistency and proper documentation.
For questions or support, reach out at (email)
Made with ❤️ using Expo, TypeScript, and Firebase