GithubHelp home page GithubHelp logo

iiumschedule / iium_schedule Goto Github PK

View Code? Open in Web Editor NEW
23.0 2.0 8.0 4.02 MB

Make/Generate IIUM timetable with ease. Integration with IIUM database. App available on Android, MacOS & Windows.

Home Page: https://iiumschedule.iqfareez.com

License: MIT License

Kotlin 0.04% Dart 86.09% CMake 5.18% C++ 6.19% C 0.39% Inno Setup 0.62% Ruby 0.76% Swift 0.72% Objective-C 0.01%
flutter dart iium schedule-maker iium-schedule android pwa web windows albiruni

iium_schedule's Introduction

Flutter Android Web Windows License PRs Welcome BuyMeACoffee

IIUM Schedule App

Generate a beautiful & clean IIUM Schedule quickly with automatic subject data fetching. View what courses are available to register at your fingertips.

Load timetable I-Ma'luum and your schedule is ready. As easy as that ๐Ÿ˜‰

IIUM Schedule

Contributions

Feel free to open up issues and/or submit pull requests.

Refer Wiki/Contributing for more info.

[July 2023] Now that I'm graduated from IIUM, your contributions are very much needed since I'm no longrt have access to I-Ma'luum etc. I'll do my best to maintain the project. InshaAllah.

Getting started

See Wiki/Build

Features

  • Generate schedule (ClassUp style)
  • Fetch timetable from I-Ma'luum (Android only)
  • Save schedule in-app.
  • Export as an image (so you can set it as lockscreen)
  • Customize schedule (ie: Change colours etc.)
  • Browse for subjects.
  • Add final exam (and can be added to your favourite calendar)

Releases

App is available for Android, Windows, MacOS, iOS* and Web**. Check it out here!

[!NOTE] > *You'll need to build it yourself

[!NOTE] > **Web support is discontinued (Issue #60). See alternatives projects. Web version branch is 1.0.3-web.

Devlog

Part 1 Part 2 Part 3 Part 4 Part 5

Motivation

  • To contribute something to the university and its people. [ุฎูŠุฑ ุงู„ู†ุงุณ ุฃู†ูุนู‡ู… ู„ู„ู†ุงุณ]
  • To make a tool that can generate a beautiful, lockscreen-worthy schedule for IIUM students that require minimal effort.
  • and maybe others, read more here.

Actually, I'm pretty lazy to make my schedule manually for every semester. So, as a wise developer, we always do this.

Website

For guides extracting subjects, release notes, privacy policy etc. Go to the website at:

https://iiumschedule.iqfareez.com

Similar project like this one

Open PR to add your project here

Contributors

PlashSpeed-Aiman
PlashSpeed-Aiman

๐Ÿ’ป
Elyas Asmad
Elyas Asmad

๐Ÿ’ป ๐ŸŽจ

Related repositories

Mentions

Acknowledgment

Attributions

iium_schedule's People

Contributors

allcontributors[bot] avatar elyasasmad avatar iqfareez avatar nrmnqdds avatar plashspeed-aiman avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

iium_schedule's Issues

exe installer compiled by Inno detected contain virus

The issue

Microsoft Defender detect the installer files contain Wacatac.B!ml.

image

It may be false positive? But it block the download using MS Edge.

After forcing download, when try to install. A dialog pop up and says it has virus error too.
image

Tested tested your manifest locally (winget) also fails. The output is something like: Anti virus program reported the program may contain virus.

Tested the file on virustotal, all green.

For context, the exe is compiled using Inno 6.2.1 on windows runner (Github action), downloaded and uploaded to assets.

Resolution:

Rebuid app for Windows and compile using Inno (same version, 6.2.1) locally.
Installation attempt : success

Recalculate hash and update the winget manifest.
Install attemp: Also success

The question is

Is there a problem with building the app & compiling the installers on GitHub runners?

Other peoples having the same issues:

:bug: Cannot fetch `TQTD2002` subject section `501` in schedule maker

Cannot fetch subject in Schedule Maker, but can fetch in course browser. Indicated that the problem is within the app and not albiruni.

After triaging, looks like for the subject alone, consuming for more than one page in albiruni.

Initially, I'm assuming the the filtered subject should exists in first page only:

https://github.com/iqfareez/iium_schedule/blob/8fb093891528f86ebe9886f01f9c7801d6e32722/lib/views/scheduler/course_validator.dart#L132-L138

Working on quic fix!

From twitter: https://twitter.com/ammarputeraa/status/1578780255833423872?s=20&t=IUCXf0DhgstoWb2jiZED-w

Schedule Generator Implementation

Could you explain in short how did you implement the schedule maker? What libraries did you used to draw the schedule etc? I'm trying to do my own implementation in Java/Kotlin

๐Ÿ’ก User's schedule data is not updated whenever data from i-Maluum is updated

Description

Whenever new data from i-Maluum emerges, user need to remove all the relative subjects and re-add it again to see the changes.

Steps to Reproduce

  1. Create a new schedule by adding subjects or courses.
  2. (At this particular time, there are some unassigned lecturers / lecture rooms for some courses).
  3. Changes from i-Maluum didn't reflect on the current version of the app.
  4. Users need to remove all subjects and re-add it again to see new data emerges.

More Information

Device: OnePlus 9 (LE2115)
OS: OxygenOS 12 (Android 12)
App Version: 1.0.3

Reported by @HaikalAkif

Attachments

IMG_20221027_094741.jpg
IMG_20221027_094759.jpg

:zap: Prompt to update schedule or add auto update option

Problem

On our way to class, we refer to this app to locate the venue. The venue in the schedule is E1-5-4.3. But, when we arrive, there is notice on the door that the venue has been changed.

image

In the class, the lecturer mentioned that the venue is changed that morning. So, I refresh the schedule (using pull-to-refresh feature) and as expected, the venue in the app update to the current latest venue.

Proposal

I think it would be better that the app support auto-updating the schedule (especially venue), or at least, the app will scan for changes in the background, and inform the user if they want to apply those changes. So that, problem like above can be prevented.

Fork Scraper

If you want a working scraper, you can port my Java code to dart. It can collect the course data correctly

Flutter Web Renderer issues

According to https://docs.flutter.dev/development/platform-integration/web/renderers

auto (default) - automatically chooses which renderer to use. This option chooses the HTML renderer when the app is running in a mobile browser, and CanvasKit renderer when the app is running in a desktop browser.

So,

  • on mobile -> HTML
  • on desktop -> CanvasKit

From my testing with the latest release, there are issues with:

  • Saving screenshot
  • Overflow text

Saving screenshot

Web desktop (CanvasKit) Web mobile (HTML)
โœ… โŒ

TextOverflow

Web desktop (CanvasKit) Web mobile (HTML)
Screenshot desktop Screenshot mobile

I will do further testing and verification

Wrong lecturer name

From Yusoff

Hi, I'm a big fan of you, really mesmerised by how you built this app. Always support you ๐Ÿ’ช.There's a problem where name of lecturer and venue is not automatically extracted in the schedule. Dunno if this is a bug or anything but this issue needs your attention tqq.

Hmm. Perhaps there are some difference in data betweem albiruni & Ima'luum??

๐Ÿ’ก Homescreen widget

From feedback iP9QLRvAA9MYoyFwpHAy:

  • easy access for the app
  • recommended widget:
    โ€ข reminder for next class
    โ€ข schedule timetable

:alien: Drop Web Support

The Problem

The web can't be deployed because Isar 3.0.0+ still doesn't have web support. Refer: isar/isar#686

In addition, I've created ci-config.yml file to define which flutter version and build targets when build_all.yml is triggered.

# Flutter channel: `stable` or `beta` or `master`
flutter_channel: stable

# build target. Set `true` or `false`
build_for:
  windows: true
  android: true
  web: false

Will re-enable the web target once Isar issue is fixed.

Action

To experience the new features and improvements, consider using IIUM Schedule app on different platforms - Android/Windows/MacOS. Download them here: https://iiumschedule.iqfareez.com/downloads

๐Ÿ’ก Editable schedule

This is most requested feature since the first release. I'm going to implement the following gradually.

  • Edit venue
  • Edit time
  • Delete/hide subject (use case: tutorial hour)
  • etc. (Suggestion please)

Info banner cannot be dismissed

The info banner on i-Ma'luum importer (sometimes) can't be dismissed/not dismissed automatically.

Steps to reproduce

  1. Open Imaluum importer
  2. Try to login with wrong credential (I think this triggers the page refresh and hence the banner is retriggered)
  3. Exit the imaaluum importer (either by using back button or arrow)

Video

Screen_Recording_20230302_071837.mp4

Highlight current day

Lane, or day name for the current day can be highlighted for easy for users to click on subject on that day.

๐Ÿšธ UX: Add subject from another schedule

From "Zainab":

I think it will be better if there is an option to "Add course" from another kuliyyah after the schedule is complete. Because some students take courses from multiple kuliyyah like kirkhs, celpad, cocu. I was wondering just now how to add my cocu class bcoz we only have an option to choose from one kuliyyah at the start. But i discovered that i just can add course code from another kuliyah but i have to select the kuliyah at the third stage. Maybe you can add note or something to tell that.Nevertheless the overall experience is great! Keep it up! Thank you๐Ÿ‘

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.