263 lines
		
	
	
		
			8.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			263 lines
		
	
	
		
			8.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| # SOME DESCRIPTIVE TITLE.
 | |
| # Copyright (C) 2023, The Funkwhale Collective
 | |
| # This file is distributed under the same license as the funkwhale package.
 | |
| # FIRST AUTHOR <EMAIL@ADDRESS>, 2023.
 | |
| #
 | |
| #, fuzzy
 | |
| msgid ""
 | |
| msgstr ""
 | |
| "Project-Id-Version: funkwhale 1.3.0-rc3\n"
 | |
| "Report-Msgid-Bugs-To: \n"
 | |
| "POT-Creation-Date: 2023-03-01 14:05+0100\n"
 | |
| "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 | |
| "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 | |
| "Language-Team: LANGUAGE <LL@li.org>\n"
 | |
| "MIME-Version: 1.0\n"
 | |
| "Content-Type: text/plain; charset=utf-8\n"
 | |
| "Content-Transfer-Encoding: 8bit\n"
 | |
| "Generated-By: Babel 2.11.0\n"
 | |
| 
 | |
| #: ../../developer_documentation/architecture.md:1
 | |
| msgid "Project architecture"
 | |
| msgstr ""
 | |
| 
 | |
| #: ../../developer_documentation/architecture.md:3
 | |
| msgid ""
 | |
| "Funkwhale is made up of several components. Understanding these "
 | |
| "components and what they do is important when contributing to Funkwhale's"
 | |
| " codebase. In this article, we'll break down each part of Funkwhale's "
 | |
| "architecture to help you understand what each component does."
 | |
| msgstr ""
 | |
| 
 | |
| #: ../../developer_documentation/architecture.md:5
 | |
| msgid "Below is a diagram of Funkwhale's project setup."
 | |
| msgstr ""
 | |
| 
 | |
| #: ../../developer_documentation/architecture.md:29
 | |
| msgid "Select a link below to see information about each component."
 | |
| msgstr ""
 | |
| 
 | |
| #: ../../developer_documentation/architecture.md:35
 | |
| msgid "Entrypoints"
 | |
| msgstr ""
 | |
| 
 | |
| #: ../../developer_documentation/architecture.md:37
 | |
| msgid ""
 | |
| "Users can access Funkwhale using a variety of entrypoints. They can make "
 | |
| "use of a Funkwhale application, a Subsonic-compatible application, or by "
 | |
| "calling the API directly. Each entrypoint interacts with the Funkwhale "
 | |
| "backend in the same way."
 | |
| msgstr ""
 | |
| 
 | |
| #: ../../developer_documentation/architecture.md:39
 | |
| msgid "Funkwhale web app"
 | |
| msgstr ""
 | |
| 
 | |
| #: ../../developer_documentation/architecture.md:41
 | |
| msgid ""
 | |
| "The Funkwhale web app is a {abbr}`SPA (Single Page Application)` written "
 | |
| "in [Vue.js](https://vuejs.org) and "
 | |
| "[Typescript](https://typescriptlang.org). This is the application most "
 | |
| "people associate with Funkwhale. Server admins usually run an instance of"
 | |
| " the web app alongside their Funkwhale {term}`pod`, but you can also "
 | |
| "connect a standalone web app to another pod."
 | |
| msgstr ""
 | |
| 
 | |
| #: ../../developer_documentation/architecture.md:43
 | |
| msgid ""
 | |
| "The Funkwhale web app interacts with the Funkwhale API to fetch and "
 | |
| "update data. Using a service worker, the web app caches important "
 | |
| "information for offline use."
 | |
| msgstr ""
 | |
| 
 | |
| #: ../../developer_documentation/architecture.md:45
 | |
| msgid "Funkwhale for Android"
 | |
| msgstr ""
 | |
| 
 | |
| #: ../../developer_documentation/architecture.md:47
 | |
| msgid ""
 | |
| "Funkwhale for Android is the Funkwhale collective's official Android app "
 | |
| "written in [Kotlin](https://kotlinlang.org/). It interacts with the "
 | |
| "Funkwhale API to fetch and update data and stores information for offline"
 | |
| " playback."
 | |
| msgstr ""
 | |
| 
 | |
| #: ../../developer_documentation/architecture.md:49
 | |
| msgid "Subsonic app"
 | |
| msgstr ""
 | |
| 
 | |
| #: ../../developer_documentation/architecture.md:51
 | |
| msgid ""
 | |
| "Funkwhale supports a limited subset of the [Subsonic "
 | |
| "API](http://www.subsonic.org/pages/api.jsp) to support existing Subsonic "
 | |
| "apps. These apps can request data stored on a Funkwhale server by calling"
 | |
| " these endpoints."
 | |
| msgstr ""
 | |
| 
 | |
| #: ../../developer_documentation/architecture.md:53
 | |
| msgid "Nginx/Apache reverse proxy"
 | |
| msgstr ""
 | |
| 
 | |
| #: ../../developer_documentation/architecture.md:55
 | |
| msgid ""
 | |
| "The reverse proxy acts as a layer between a Funkwhale pod and the open "
 | |
| "internet. It enhances the pod's security and provides additional options "
 | |
| "to help increase performance."
 | |
| msgstr ""
 | |
| 
 | |
| #: ../../developer_documentation/architecture.md:57
 | |
| msgid "When a user tries to communicate with a Funkwhale pod, the reverse proxy:"
 | |
| msgstr ""
 | |
| 
 | |
| #: ../../developer_documentation/architecture.md:59
 | |
| msgid ""
 | |
| "Handles the HTTP/HTTPS requests and proxies them to the Funkwhale API "
 | |
| "server"
 | |
| msgstr ""
 | |
| 
 | |
| #: ../../developer_documentation/architecture.md:60
 | |
| msgid "Serves requested static files, such as audio files and stylesheets"
 | |
| msgstr ""
 | |
| 
 | |
| #: ../../developer_documentation/architecture.md:62
 | |
| msgid "Backend"
 | |
| msgstr ""
 | |
| 
 | |
| #: ../../developer_documentation/architecture.md:64
 | |
| msgid ""
 | |
| "The Funkwhale backend is made up of a few components which are "
 | |
| "responsible for:"
 | |
| msgstr ""
 | |
| 
 | |
| #: ../../developer_documentation/architecture.md:66
 | |
| msgid "Communicating with the user's entrypoint and actioning requests"
 | |
| msgstr ""
 | |
| 
 | |
| #: ../../developer_documentation/architecture.md:67
 | |
| msgid "Maintaining data consistency"
 | |
| msgstr ""
 | |
| 
 | |
| #: ../../developer_documentation/architecture.md:68
 | |
| msgid "Communicating with other Funkwhale pods (if federation is enabled)"
 | |
| msgstr ""
 | |
| 
 | |
| #: ../../developer_documentation/architecture.md:70
 | |
| msgid "Django API server"
 | |
| msgstr ""
 | |
| 
 | |
| #: ../../developer_documentation/architecture.md:72
 | |
| msgid ""
 | |
| "The Funkwhale API is a [REST API](https://developer.mozilla.org/en-"
 | |
| "US/docs/Glossary/REST) written in [Python](https://www.python.org/) using"
 | |
| " the [Django REST framework](https://www.django-rest-framework.org/). It "
 | |
| "is the central piece of the project and houses the application's logic."
 | |
| msgstr ""
 | |
| 
 | |
| #: ../../developer_documentation/architecture.md:74
 | |
| msgid "The Funkwhale API is responsible for:"
 | |
| msgstr ""
 | |
| 
 | |
| #: ../../developer_documentation/architecture.md:76
 | |
| msgid ""
 | |
| "Fetching requested data from the cache/database and returning it to the "
 | |
| "requester in a meaningful way"
 | |
| msgstr ""
 | |
| 
 | |
| #: ../../developer_documentation/architecture.md:77
 | |
| msgid ""
 | |
| "Processing incoming data and writing it to the database in a meaningful "
 | |
| "way"
 | |
| msgstr ""
 | |
| 
 | |
| #: ../../developer_documentation/architecture.md:78
 | |
| msgid "Delegating long-running tasks to workers to reduce load"
 | |
| msgstr ""
 | |
| 
 | |
| #: ../../developer_documentation/architecture.md:80
 | |
| msgid "PostgreSQL database"
 | |
| msgstr ""
 | |
| 
 | |
| #: ../../developer_documentation/architecture.md:82
 | |
| msgid ""
 | |
| "Funkwhale uses a [PostgreSQL database](https://www.postgresql.org/) to "
 | |
| "store data. All information that is served by and sent to the Funkwhale "
 | |
| "API is stored in this database."
 | |
| msgstr ""
 | |
| 
 | |
| #: ../../developer_documentation/architecture.md:84
 | |
| msgid ""
 | |
| "The Funkwhale database makes heavy use of "
 | |
| "[indexes](https://www.postgresql.org/docs/current/indexes.html) for "
 | |
| "enhanced performance."
 | |
| msgstr ""
 | |
| 
 | |
| #: ../../developer_documentation/architecture.md:86
 | |
| msgid "Redis cache and message queue"
 | |
| msgstr ""
 | |
| 
 | |
| #: ../../developer_documentation/architecture.md:88
 | |
| msgid ""
 | |
| "Funkwhale uses [Redis](https://redis.io/) to cache information from the "
 | |
| "database and to store a queue of messages to send. We use this cache to "
 | |
| "avoid locking database resources and to speed up requests."
 | |
| msgstr ""
 | |
| 
 | |
| #: ../../developer_documentation/architecture.md:90
 | |
| msgid "Celery worker"
 | |
| msgstr ""
 | |
| 
 | |
| #: ../../developer_documentation/architecture.md:92
 | |
| msgid ""
 | |
| "Funkwhale has to handle a lot of tasks that take longer than the average "
 | |
| "HTTP request/response cycle. To ensure these tasks complete and don't "
 | |
| "impact the API's performance, they are offloaded to a "
 | |
| "[Celery](https://docs.celeryq.dev/en/stable/userguide/workers.html) task "
 | |
| "worker. The worker then works through all the tasks in its queue while "
 | |
| "the API handles real-time responses."
 | |
| msgstr ""
 | |
| 
 | |
| #: ../../developer_documentation/architecture.md:94
 | |
| msgid "Some common tasks the Celery worker handles are:"
 | |
| msgstr ""
 | |
| 
 | |
| #: ../../developer_documentation/architecture.md:96
 | |
| msgid "Importing uploaded music to the database"
 | |
| msgstr ""
 | |
| 
 | |
| #: ../../developer_documentation/architecture.md:97
 | |
| msgid ""
 | |
| "Handling [ActivityPub](https://www.w3.org/TR/activitypub/) messages from "
 | |
| "other {term}`Fediverse` servers"
 | |
| msgstr ""
 | |
| 
 | |
| #: ../../developer_documentation/architecture.md:98
 | |
| msgid "Scanning new content on remote pods"
 | |
| msgstr ""
 | |
| 
 | |
| #: ../../developer_documentation/architecture.md:100
 | |
| msgid "Celery beat task scheduler"
 | |
| msgstr ""
 | |
| 
 | |
| #: ../../developer_documentation/architecture.md:102
 | |
| msgid ""
 | |
| "In addition to handling tasks from the API, the Celery worker also needs "
 | |
| "to handle some recurring tasks. To manage these, we implement a [Celery "
 | |
| "beat](https://docs.celeryq.dev/en/stable/reference/celery.apps.beat.html#celery.apps.beat.Beat)"
 | |
| " scheduler. The scheduler is responsible for triggering tasks on a "
 | |
| "schedule and adding messages to the [queue](#redis-cache-and-message-"
 | |
| "queue) so the worker can work through them."
 | |
| msgstr ""
 | |
| 
 | |
| #: ../../developer_documentation/architecture.md:104
 | |
| msgid "Some common recurring tasks are:"
 | |
| msgstr ""
 | |
| 
 | |
| #: ../../developer_documentation/architecture.md:106
 | |
| msgid "Clearing the cache"
 | |
| msgstr ""
 | |
| 
 | |
| #: ../../developer_documentation/architecture.md:107
 | |
| msgid "Refreshing content metadata"
 | |
| msgstr ""
 | |
| 
 |