Skip to main content

A generic and flexible appointment scheduling system for Django applications

Project description

Appointment Scheduler

Appointment Scheduler is a generic and flexible appointment scheduling package for Django applications. It is designed to work with any model (e.g., doctor, tutor, counsellor) and provides a robust and efficient way to manage availability, slots, and appointments.


Features

  • Generic and Flexible: Works with any Django model using GenericForeignKey.
  • Advanced Slot Management: Create, update, and delete slots dynamically.
  • Robust Booking System: Book and cancel appointments seamlessly.
  • Efficient Slot Generation: Automatically generate slots based on availability and slot duration.
  • Customizable Weekly Offs: Configure off days and handle "Off" periods.
  • Conflict Resolution: Prevents overlapping slots and handles cancellations gracefully.

Installation

You can install the package using pip:

pip install django-appointment-scheduler

🚀 Django Appointment Scheduler - Quick Start

Step 1: Install Dependencies

pip install Django djangorestframework

Step 2: Install the Appointment Scheduler Package

pip install django-appointment-scheduler

Step 3: Create a New Django Project

django-admin startproject tutor_project
cd tutor_project

Step 4: Create a New App

python manage.py startapp main

Step 5: Add the Package to Installed Apps

Edit your settings.py to include the following:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # Your app
    'main',
    # Appointment Scheduler Package
    'django_appointment_scheduler',
]

Step 6: Define Your Models (main/models.py)

Create a simple model to test:

from django.db import models

class Tutor(models.Model):
    name = models.CharField(max_length=100)

    def __str__(self):
        return self.name

Step 7: Make Migrations and Migrate

python manage.py makemigrations main
python manage.py makemigrations django_appointment_scheduler
python manage.py migrate

Step 8: Set Up URLs (tutor_project/urls.py)

Include the package URLs:

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/', include('django_appointment_scheduler.urls')),  # Include package URLs
]

Step 9: Run the Server

python manage.py runserver

Step 10: Create Tutor Instances via the Shell

python manage.py shell
from main.models import Tutor

# Create some tutors
Tutor.objects.create(name="Dr. John Doe")
Tutor.objects.create(name="Dr. Jane Smith")

# Check if they are created
print(Tutor.objects.all())

📝 API Usage

Set Availability for a Tutor

You can pass list into weekly_offs

curl -X POST http://localhost:8000/api/tutor/1/set-availability/ \
  -H "Content-Type: application/json" \
  -d '{
        "start_date": "2025-03-24",
        "end_date": "2025-03-31",
        "start_time": "10:00:00",
        "end_time": "15:00:00",
        "slot_duration": 30,
        "weekly_offs": ["Sunday"]
      }'

You can set the entire date range as Off by using the keyword “Off” in the weekly_offs list. This is useful when you want to mark a period as completely unavailable.

"weekly_offs": ["Off"]

Additionally, you can pass multiple weekdays to the weekly_offs list to mark specific days of the week as unavailable.

"weekly_offs": ["Sunday", "Friday"]

Book an Appointment

curl -X POST http://localhost:8000/api/tutor/1/book-appointment/1/ \
  -H "Content-Type: application/json" \
  -d '{
        "student_name": "Alice Johnson",
        "booked_by": "Admin"
      }'

Cancel an Appointment

curl -X DELETE http://localhost:8000/api/tutor/1/cancel-appointment/1/

📝 Notes

For a more detailed and engaging read, check out my Medium article: Introducing the Django Appointment Scheduler - Your Ultimate Solution for Managing Appointments


🎉 Done!

Your Django Appointment Scheduler is up and running! You can now manage tutor appointments seamlessly.

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

django_appointment_scheduler-0.1.4.tar.gz (8.7 kB view details)

Uploaded Source

Built Distribution

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

django_appointment_scheduler-0.1.4-py3-none-any.whl (8.6 kB view details)

Uploaded Python 3

File details

Details for the file django_appointment_scheduler-0.1.4.tar.gz.

File metadata

File hashes

Hashes for django_appointment_scheduler-0.1.4.tar.gz
Algorithm Hash digest
SHA256 88afac74073f5ea1be992cf00f0709d5c1a14bcac001a06f95db8b79fe6d35c4
MD5 684c20808f268d2c38074ecb5a1e0cf6
BLAKE2b-256 cd5b247f780adc3f2999c2552ebf500c8f20a5f5d83b2aaae29429ddd93ad649

See more details on using hashes here.

File details

Details for the file django_appointment_scheduler-0.1.4-py3-none-any.whl.

File metadata

File hashes

Hashes for django_appointment_scheduler-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 22d089ae3ac5a62eff98eace47ac32a28967fbfffc92d919daea12d41f5c00da
MD5 6724b04c7c6a04d82c3d6a3709f416c4
BLAKE2b-256 829f2ec565cf4098991aae3147d455e3b9a4563c16898ec805864969a506ae9b

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