Skip to main content

Headless scheduling engine plus optional Django companion app.

Project description

slotify

Русская версия: README.md.

slotify is a production-oriented scheduling engine with two layers:

  • slotify: framework-agnostic core for time ranges, slots, bookings, blocks, and rules
  • slotify_django: optional Django companion app with models, admin, and services

Install

Core only:

python -m pip install slotify-engine

With Django support:

python -m pip install 'slotify-engine[django]'

For local development:

python -m pip install -e .[dev]

Core example

from datetime import UTC, datetime, timedelta

from slotify import InMemoryScheduleRepository, Scheduler
from slotify.domain import ScheduleDefinition, TimeRange

repository = InMemoryScheduleRepository()
scheduler = Scheduler(repository=repository)

repository.create_schedule(
    ScheduleDefinition(
        schedule_id="room-a",
        bounds=TimeRange(
            start=datetime(2026, 3, 23, 8, 0, tzinfo=UTC),
            end=datetime(2026, 3, 23, 18, 0, tzinfo=UTC),
        ),
        slot_size=timedelta(minutes=30),
        timezone="UTC",
    )
)

scheduler.add_block(
    "room-a",
    start=datetime(2026, 3, 23, 12, 0, tzinfo=UTC),
    end=datetime(2026, 3, 23, 13, 0, tzinfo=UTC),
)

available_slots = scheduler.get_slots("room-a")

Django companion app

Add to INSTALLED_APPS:

INSTALLED_APPS = [
    ...,
    "slotify_django",
]

Then run:

python manage.py migrate

You get reusable models out of the box:

  • slotify_django.Schedule
  • slotify_django.AvailabilityRule
  • slotify_django.ScheduleEvent

And reusable services:

from slotify_django.services import generate_slots

slots = generate_slots(schedule, start=date(2026, 3, 23), end=date(2026, 3, 30))

The admin also includes basic schedule and event management.

Status

Version 0.1.0 is focused on a clean reusable core and a pragmatic Django starter layer. It does not implement distributed locking or full RRULE recurrence yet.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

slotify_engine-0.1.1.tar.gz (19.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

slotify_engine-0.1.1-py3-none-any.whl (21.9 kB view details)

Uploaded Python 3

File details

Details for the file slotify_engine-0.1.1.tar.gz.

File metadata

  • Download URL: slotify_engine-0.1.1.tar.gz
  • Upload date:
  • Size: 19.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for slotify_engine-0.1.1.tar.gz
Algorithm Hash digest
SHA256 5920de95ccd3d304205c06dce5639febcb38a1a0421f5434608cbdb35e1bea46
MD5 3b35eeb5491aa3519583d4484f10abce
BLAKE2b-256 8a4ba15dfc6699ebc0aeca2f1006d9805c4f5c3a8e23f782ff3f9cd767608889

See more details on using hashes here.

File details

Details for the file slotify_engine-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: slotify_engine-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 21.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for slotify_engine-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e1e891cfe84b0d28e261e06a4a5033c0887d893a1bf375edcd1f52be856febc6
MD5 54129b0efab837e5f87197d46514aa6e
BLAKE2b-256 e3610a3d07a2c96202009f988b1682705f7384e8fe1c5118658923f29bf30ee0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page