PomoTogether is a collaborative Pomodoro timer app that allows users to create and join focused work sessions with friends, colleagues, or study groups. Stay productive together, even when physically apart!
- Shared Timer Sessions: Create or join timer sessions with a simple code
- Customizable Settings: Configure work duration, break length, number of rounds, and long breaks
- Real-time Synchronization: Everyone in the session sees the same timer
- Chat Feature: Communicate with session participants without leaving the app
- Participant Management: See who's in your session with real-time participant list
- Task Input: Add and track tasks to complete during your Pomodoro sessions
- Dark/Light Theme: Choose your preferred visual style
- Notifications: Get notified when work periods and breaks start/end
- Persistent Username: Your username is remembered for future sessions
- Cross-Platform: Works on iOS and Android devices
- Haptic Feedback: Tactile responses for user interactions
-
Clone the repository
git clone https://github.com/DebadityaHait/PomoTogether.git cd PomoTogether -
Install dependencies
npm install # or yarn install -
Start the development server
npm start # or yarn start -
Follow the Expo CLI instructions to run on a device or emulator
To build an Android APK:
npm run build:android-apk
# or
eas build --platform android --profile development --localFor a production build:
npm run build:android
# or
eas build --platform android --profile preview- React Native - Cross-platform mobile framework
- Expo - React Native platform and toolchain
- Expo Router v4 - File-based routing
- Firebase - Backend and real-time database
- React Context API - State management
- Expo Notifications - Push notifications
- AsyncStorage - Local data persistence
- Expo Haptics - Tactile feedback
- Create or Join: Start a new Pomodoro session or join an existing one with a session code
- Set Parameters: Customize work time, break time, and number of rounds
- Work Together: Stay in sync with all participants as you work through focused intervals
- Communicate: Chat with participants directly in the app
- Stay Motivated: Seeing others in your session helps maintain accountability
PomoTogether/
├── app/ # Expo Router-based navigation
│ ├── index.tsx # Home screen
│ ├── session.tsx # Session screen
│ └── (tabs)/ # Tab navigation
├── assets/ # Static assets (images, fonts)
├── components/ # Reusable React components
│ ├── SessionSetup.tsx # Session configuration
│ ├── TimerCircle.tsx # Circular timer component
│ ├── SessionChat.tsx # Chat functionality
│ ├── ParticipantList.tsx # Session participants
│ └── ui/ # UI components
├── context/ # React Context providers
│ ├── SessionContext.tsx # Session state management
│ └── ThemeContext.tsx # Theme state management
├── services/ # Firebase and other service integrations
├── constants/ # App-wide constants
├── styles/ # Shared styles
├── hooks/ # Custom React hooks
└── utils/ # Helper functions
npm start- Start the Expo development servernpm run android- Run on Android device/emulatornpm run ios- Run on iOS simulatornpm run build:android- Build Android previewnpm run build:android-apk- Build Android APK for developmentnpm run reset-project- Reset project cachenpm run lint- Run linter
PomoTogether respects user privacy:
- No user account required
- Minimal data collection
- Session data is temporary and deleted after session end
- Firebase Firestore used for real-time session synchronization
- Automated session cleanup for inactive sessions
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Project Link: https://github.com/DebadityaHait/PomoTogether
Made with ❤️ for productivity enthusiasts everywhere




