Skip to content

one-zero-eight/schedule-builder-backend

Repository files navigation

Schedule Builder API | InNoHassle ecosystem

https://api.innohassle.ru/schedule-builder/v0


image

Schedule Builder

Schedule Builder is created as a tool for Innopolis University Department of Education (DoE) to assist the department in efficient creation of high-quality curriculums for bachelors, masters, and PhD students without any conflicts.
Demo Spreadsheet · Demo Video

Table of contents

Did you know that GitHub supports table of contents by default 🤔

About

Project Goal

Our key goal is to simplify the process of schedule creation and correction for Innopolis University DoE.

Project Description

Schedule Builder is a Google Spreadsheets plugin. The plugin is opened in parallel with the schedule and launched to check the table for conflicts. Upon successful fetching, the user receives a list of conflicts found by the plugin. To simplify the navigation, conflicts may be highlighted (user's cursor is moved to the conflicting cell) and ignored (conflict is hidden from the user's view). The user may repeat scanning until all conflicts are resolved.

Technologies

How to use?

To test our product, you may follow the deploy link to Google Spreadsheets table with deployed plugin in it. In the plugin, you will be firstly required to visit the special page of InNoHassle and obtain your requests token. Paste the token in the special field and click the schedule checking button. After collisions fetching, you may navigate through them and take actions in the table.

Development

Set up for development

  1. Install Python 3.12+, uv, Docker.
  2. Install project dependencies with uv.
    uv sync
  3. Copy settings.example.yaml to settings.yaml and add token:
    cp settings.example.yaml settings.yaml
  4. Start development server:
    uv run -m src.api --reload

    Follow the provided instructions (if needed).

  5. Open the following link the browser: http://localhost:8012.

    The API will be reloaded when you edit the code.

Important

For endpoints requiring authorization, click "Authorize" button in Swagger UI!

Tip

Edit settings.yaml according to your needs, you can view schema in settings.schema.yaml.

Set up PyCharm integrations

  1. Run configurations (docs). Right-click the __main__.py file in the project explorer, select Run '__main__' from the context menu.
  2. Ruff (plugin). It will lint and format your code. Make sure to enable Use ruff format option in plugin settings.
  3. Pydantic (plugin). It will fix PyCharm issues with type-hinting.
  4. Conventional commits (plugin). It will help you to write conventional commits.

Deployment

We use Docker with Docker Compose plugin to run the service on servers.

  1. Copy the file with settings: cp settings.example.yaml settings.yaml.
  2. Change settings in the settings.yaml file according to your needs (check settings.schema.yaml for more info).
  3. Install Docker with Docker Compose.
  4. Build and run docker container: docker compose up --build.

FAQ

How to run tests?

Run uv run pytest to run all tests.

How to update dependencies?

  1. Run uv sync -U to update all dependencies.
  2. Run uv pip list --outdated to check for outdated dependencies.
  3. Run uv add -U <dependency_name> to update a specific dependency in pyproject.toml.

Contributing

We are open to contributions of any kind. You can help us with code, bugs, design, documentation, media, new ideas, etc. If you are interested in contributing, please read our contribution guide.

About

No description, website, or topics provided.

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors 6