created:
    - database/factories/ScreenFactory.php
    - database/factories/PlaylistFactory.php
    - database/factories/PlaylistItemFactory.php
    - database/factories/LayoutFactory.php
    - database/factories/PageFactory.php
    - database/factories/AnnouncementFactory.php
    - database/factories/ScheduleEntryFactory.php
    - app/Models/Screen.php
    - app/Models/Playlist.php
    - app/Models/PlaylistItem.php
    - app/Models/Layout.php
    - app/Models/Page.php
    - app/Models/Announcement.php
    - app/Models/ScheduleEntry.php
updated:
    - database/migrations/2023_07_28_163535_create_screens_table.php
    - database/migrations/2023_07_28_163536_create_playlists_table.php
    - database/migrations/2023_07_28_163537_create_playlist_items_table.php
    - database/migrations/2023_07_28_163538_create_layouts_table.php
    - database/migrations/2023_07_28_163539_create_pages_table.php
    - database/migrations/2023_07_28_163540_create_announcements_table.php
    - database/migrations/2023_07_28_163541_create_schedule_entries_table.php
models:
    Screen: { playlist_id: id, name: string, last_ping_at: 'timestamp nullable' }
    Playlist: { name: string, relationships: { hasMany: 'PlaylistItem, Screen' } }
    PlaylistItem: { playlist_id: id, page_id: id, layout_id: id, title: 'string nullable', duration: 'int default:10', content: 'json nullable' }
    Layout: { name: string, component: string, relationships: { hasMany: PlaylistItem } }
    Page: { name: string, component: string, schema: 'json nullable', relationships: { hasMany: PlaylistItem } }
    Announcement: { title: string, content: text, starts_at: timestamp, ends_at: timestamp }
    ScheduleEntry: { title: string, room: 'string nullable', starts_at: timestamp, ends_at: timestamp, is_moved: 'boolean default:false' }
