Arktik is a Flutter-based mobile application designed to help users plan, manage, and execute their travel trips effectively with integrated Google Calendar scheduling.
| Item | Details |
|---|---|
| Application Type | Cross-platform (Mobile) |
| Primary Platform | Android / iOS |
Arktik is a digital platform designed for travelers and groups who need an efficient way to organize their trips. By integrating destination discovery, itinerary planning, member management, and Google Calendar syncing, Arktik solves the hassle of scattered travel plans and ensures everyone involved stays on the same page.
| Feature | What the user can do |
|---|---|
| Destination Discovery | Browse and explore various travel destinations seamlessly. |
| Trip Management | Create and manage trips, including setting start and end dates, and organizing daily itineraries. |
| Group Collaboration | Invite members to trips, manage roles (Leader/Member), and use invitation codes for easy joining. |
| Google Calendar Integration | Automatically synchronize your travel itineraries and availability directly to Google Calendar. |
| Trip Checklist | Keep track of essential items and tasks for the trip to ensure nothing is left behind. |
| Category | Technology | Purpose |
|---|---|---|
| Frontend | Flutter (Dart) | UI Framework for building cross-platform applications |
| Architecture | Feature-First Clean Architecture | Modular structure organized by feature, utilizing Clean Architecture internally |
| State Management | Provider | Efficient and scalable state management for app features |
| Backend | Supabase | Backend-as-a-Service providing secure and scalable infrastructure |
| Database | PostgreSQL (Supabase) | Relational database for storing trips, members, and itineraries |
| Authentication | Supabase Auth + Google OAuth | Secure user authentication and social login |
| External API | Google Calendar API (googleapis) |
Fetching user availability and syncing trip schedules |
├── lib/
│ ├── core/ # Core components (e.g., router, themes, widgets, constants)
│ ├── features/ # Main features (auth, beranda, destination, google_calendar, profile, trip)
│ │ ├── auth/ # Authentication feature (Login, Register)
│ │ ├── trip/ # Trip management, creation, details, and checklist
│ │ └── ... # Other feature modules
│ └── main.dart # Entry point of the application
├── assets/ # Images, icons, fonts, and static assets
├── supabase/ # Database schemas
└── pubspec.yaml # Project dependencies and configurations
To get a local copy up and running, follow these simple steps.
- Flutter SDK installed on your machine (version 3.12.2 or higher).
- An editor like VS Code or Android Studio.
- A Supabase project setup for backend services.
-
Clone the repo
git clone https://github.com/nabathnm/arktik.git
-
Navigate to the project directory
cd arktik -
Configure Google Cloud Console (OAuth & Calendar API)
- Go to the Google Cloud Console.
- Create a new project.
- Navigate to APIs & Services > Library and enable the Google Calendar API.
- Navigate to APIs & Services > OAuth consent screen and configure it (Add your test users if in testing mode). Make sure to add the Calendar scopes (
https://www.googleapis.com/auth/calendarorhttps://www.googleapis.com/auth/calendar.events). - Navigate to APIs & Services > Credentials and create an OAuth 2.0 Client ID (Web application).
- Copy the Client ID and Client Secret.
-
Configure Supabase Authentication
- Go to your Supabase Dashboard.
- Navigate to Authentication > Providers and enable Google.
- Paste the Client ID and Client Secret obtained from Google Cloud Console.
- Copy the Callback URL (for OAuth) from Supabase and paste it into the Authorized redirect URIs in your Google Cloud Console's Web Client ID settings.
-
Setup Environment Variables Create a
.envfile in the root directory and add your credentials:SUPABASE_URL=your_supabase_url SUPABASE_ANON_KEY=your_supabase_anon_key GOOGLE_WEB_CLIENT_ID=your_google_web_client_id
(Note: The
GOOGLE_WEB_CLIENT_IDshould be the same Web Client ID you created in Google Cloud Console.) -
Install dependencies
flutter pub get
-
Run the app
flutter run
| Name | Role | Responsibilities | Contact |
|---|---|---|---|
| Shelfina Khayla Anindita | Product Manager | Overseeing project requirements and timeline | linkedin.com/in/shelfina-khayla-anindita |
| Naufaldo Dafa Zaki Bastian | UI/UX Designer | Designing application interfaces and user flows | linkedin.com/in/naufaldo-dafa-zb |
| Nabath Nur Muhammad | Mobile Engineer | Developing the Flutter application and integration | linkedin.com/in/nabath-nuur |
