No description
  • Dart 77.9%
  • C++ 11.2%
  • CMake 8.4%
  • HTML 1.6%
  • Swift 0.4%
  • Other 0.4%
Find a file
noelh 43b3e18b9d
Some checks failed
Flutter Local Build / android-build (push) Failing after 4m43s
test: bump patch
2026-04-27 15:50:13 +02:00
.forgejo/workflows [skip ci] 2026-04-27 15:49:27 +02:00
.github Initial commit of Plan App 2026-04-13 21:08:16 +02:00
android feat: web icon 2026-04-27 10:57:09 +02:00
assets feat: web icon 2026-04-27 10:57:09 +02:00
ios feat: web icon 2026-04-27 10:57:09 +02:00
lib feat: multi language support 2026-04-27 15:03:39 +02:00
linux chore: clear plugin registrants; add gitkeep in asset folder 2026-04-21 22:11:15 +02:00
test Initial commit of Plan App 2026-04-13 21:08:16 +02:00
web feat: web icon 2026-04-27 10:57:09 +02:00
windows chore: clear plugin registrants; add gitkeep in asset folder 2026-04-21 22:11:15 +02:00
.gitignore chore: add generated build files 2026-04-21 22:09:36 +02:00
.metadata feat: add launcher icons and splash screen 2026-04-23 21:40:49 +02:00
analysis_options.yaml Initial commit of Plan App 2026-04-13 21:08:16 +02:00
devtools_options.yaml Initial commit of Plan App 2026-04-13 21:08:16 +02:00
flutter_launcher_icons.yaml feat: web icon 2026-04-27 10:57:09 +02:00
flutter_native_splash.yaml fix: better splash bg color 2026-04-27 11:06:15 +02:00
icons.sh fix: proper icons 2026-04-24 07:52:20 +02:00
l10n.yaml feat: multi language support 2026-04-27 15:03:39 +02:00
pubspec.lock feat: multi language support 2026-04-27 15:03:39 +02:00
pubspec.yaml test: bump patch 2026-04-27 15:50:13 +02:00
README.md update README.md 2026-04-14 10:35:19 +02:00

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

  1. Launch the app
  2. Tap the settings icon (⚙️) in the top-right corner
  3. Enter your DAVINCI server configuration:
    • Server URL: e.g., http://192.168.178.116 or http://h2723836.stratoserver.net
    • Username: Your class/user identifier (e.g., IT 25/4)
    • API Key: Your authentication key
  4. Click "Test Connection" to verify credentials
  5. 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 management
  • http: HTTP requests
  • shared_preferences: Local credential storage
  • intl: 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:// or https://)
  • 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.