Aika is a cross-platform time tracking application built with Expo and React Native. The name "Aika" means "time" in Finnish, reflecting the app's focus on simple, efficient time management. Aika helps users track their work sessions with an intuitive timer interface and comprehensive history of previous time entries.
Key features include:
- Simple start/stop timer functionality
- Task description for each time entry
- History of previous time entries with duration calculation
- User authentication and data persistence
- Cross-platform support (iOS, Android, Web)
This project showcases how to implement secure, modern authentication in a React Native app using Expo with Clerk. Clerk provides a complete authentication and user management solution that's easy to implement and highly customizable.
In Aika, Clerk powers:
- User sign-up and sign-in flows
- Session management across devices
- Secure access token handling for backend API calls
- Integration with Supabase for authenticated database access
- Node.js 16+
- pnpm (preferred package manager)
- Expo CLI
- Clerk account and API keys
- Supabase account and API keys
-
Clone the repository
git clone https://github.com/your-username/aika.git cd aika -
Install dependencies
pnpm install
-
Create a
.envfile in the root directory with your Clerk and Supabase credentialsEXPO_PUBLIC_CLERK_PUBLISHABLE_KEY=your_clerk_publishable_key EXPO_PUBLIC_SUPABASE_URL=your_supabase_url EXPO_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key -
Start the development server
pnpm expo start
-
Open the app in your preferred environment:
- iOS simulator
- Android emulator
- Web browser
- Physical device with Expo Go app
-
Frontend:
- Expo - React Native framework
- React Native - Cross-platform UI
- Expo Router - File-based routing
- TypeScript - Type safety
-
Authentication:
- Clerk - User authentication and session management
-
Backend:
- Supabase - PostgreSQL database and API
-
Styling:
- React Native StyleSheet - Component styling
We welcome contributions to Aika! Here's how you can help:
- Fork the repository
- Create a 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
- Follow the existing TypeScript patterns
- Use async/await for asynchronous operations
Please use the GitHub issue tracker to report bugs or request features.
This project is licensed under the MIT License - see the LICENSE file for details.