Source Tree
Jellyfin is a maze of clients, plugins, and other useful projects. These source trees can serve as an excellent tool to inform new developers about the structure of several projects.
Jellyfin Server
- .ci: Azure Pipelines Build definitions
- DvdLib: DVD Anaylzer
- Emby.Dlna: DLNA support for the server- Profiles: DLNA Profiles for clients
 
- Profiles: 
- Emby.Drawing: image processor managing the image encoder and image cache paths
- Emby.Naming: parsers for the media filenames
- Emby.Notifications: listening for events and sending the associated notification
- Emby.Photos: metadata provider for photos
- Emby.Server.Implementations: main implementations of the interfaces- ScheduledTasks: all scheduled tasks can be found here
 
- ScheduledTasks: 
- Jellyfin.Api: Jellyfin API- Controller: API controllers answering the Jellyfin API requests
- Helpers:
- MediaInfoHelper.cs: logic for the stream builder that determines method of playback such as Direct Play or Transcoding
 
- MediaInfoHelper.cs: 
 
- Controller: 
- Jellyfin.Data: models used in the Entity Framework Core Database schema
- Jellyfin.Drawing.Skia: image manipulation like resizing images, making image collages
- Jellyfin.Networking: managing network interaces and settings
- Jellyfin.Server.Implementations: like Emby.Server.Implementations, implementations using the EF Core Database
- Jellyfin.Server: main server project that starts the whole server
- MediaBrowser.Common: common methods used throughout the server
- MediaBrowser.Controller: interface definitions
- MediaBrowser.LocalMetadata: metadata provider and saver for local images, local Collections and Playlists
- MediaBrowser.MediaEncoding: managing ffmpeg while interacting with the media files
- MediaBrowser.Model: defining models used throughout the server
- MediaBrowser.Providers: managing multiple metadata sources
- MediaBrowser.XbmcMetadata: metadata provider and saver for local .nfo files
- RSSDP: RSSDP library, including custom changes, for the Simple Service Discovery (SSDP) protocol
- apiclient: files used for generating the axios API client
- deployment: files used while building Jellyfin for different plattforms
- tests: multiple Unit Test projects testing Jellyfin functionality
- Dockerfile.* Dockerfiles defining the Jellyfin Docker image
Web Client
- src:
- assets: images, styles, splash screens, and any other static assets- css: all global stylesheets used throughout the client
- img: images for things like device icons and logos
- splash: progressive web apps will show these splash screens
 
- css: 
- components: custom elements used for different sections of the user interface- playerstats.js: display playback info in browsers and other clients that include the web source
 
- playerstats.js: 
- controllers: scripts that handle the logic for different pages
- elements: custom UI components that are used globally such as buttons or menus
- legacy: currently used for all polyfills and scripts related to backwards compatibility
- libraries: dependencies that we eventually want to remove and include during the build step
- scripts: any script that isn't tied to a UI element or page but rather general functionality
- strings: translations for the entire interface
- themes: custom and bundled themes can be found here in their own directories
 
- assets: 
Kodi
- jellyfin_kodi
- database: manipulating the local Jellyfin sqlite database
- dialogs: code behind popup menus for user interaction
- entrypoint: main add-on settings page
- helper: small helper functions, mostly formatting or reused functions
- jellyfin: interacting with the server
- objects:
- kodi: handling local Kodi media types and database
 
- kodi: 
 
- database: 
- resources:
- language: string files for localization
- skins: design of popup menus for user interaction
 
- language: