No description
- Dart 77.9%
- C++ 11.2%
- CMake 8.4%
- HTML 1.6%
- Swift 0.4%
- Other 0.4%
|
|
||
|---|---|---|
| .forgejo/workflows | ||
| .github | ||
| android | ||
| assets | ||
| ios | ||
| lib | ||
| linux | ||
| test | ||
| web | ||
| windows | ||
| .gitignore | ||
| .metadata | ||
| analysis_options.yaml | ||
| devtools_options.yaml | ||
| flutter_launcher_icons.yaml | ||
| flutter_native_splash.yaml | ||
| icons.sh | ||
| l10n.yaml | ||
| pubspec.lock | ||
| pubspec.yaml | ||
| README.md | ||
Generated by Claude Haiku 4.5 & Gemini Pro
Lesson Plan App
A Flutter mobile app for viewing school timetables/lesson schedules. Fetches data from a DAVINCI timetable server and displays lessons in two different views:
- Week View: Compact view showing the entire week (Monday-Friday)
- Day View: Detailed single-day view
Features
- 📅 View lessons organized by day/week
- 🔄 Sync schedules from DAVINCI server
- ⚙️ Configure server credentials in settings
- 🎨 Visual indicators for schedule changes and cancellations
- 📱 Responsive design for Android devices
Prerequisites
- Flutter SDK (>=3.0.0)
- Dart SDK (>=3.0.0)
- Android SDK (for building APK)
- DAVINCI server credentials (URL, username, Password)
Installation
1. Clone/Open the Project
cd planApp
2. Install Dependencies
flutter pub get
3. Build for Android
flutter build apk --release
Or to run directly on a connected device/emulator:
flutter run --release
Configuration
First Run
- Launch the app
- Tap the settings icon (⚙️) in the top-right corner
- Enter your DAVINCI server configuration:
- Server URL: e.g.,
http://192.168.178.116orhttp://h2723836.stratoserver.net - Username: Your class/user identifier (e.g.,
IT 25/4) - API Key: Your authentication key
- Server URL: e.g.,
- Click "Test Connection" to verify credentials
- Tap "Save Settings"
The app will automatically fetch the schedule after saving settings.
Usage
Week View (Tab: Week)
- Shows Monday-Friday of the current week
- Each day displays a summary of lessons
- Tap a day to see detailed information
- Use navigation arrows to browse other weeks
- Click "Today" to quickly return to the current week
Day View (Tab: Day)
- Shows detailed list of lessons for a single day
- Compact display with times, subjects, teachers, and rooms
- Use navigation arrows to browse different days
- Click "Go to Today" to return to today
Settings
- Tap the settings icon (⚙️) to update server credentials
- Verify connection before saving
- Settings are saved locally on the device
Data Display
Each lesson card shows:
- ⏰ Time: Start and end time of the lesson
- 📚 Course: Subject/course title
- 👨🏫 Teacher: Instructor code
- 📍 Room: Classroom location
- 👥 Class: Affected class(es)
- 🔴 Status: Cancelled or moved lessons are highlighted
Technical Details
Architecture
- Provider Pattern: State management using the Provider package
- API Integration: HTTP requests to DAVINCI REST API
- Local Storage: SharedPreferences for credential persistence
- Material Design: Flutter Material 3 design system
API Integration
The app connects to:
GET /daVinciIS.dll?content=json&username=<USERNAME>&key=<KEY>&clientBuild=v1.0.48
Project Structure
lib/
├── main.dart # App entry point
├── models/
│ └── schedule_models.dart # Data models from API
├── services/
│ └── schedule_api_service.dart # API communication
├── providers/
│ ├── schedule_provider.dart # Schedule state management
│ └── settings_provider.dart # Settings state management
└── screens/
├── home_screen.dart # Main navigation
├── week_view_screen.dart # Week view
├── day_view_screen.dart # Day view
├── day_detail_screen.dart # Day details
└── settings_screen.dart # Settings configuration
Dependencies
provider: State managementhttp: HTTP requestsshared_preferences: Local credential storageintl: Date/time formatting
Building APK
# Debug APK
flutter build apk --debug
# Release APK (recommended for distribution)
flutter build apk --release
The APK will be generated at: build/app/outputs/flutter-apk/app-release.apk
Troubleshooting
Connection Failed
- Verify server URL format (include
http://orhttps://) - Check username and API key are correct
- Ensure device has network connectivity
- Confirm DAVINCI server is accessible and running
No Lessons Displayed
- Verify your user account has lessons in the schedule
- Try refreshing by pulling down or tapping the refresh button
- Check that the date range in the schedule is correct
Settings Not Saving
- Ensure sufficient storage space on device
- Check app has storage permissions
- Try clearing app cache and retrying
Future Enhancements
- Push notifications for schedule changes
- Search/filter lessons
- Export schedule to calendar
- Multiple user profiles
- Dark theme support
- Offline mode with cached schedules
Support
For issues or questions, refer to the configuration details provided in the initial backend setup.
License
This project is provided as-is for educational and institutional use.