عميل ويب Mastodon ذو رأي بسيط.
⁉️ النطق : /fænpi/
( FAN-pee
) ? يستمع
هذا عميل ويب بديل لـ Mastodon.
production
main
؟ تابع @phanpy على Mastodon للحصول على التحديثات ✨
تم تصميم كل شيء وهندسته وفقًا لذوقي ورؤيتي. هذا مشروع جانبي شخصي بالنسبة لي للتعرف على Mastodon وتجربة أفكار جديدة لواجهة المستخدم/UX.
@username
) في المخططات الزمنية، بدلاً من اسم مستخدم الحساب الكامل ( @username@instance
) .[NAME] @[username]
.@[username]
، استبعد دائمًا اسم المجال المثيل.[NAME]
يبدو مثل @[username]
، فسيتم استبعاد @[username]
أيضًا.inReplyToId
من ذاكرة التخزين المؤقت أو طلبات واجهة برمجة التطبيقات الإضافية، حتى يتم العثور على المنشور الجذر.Thread
بدون الرقم....
في النهاية.المتطلبات الأساسية: Node.js 18+
npm install
- تثبيت التبعياتnpm run dev
- بدء خادم التطوير messages:extract
( clean
+ ``مشاهدة`) بالتوازيnpm run build
- إنشاء للإنتاجnpm run preview
- معاينة بناء الإنتاجnpm run fetch-instances
- جلب قائمة المثيلات من joinmastodon.org/servers، وحفظها في src/data/instances.json
npm run sourcemap
- قم بتشغيل source-map-explorer
في بنية الإنتاجnpm run messages:extract
- استخراج الرسائل من الملفات المصدر وتحديث كتالوجات الرسائل المحلية بعض هذه قد تتغير في المستقبل. عالم الواجهة الأمامية يتغير باستمرار.
جميع الترجمات متاحة كملفات gettext .po
في مجلد src/locales
. اللغة الافتراضية هي الإنجليزية ( en
). تُستخدم قواعد الجمع CLDR للجمع. يتم أيضًا دعم اللغات RTL (من اليمين إلى اليسار) مع اتجاه النص المناسب وعرض الأيقونات والتخطيط.
عند تحميل الصفحة، يتم اكتشاف اللغة الافتراضية عبر هذه الطرق بالترتيب (يتم استخدام المطابقة الأولى):
lang
/?lang=zh-Hant
lang
مفتاح localStorage
navigator.language
المتصفح يمكن للمستخدمين تغيير اللغة في الإعدادات، مما يؤدي إلى تعيين lang
مفتاح localStorage
.
*مستوحاة من دليل ترجمة WordPress:
{account}
(متغير)، <0>{name}0>
(علامة ذات متغير) و #
(عنصر نائب للرقم).Intl.DateTimeFormat
- على سبيل المثال "8 أغسطس"، "08/08/2024"Intl.RelativeTimeFormat
- على سبيل المثال "منذ يومين"، "خلال يومين"Intl.NumberFormat
- على سبيل المثال "1000"، "10 كيلو"Intl.DisplayNames
- على سبيل المثال، "الإنجليزية" ( en
) بالصينية التقليدية ( zh-Hant
) هي "英文"Intl.Locale
(مع polyfill للمتصفحات الأقدم)Intl.Segmenter
(مع polyfill للمتصفحات القديمة)
سيتبع دائمًا لغة النظام وليس اللغة التي حددها المستخدم.U+200F
,
) لنص RTL/LTR المختلط، خاصة لعنصر
( document.title
).pseudo-LOCALE
إضافية، تستخدم للتعريب الزائف. إنه للاختبار ولن يظهر في الإنتاج.en
) بشكل منفصل. يتم تجميع اللغات الأخرى كملفات منفصلة وتحميلها عند الطلب. وهذا يضمن أن en
متاح دائمًا كبديل.تتم إدارة الترجمات على Crowdin. يمكنك المساعدة من خلال التطوع في الترجمة.
اقرأ وثائق المقدمة للبدء.
هذا هو تطبيق ويب ثابت خالص . يمكنك استضافتها في أي مكان تريد.
طريقتان (اختر واحدة):
انتقل إلى الإصدارات وقم بتنزيل أحدث إصدار phanpy-dist.zip
أو phanpy-dist.tar.gz
. إنه مُصمم مسبقًا لذا لا تحتاج إلى تشغيل أي أوامر تثبيت/إنشاء. استخرجه. خدمة مجلد الملفات المستخرجة.
يتطلب Node.js.
قم بتنزيل أو git clone
هذا المستودع. استخدم فرع production
للإصدارات المستقرة ، main
للأحدث . قم بإنشائه عن طريق تشغيل npm run build
(بعد npm install
). خدمة المجلد dist
.
يمكن إجراء التخصيص عن طريق تمرير متغيرات البيئة إلى أمر الإنشاء. أمثلة:
PHANPY_CLIENT_NAME= " Phanpy Dev "
PHANPY_WEBSITE= " https://dev.phanpy.social "
npm run build
PHANPY_DEFAULT_INSTANCE=hachyderm.io
PHANPY_DEFAULT_INSTANCE_REGISTRATION_URL=https://hachyderm.io/auth/sign_up
PHANPY_PRIVACY_POLICY_URL=https://hachyderm.io/privacy-policy
npm run build
من الممكن أيضًا تعيينها في ملف .env
.
المتغيرات المتاحة:
PHANPY_CLIENT_NAME
(اختياري، الافتراضي: Phanpy
) على:PHANPY_WEBSITE
(اختياري لكن موصى به، الافتراضي: https://phanpy.social
) يؤثر على:PHANPY_DEFAULT_INSTANCE
(اختياري، لا توجد إعدادات افتراضية):https://
PHANPY_DEFAULT_INSTANCE_REGISTRATION_URL
(اختياري، لا توجد إعدادات افتراضية):https://mastodon.social/auth/sign_up
PHANPY_PRIVACY_POLICY_URL
(اختياري، افتراضي لسياسة خصوصية المثيل الرسمي):PHANPY_DEFAULT_LANG
(اختياري):en
) إذا لم يتم تحديدها.lang
، ومفتاح lang
في localStorage
و navigator.language
)PHANPY_LINGVA_INSTANCES
(اختيارية، قائمة مفصولة بمسافات، الافتراضي: lingva.phanpy.social [...hard-coded list of fallback instances]
):/.env
PHANPY_IMG_ALT_API_URL
(اختياري، لا توجد إعدادات افتراضية):PHANPY_GIPHY_API_KEY
(اختياري، لا توجد إعدادات افتراضية):حاول البحث عبر الإنترنت عن "كيفية استضافة المواقع الثابتة ذاتيًا" نظرًا لوجود العديد من الطرق للقيام بذلك.
راجع وثائق lingva-translate أو lingva-api.
يتم استضافتها ذاتيًا بواسطة أشخاص رائعين آخرين.
ملاحظة: أضف طلبك عن طريق إنشاء طلب سحب.
التكاليف المتضمنة في تشغيل تطبيق الويب هذا وتطويره:
Phanpy هو بوكيمون من النوع الأرضي.
أنا من أوائل مستخدمي تويتر. تم إطلاق تويتر في 15 يوليو 2006. انضممت إليه في ديسمبر 2006 وتم نشر أول تغريدة لي في 18 ديسمبر 2006.
أعرف كيف يبدو تويتر المبكر. لقد كان ممتعا.
في ذلك الوقت، قمت بعمل نسخة من تويتر تسمى "Twig" مكتوبة بلغة Python وGoogle App Engine. لقد قمت تقريبًا بإنشاء عميل Twitter لسطح المكتب الخاص بي مكتوبًا بلغة Appcelerator Titanium. لقد ألقيت واحدة من أفضل محادثاتي حول عميل تويتر في مؤتمر صغير. لقد قمت ببناء هذا الشيء المسمى "أعمدة تويتر"، وهو تطبيق ويب يعرض قائمة متابعيك، ومتابعيك، ومتابعيك، ومتابعيك، وما إلى ذلك. في عام 2009، كتبت تدوينة بعنوان "كيف بدأت مع تويتر". لقد قمت بإنشاء موضوعين لـ DestroyTwitter (عميل سطح مكتب تم إنشاؤه باستخدام Adobe Air بواسطة Jonnie Hallman) وأحدهما يسمى "Vimeo". في عام 2013، قمت بإنشاء موقع النسخ الاحتياطي للتغريدات الخاص بي مع واجهة أمامية لعرض تغريداتي وواجهة خلفية CouchDB لتخزينها.
لقد كان أكثر من 15 عاما .
وأنا هنا. بناء عميل الويب Mastodon.
من فضلك، يرجى نسخ أفكار وتجارب واجهة المستخدم من هذا التطبيق. أعتقد أن بعضها جيد جدًا وسيكون من الرائع أن تحتوي عليها المزيد من التطبيقات.
إذا لم تكن مطورًا، فيرجى إخبار مطوري برامج الوسائط الاجتماعية المفضلين لديك عن هذا التطبيق واطلب منهم نسخ أفكار وتجارب واجهة المستخدم.
معهد ماساتشوستس للتكنولوجيا.