Skip to content

talhak55/telemedicine-scheduler-api

Repository files navigation

Telemedicine Scheduling API

API‑only Backend für ein telemedizinisches Terminplanungssystem. Laravel 12, Octane mit FrankenPHP.


Inhaltsverzeichnis


Voraussetzungen

  • PHP ≥ 8.4
  • Composer ≥ 2.5
  • Datenbank: MariaDB/MySQL oder SQLite
  • Optional (empfohlen für Prod/Dev): Docker + Docker Compose

Schnellstart

Lokale Installation (mit Docker Compose)

# 1) Abhängigkeiten
composer install

# 2) Environment anlegen
cp .env.example .env
php artisan key:generate

#3) Docker container starten
docker compose up -d --build

# 4) DB konfigurieren (.env) und migrieren & seeden
docker exec api php artisan migrate --seed

# API erreichbar unter http://localhost

Konfiguration

.env (App & DB)

Wichtige Variablen:

APP_NAME="Telemedicine Scheduling API"
APP_ENV=local
APP_DEBUG=true
APP_URL=http://localhost:8000
APP_TIMEZONE=UTC

# DB (Beispiel MariaDB)
DB_CONNECTION=mariadb
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=secret

# Rate Limit
RATE_LIMIT_PER_MINUTE=60
APPOINTMENT_LIMIT_PM=10

# Cache (Cluster/Octane: Redis empfohlen)
CACHE_DRIVER=redis

Für Tests siehe Abschnitt Tests (separate .env.testing).

Migrationen & Seeders

Tabellen: specializations, doctors, time_slots, appointments (UUID‑PKs). Zeitangaben in UTC.

Seeders:

  • SpecializationSeeder
  • DoctorSeeder
  • TimeSlotSeeder (generiert Slots für die nächsten Tage)

Ausführen:

php artisan migrate --seed
# oder
php artisan migrate:fresh --seed

API-Endpunkte

Alle Antworten sind JSON. Beispiel-Fehler 404:

{"message":"Not Found"}

Tests (Pest + PHPUnit)

Wir nutzen Pest v3 + PHPUnit 11.

tests/Pest.php (global):

uses(Tests\TestCase::class, Illuminate\Foundation\Testing\RefreshDatabase::class)->in('Feature','Unit');

beforeEach(function () {
    $this->withoutMiddleware(Illuminate\Routing\Middleware\ThrottleRequests::class);
});

.env.testing (SQLite In‑Memory):

APP_ENV=testing
DB_CONNECTION=sqlite
DB_DATABASE=:memory:
CACHE_STORE=array
QUEUE_CONNECTION=sync
SESSION_DRIVER=array
MAIL_MAILER=array

phpunit.xml (Env‑Overrides):

<php>
    <env name="APP_ENV" value="testing"/>
    <env name="DB_CONNECTION" value="sqlite"/>
    <env name="DB_DATABASE" value=":memory:"/>
</php>

Tests ausführen:

./vendor/bin/pest

Insomnia-Collection

Eine Import‑Datei kann unter storage/insomnia_export.json abgelegt und über Insomnia → Import → From File geladen werden. Beispiel‑Environment‑Variablen: base_url, doctor_id, appointment_id, date.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors