B.Sc in Computer Science @ Ariel University
- Samuel Lazareanu - LinkedIn | GitHub
- Adiel Halevi - LinkedIn | GitHub
- Roey Shmilovich - LinkedIn | GitHub
Search for businesses and book appointments on the same app, all in one place.
- Developed an advanced search feature for quick appointment booking
- Led full-cycle development using industry best practices, from initiation to deployment
- Integrated Firebase, Firestore, Storage, Functions, Messaging
- Designed UI/UX using Figma and managed project in a team of 3 using Trello
- About
- Screenshots
- System Requirements
- Installation
- Firebase Setup
- Running the App
- Features
- Project Structure
- Development
- Troubleshooting
- Contributing
Here's the flow of screens from the customer's perspective: (They are a bit changed in later versions, but the general idea is the same)
- Welcome Screen
- Register/Login
- Customer HomePage
- Advanced Search Filters
- Quick Appointment Page
- My Appointments
- Saved/Favorite Businesses
- Business Page
- Appointment in SalonDetails
Here's the flow of screens from the business's perspective:
- Business Registration Steps
- Business Dashboard
- Business Calendar and Appointments Management
- Business Settings
- Stats Page
- Node.js v22.11.0 or higher
- npm v11.1.0 or higher
- React Native development environment
- Android Studio (for Android development)
- Xcode (for iOS development, macOS only)
- Firebase project setup (Auth, Firestore, Storage, Functions, Messaging)
- Clone the repository:
git clone https://github.com/SamuraiPolix/Tori.git
cd Tori
- Install dependencies:
npm install
- Create a new Firebase project at Firebase Console
- Add your Android and iOS apps to the Firebase project
- Download the configuration files:
google-services.json
for Android (place insrc/services/
)GoogleService-Info.plist
for iOS (place insrc/services/
)
- Enable the following Firebase services:
- Authentication
- Cloud Firestore
- Cloud Storage
# Start Metro bundler
npm start
# In a new terminal, run on Android
npm run android
# Start Metro bundler
npm start
# In a new terminal, run on iOS
npm run ios
To test both business and customer views simultaneously, you can run two emulators at the same time. Here's how:
You can start multiple emulators either through command line or Android Studio:
# List available emulators
emulator -list-avds
# Start the first emulator
emulator -avd <Emulator_Name_1> &
# Start the second emulator
emulator -avd <Emulator_Name_2> &
- Open Android Studio
- Go to Device Manager
- Launch or duplicate an existing emulator
- Start both emulators
Check that both emulators are running:
adb devices
You should see something like:
List of devices attached
emulator-5554 device
emulator-5556 device
Run these commands in separate terminals to start the app on each emulator:
# For the first emulator (e.g., for business view)
npx expo start --port 8082
# For the second emulator (e.g., for customer view)
npx expo start --port 8083
Then, press Shift + A to select the emulator on each terminal or open Expo Go on each emulator and you will see the Expo app running
This allows you to test business and customer interactions in real-time.
- π Appointment Management
- π₯ Customer Management
- πββοΈ Service Management
- π Business Analytics
- βοΈ Business Settings
- π Push Notifications
Tori/
βββ src/
β βββ components/ # Reusable components
β βββ screens/ # Screen components
β βββ services/ # API and service functions
β βββ styles/ # Global styles
β βββ assets/ # Images, fonts, etc.
βββ android/ # Android specific files
βββ ios/ # iOS specific files
βββ package.json # Project dependencies
- The app uses React Native for cross-platform mobile development
- Firebase is used for backend services
- RTL support is enabled for Hebrew language
- Follows modern React practices with hooks and functional components
If you encounter any issues:
- Clear Metro bundler cache:
npm start -- --reset-cache
- Clean and rebuild Android:
cd android
./gradlew clean
cd ..
npm run android
- Clean and rebuild iOS:
cd ios
pod deintegrate
pod install
cd ..
npm run ios
- Fork the repository
- Create your 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