SPTM is a Flutter-based mobile frontend for the OOAD project. It provides the user-facing app experience and integrates with the project's backend APIs and shared assets. This README is a practical manual for getting the app running, understanding the structure, and contributing safely.
- Project Overview
- App Features and Usage
- Tech Stack
- Requirements
- Quick Start
- Environment Configuration
- Project Structure
- Common Workflows
- Running and Debugging
- Testing and Quality
- Build and Release
- Assets and Localization
- Troubleshooting
This repository contains the mobile frontend built with Flutter. It targets Android, iOS, and optionally desktop/web platforms depending on build configuration. The codebase is organized by Flutter conventions, with platform-specific folders for native integration and a shared Dart UI layer.
Primary goals:
- Provide a clean, responsive user experience
- Keep UI logic modular and testable
- Integrate with backend APIs reliably
- Support multiple platforms with a shared codebase
This section describes what the app does from a user perspective and how core flows work.
- Users can register a new account and log in with email and password.
- A "forgot password" flow allows password resets from the login screen.
- Sessions are required to access personal tasks, missions, and insights.
- The dashboard shows your active tasks grouped by urgency and importance.
- Tasks appear with title, mission/sub-mission labels, context tags, and due dates.
- A quick-add flow lets you create tasks directly from the dashboard.
- Tasks can be toggled complete/incomplete from the list with immediate visual updates.
- Create tasks with title, description, due date, urgency, importance, and context.
- Assign tasks to a mission or sub-mission when applicable.
- Edit task details at any time, including due dates and context.
- Delete tasks you no longer need.
- Each task has a dedicated detail view for rich editing.
- Add descriptive notes to capture requirements or reminders.
- Create a checklist to break the task into smaller steps.
- Archive a task from the detail view when it is no longer active.
- Missions represent larger goals; sub-missions break them into smaller milestones.
- A missions list shows all missions and sub-mission counts.
- Each mission detail page shows linked tasks for each sub-mission.
- Tasks can be created, updated, and completed within a sub-mission context.
- A calendar view lets users browse tasks by day.
- Selecting a date shows all tasks due on that day.
- Quick toggles let users mark tasks done without leaving the calendar.
- Notifications include due-soon reminders and weekly insights.
- Inbox tasks can be assigned details like due date, urgency, and context.
- Users can act on a notification to open and update the related task.
- Weekly insights summarize completed tasks and mission progress.
- Progress views help spot momentum and backlog areas.
- Archived tasks are hidden from daily views.
- The archive screen allows restoring or permanently deleting tasks.
- Settings provide access to profile information and app actions.
- Use settings to review account data and sign out when needed.
- Flutter 3.38.5
- Dart 3.10.4
- DevTools 2.51.1
- Platform targets: Android, iOS (with optional desktop/web folders present)
Install the following tools before running the app:
- Flutter SDK (version noted above)
- Android Studio and Android SDK (for Android builds)
- Xcode (for iOS builds, macOS only)
- CocoaPods (for iOS dependencies)
Optional:
- Chrome (for web builds)
- Desktop toolchains for macOS/Windows/Linux if you plan to build those targets
- Install Flutter and ensure it is on your PATH.
- Clone this repository and open it in your IDE.
- Fetch dependencies:
flutter pub get- Run the app:
flutter runThe app may require environment-specific settings (API base URL, feature flags, etc.). If your team uses local configuration files or flavors, document them here. Typical options include:
- Dart defines:
--dart-define=KEY=VALUE - Flutter flavors for dev/staging/prod
- Platform-specific configuration in
android/andios/
If you are unsure, check with your team or review API_DOCUMENTAION.md for backend expectations.
Key folders:
lib/: Main Dart source code (UI, state, services, models)assets/: Images, fonts, and other bundled resourcesandroid/: Android native projectios/: iOS native projectweb/,macos/,windows/,linux/: Optional platform targets
List devices:
flutter devicesRun on a specific device:
flutter run -d <device_id>- Use Flutter DevTools for widget inspection and performance profiling.
- For Android, use Android Studio logcat.
- For iOS, use Xcode console logs.
Recommended testing commands:
flutter analyze
flutter testConsider adding integration tests if user flows are critical.
flutter build apk
flutter build appbundleflutter build iosUse Xcode to archive and distribute when targeting the App Store.
- Add assets under
assets/and register them inpubspec.yaml. - If localization is used, keep ARB files in a dedicated folder and update generated localization files accordingly.
- Run
flutter doctorto validate setup. - If iOS pods fail, run
pod installinios/(orpod repo updateif needed). - If builds fail after dependency changes, try
flutter cleanfollowed byflutter pub get.