Schedule-maker: a cli app for creating school schedules

Hello!

When I started college, I needed to create my school schedules mostly from scratch (selecting individual classes and checking that my classes didn’t overlap). Unfortunately, doing it manually is very tiring, slow and prone to error.

So I thought: why not automate it? this is the result of that experiment. Ofc, this is a haskell forum, so obviously it is written in haskell. I’d appreciate very much if someone more experienced than me wants to take a look at the code for some feedback! :slight_smile:

Basically schedule-maker works by creating a yaml file with the specification of the classes you might consider taking. Then run schedule-maker classes.yaml and it will spit out a schedules.xlsx file with a valid schedule per worksheet.

There are a some more features. For more information the repo is here (licensed bsd-3 clause): GitHub - 0rphee/schedule-maker

I’ve also used this project as an opportunity to experiment with releases, github actions and distributing binaries, so there are already binaries for macos, windows and linux (ubuntu?) if you want to try it out without having to build the project yourself (I’ve ‘tested’ only the macos and windows builds, I hope they work without hiccups!).

If you have any questions about it, I’ll gladly respond!

schedule-maker supports the yaml file to be either in english or spanish, here is an example:

# There may be multiple entries for classes with the same subject name (ex. 'Diferential Calculus'), but the resulting schedules will only have 1 class of each type.
- name: Subject1
  class-id: "0001" # This can be any string, but it should be unique to each class.
  professor: John Doe
  days:
    - day: monday
      start: 17:30
      end: 19:00
    - day: tuesday
      start: 17:30
      end: 19:00
    - day: thursday
      start: 17:30
      end: 19:00
    - day: wednesday
      start: 7:00
      end: 8:30
    - day: friday
      start: 7:00
      end: 8:30
    - day: saturday
      start: 7:00
      end: 8:30
    - day: sunday
      start: 7:00
      end: 8:30
- name: Subject2
  class-id: "0002"
  professor: Robert Cohen
  days:
    - day: monday
      start: 7:00
      end: 8:30
    - day: friday
      start: 7:00
      end: 8:30
8 Likes

Small applications are very important for Haskell progress. They provide a useful way to assess whether the whole toolchain and libraries are fit for purpose.

Congratulations!

3 Likes

@0rphee

Might you be interested in submitting your package to Hackage (https://hackage.haskell.org ), the standard Haskell package repository? I’m not affiliated with them, but yours looks like a small and useful utility, and those are always nice to have.

Just please be aware that packages cannot be deleted on Hackage.

@Liamzy I’ve thought about it, actually I was about to do that but decided to see first (by this post & a reddit post), if there was a good response/interest to do it, so that submitting it to hackage actually made sense :slight_smile:

1 Like