FindMyClass is a React Native mobile application designed to help students navigate university buildings and find their classrooms efficiently. Built with Expo and Firebase, it provides an intuitive interface for classroom discovery and navigation.
- Building Navigation: Interactive maps of university buildings
- Classroom Search: Quick search functionality for finding specific rooms
- User Authentication: Secure login and registration system
- Favorites: Save frequently visited classrooms
- Real-time Updates: Live updates for room availability and changes
- Offline Support: Basic functionality works without internet connection
- Frontend: React Native, Expo
- Backend: Node.js, Express
- Database: Firebase Realtime Database
- Authentication: Firebase Auth
- Maps: React Native Maps
- State Management: React Context API
- UI Components: React Native Paper
- Node.js (LTS version 18 or higher) Download Node.js
- Expo CLI
npm install -g expo-cli
- Firebase Account Create at Firebase Console
- Git Download Git
-
Clone the Repository
git clone https://github.com/your-username/FindMyClass.git cd FindMyClass -
Install Dependencies
npm install
-
Environment Configuration Create a
.envfile in the project root: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_sender_id FIREBASE_APP_ID=your_app_id BACKEND_URL=your_backend_url
-
Start Backend Server
cd FindMyClass-Backend npm install node server.js -
Start Frontend
# In project root npx expo start -
Testing the App
- Use Expo Go app on your mobile device
- Scan QR code from terminal
- Or use iOS/Android simulators
- Follow ESLint configuration
- Use Prettier for formatting
- Follow component-based architecture
- Write meaningful commit messages
npm test # Run Jest tests
npm test -- --coverage # Run tests with coverage report
npm test -- --watch # Run tests in watch modeJest is configured to:
- Run all
.test.jsand.spec.jsfiles - Generate coverage reports in
./coverage - Mock static assets and styles automatically
- Support React Native component testing
expo build:android # Build Android APK
expo build:ios # Build iOS IPA- Fork the repository
- Create feature branch (
git checkout -b feature/AmazingFeature) - Commit changes (
git commit -m 'Add AmazingFeature') - Push to branch (
git push origin feature/AmazingFeature) - Open Pull Request
For support, please open an issue in the GitHub repository or contact the development team.
This project is licensed under the MIT License - see the LICENSE file for details.