Skip to main content

Headless scheduling and time-slot engine for Python applications.

Project description

slotify

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

slotify is a production-oriented, headless Python scheduling engine for time ranges, slots, bookings, blocks, and scheduling rules.

Positioning

This package is intended for developers embedding scheduling behavior into:

  • web backends
  • APIs and microservices
  • internal tools
  • CLI workflows
  • reusable open-source libraries

It is framework-agnostic and storage-agnostic by design.

Features

  • timezone-aware API with UTC-normalized calculations
  • source-of-truth event model plus derived slots
  • pluggable rules and strategies
  • optimistic concurrency hooks
  • strong typing and modern Python packaging
  • in-memory implementation for tests and prototyping
  • merge/split free-slot behavior out of the box

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),
    metadata={"reason": "maintenance"},
)

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

Installation

python -m pip install slotify

For local development:

python -m pip install -e .[dev]

Docs

See the docs/ directory for:

  • overview
  • quickstart
  • concepts
  • extensibility notes
  • roadmap

Status

Version 0.1.0 is focused on a clean, reusable core for scheduling logic. 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.0.tar.gz (16.1 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.0-py3-none-any.whl (16.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: slotify_engine-0.1.0.tar.gz
  • Upload date:
  • Size: 16.1 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.0.tar.gz
Algorithm Hash digest
SHA256 f570d1e57a3df6d34bd18b0689d873e6e3c9ebba0cb696722703eda4c17f5d00
MD5 c2fd5dd2fdefcb5fba49567b33cba32a
BLAKE2b-256 fdc18da9d92cbdbfa14c817ec4c4a9447febe9c0eb8efebf798c292682dd0ea8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: slotify_engine-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 16.1 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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f551f4a2f233ac541cf103b89a2ef795fe25989d0aff981348ebf6212e6e401f
MD5 1ec4edb0eae0f1c56b584afde0349189
BLAKE2b-256 b7570269ab3c9b2f2be3cdc13a898b069960c4ec5f63e5fd10df9eb273e829ae

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