OneTJ is a third-party client for Tongji University services built with Flutter. The project focuses on a cleaner student experience around authentication, dashboard data, timetable viewing, grades, and utility tools.
Original repository: FlowerBlackG/OneTJ
This project is under active development. Some features are complete enough for daily use, while others are still evolving.
- WebView-based login flow for Tongji authentication
- Dashboard with student profile and current term calendar
- Timetable view
- Grades module
- Tools entry, including physics lab related pages
- Settings, about page, developer options, and log viewer
- Local persistence with Hive and shared preferences
- Chinese and English localization
- Flutter / Dart
- Material 3
go_router- Hive
flutter_inappwebview
- Use
fvm flutterfor all Flutter commands in this repository. - The project depends on a local OpenHarmony fork of
flutter_inappwebviewunderlocal_packages/flutter_inappwebview. pubspec.yamlpins theflutter_inappwebview_*subpackages throughdependency_overrides.- HarmonyOS-related dependencies such as
path_provider,device_info_plus,image_picker,open_filex, andflutter_math_forkare sourced from OpenHarmony-compatible forks.
- Ensure FVM is installed and the required Flutter SDK is available.
- Make sure
local_packages/flutter_inappwebviewexists in the workspace. - Install dependencies:
fvm flutter pub get- If model serialization files need regeneration, run:
fvm dart run build_runner build --delete-conflicting-outputs- Run the app:
fvm flutter runlib/app/: app bootstrap, dependency injection, constants, lifecycle, routerlib/features/: feature modules such as launcher, login, dashboard, timetable, grades, tools, settings, about, and app updatelib/models/: shared models and generated serialization targetslib/repo/: repositories for cached and persisted datalib/services/: API integration and app serviceslib/l10n/: localization resourcesassets/: app assetslocal_packages/: local plugin forks and overridesdocs/: supplementary project documentation
- App startup initializes dependencies and lifecycle services.
- Launcher checks locally cached authentication state.
- If login is required, the app opens a WebView-based authentication flow.
- After login, the app enters the home shell with dashboard, timetable, tools, and settings tabs.
- Feature modules fetch and cache student-related data as needed.
- Do not edit generated files under
windows/flutter/ephemeral/. - Do not manually edit
*.g.dartfiles; regenerate them withbuild_runner.
See CONTRIBUTING.md for additional collaboration guidance.