Best Flask open-source libraries and packages

Occupancy epfl

Backend of Occupancy FLEP, an interface of edu.epfl.ch useful for finding free rooms or schedule by studyplan, at EPFL.
Updated 2 months ago

License: MIT

Interface of edu.epfl.ch, useful for finding free rooms or schedule by studyplan.

Features

  • Room Availability: Find available rooms based on selected date and time ranges. The system displays rooms that are not booked during the specified time slots.

  • Retrieve Course Information: Easily find detailed information about a specific course by providing its code. The system retrieves details such as the course's semester, assigned teachers, and schedules.

  • Explore Study Plans: Explore study plans using their unique study plan ID. The application showcases an interactive and organized timetable that covers the entire semester, highlighting courses, schedules, and room bookings.

Frontend

React TypeScript TailwindCSS GitHub

The frontend repository can be found here

Scraper

Python MongoDB GitHub

The scraper repository can be found here

Backend

Node.js TypeScript MongoDB Heroku

The current repository is for the backend, which is a Node.js webapp used as a REST API for a MongoDB database, and hosted on Heroku.

Run

In order to run this project, you must have Node.js installed.

  1. Install the required dependencies:
npm install
  1. Configure the environnement variables in the .env file

  2. Launch the Node application:

npm run start

You can now go to localhost:5000 to see the page.

Documentation

The API documentation can be found here

ER Model

erDiagram
    EVENT_BOOKING }o--|| EVENT_SCHEDULE : "is for (if meeting-related)"
    COURSE_BOOKING }o--|| ROOM : "occupies"
    COURSE_BOOKING }o--|| COURSE_SCHEDULE : "is for (if course-related)"
    COURSE ||--o{ COURSE_SCHEDULE : "has"
    EVENT_BOOKING }o--|| ROOM : "occupies"
    TEACHER }o--o{ COURSE: "teach in"
    COURSE ||--o{ PLANNED_IN : "is included in"
    STUDYPLAN ||--o{ PLANNED_IN : "consists of"
    STUDYPLAN }o--|| SEMESTER : "runs during"
    UNIT ||--o{ STUDYPLAN : "is composed of"

    COURSE_BOOKING {
        int schedule_id FK
        int room_id FK
        bool available
    }

    EVENT_SCHEDULE {
        int role_id FK
        string name
        date start_datetime
        date end_datetime
        string type
        string description
        bool available
        bool visible
        int status
    }


    ROOM {
        string name
        string capacity
        string type
        bool available
    }

    COURSE_SCHEDULE {
        int course_id FK
        date start_datetime
        date end_datetime
        string type
        bool available
    }
    
    COURSE {
        string code
        string name
        int credits
        string edu_url
        bool available
    }


    SEMESTER {
        string name
        string type
        date start_date
        date end_date
        bool available
    }

    UNIT {
        string name
        string code
        string promo
        string section
        bool available
    }

    TEACHER {
        string name
        string people_url
        bool available
    }

    EVENT_BOOKING {
        int schedule_id FK
        int room_id FK
        bool available
    }

Contributing

Pull requests are welcome 😄