DEV Community

Nimesh Solanki
Nimesh Solanki

Posted on

Scheduler App on Google Actions

Project: PDPU Scheduler

πŸ€” What's PDPU Scheduler?

It's a Google Assistant action πŸ€– that tells you about which classes and labs you have today.

πŸ’‘ IDEA:

Whenever a new semester starts, the HoD (Head of Department) of our University mails all the students their daily schedule for labs and lectures. Remembering that schedule during the initial days of the new semester was difficult, Also as the days go by and as the new emails start piling up, that mail with the schedule gets lost. While searching for that email after a few days was another painful task. Every single student faced this issue.

One day while reading about Actions on Google, I thought why not make a voice application to solve that problem for me and all the students facing this issue.

I tried to solve that problem by creating a Google Assistant application, where one just has to ask about the lecture, where that lecture is, whose lecture it is, it also shows the full schedule for that particular day, etc.

How I built it?

At the time of developing this, I didn't know any Databases, so I stored the schedule in a simple JSON file.

First of all, I converted the schedule sheet to the JSON file.
Something like this.

[
  {
    "Sunday": {
      "L*": {
        "type": "Free"
      }
    }
  },
  {
    "Monday": {
      "L9": {
        "type": "Lecture",
        "position": "first",
        "name": "Software Engineering",
        "Professor": "DEF"
      },
      "L10": {
        "type": "Lecture",
        "position": null,
        "name": "Operating System",
        "Professor": "MNO"
      },
      "L11": {
        "type": "Lecture",
        "position": null,
        "name": "Radio Frequency Engineering",
        "Professor": "PQR"
      },
      "L12": {
        "type": "Free"
      },
      "L13": {
        "type": "LAB",
        "h1": {
          "name": "RF Engineering Lab",
          "Professor": "PQR"
        },
        "h2": {
          "name": "OS Lab",
          "Professor": "ABC"
        },
        "h3": {
          "name": "DBMS Lab",
          "Professor": "XYZ"
        }
      },
      "L15": {
        "type": "Free"
      },

As you can see, its an array of objects containing schedule day-wise and with their time.

Top-level property is the day of the week, then comes the lecture/lab time, if its a lab then the next object under that level is the batch, in this case, h1, h2, h3 are the batches of my class.

L10 represents lecture at 10:00 Hours
L15 represents lecture at 15:00 Hours

One of the major problems I encountered while developing this project was to figure out the timezone and provide the information accordingly.
Because the person might be in different timezone and the server where this function would be deployed in, would be in the different timezone so to figure out that issue I used a npm package called Momentjs, which does all the heavy lifting of converting the timezone, adding and subtracting from the current time and date.

Once that's out of the way, next is simply configuring the dialogflow to trigger the function based on the user's intent.

Tech Stack used:

Deployed at Firebase Cloud Functions

I've deployed this application on Cloud Functions and within just one week of launching this app, I got more than 1000 conversations with users within 10 days.

Demo Link

Link to Code:

GitHub logo nish17 / scheduler

It's a Google Assistant action for PDPU that tells you about which classes and labs you have today.

PDPU Scheduler

Site Logo

πŸ€” What's PDPU Scheduler?

It's a Google Assistant action πŸ€– that tells you about which classes and labs you have today.

Must Try: PDPU Scheduler's Phone Gateway πŸ“ž +1 201-298-3936

Respond with test once it receives the call.

⚠️ Carrier charges may apply.

πŸ“± Screenshots

Search lecture by professor name

Get the details of current on going Lecture

Get the details of next Lecture

Get today's schedule with one command

❀️ Credits

πŸŽ“ License

MIT

[Final Note]: Feel free to modify it and use it based on your needs, also pull requests for adding new features/updating something are always welcome.

if you liked this project, please consider starring this project on Github.

Thank you.

Top comments (0)