كنت سئمت من نفس صفحة علامة التبويب الجديدة القديمة. كنت أرغب في الحصول على لوحة معلومات لكل ما وصلت إليه في يوم العمل النموذجي ، لذلك قمت ببنائه.
Startertab هنا لإحداث ثورة في الطريقة التي تبدأ بها يومك على الإنترنت. من خلال webapp القابلة للتخصيص تمامًا لاستبدال صفحة Tab الجديدة الخاصة بك ، يمكنك تخصيص تجربتك عبر الإنترنت كما لم يحدث من قبل.
يمكنك تثبيت امتداد Chrome هنا ، أو امتداد Firefox هنا وجعل StarterTab الموقع الذي يفتح على كل علامات تبويب جديدة.
يتم استخدام التخزين المحلي لتخزين جميع التخصيصات الخاصة بك ، مما يعني أنك تملك بياناتك! جميع الإعدادات والرموز والموضوعات تجلس على متصفحك. قد يسميها البعض كسلًا لا أريد الحفاظ على قاعدة بيانات ، يمكنك أيضًا رؤيتها وأنا أساعد في منع بياناتك في خدمة سحابية أخرى.
مكتوبة في NextJS مع charkaui. يتم استضافة الواجهة الأمامية والوظائف على Vercel ، قاعدة البيانات على النيون.
git clone https://github.com/allister-grange/startertab.git
cd startertab
yarn install
انسخ ملف .env.local.example في هذا الدليل إلى .env.local (الذي سيتم تجاهله بواسطة GIT):
cp .env.local.example .env.local
أضف تفاصيل لجميع مقدمي الخدمات الذين تريد استخدامه:
STRAVA_CLIENT_ID=<YOUR_SECRET_HERE>
STRAVA_SECRET=<YOUR_SECRET_HERE>
WEATHERAPI_TOKEN=<YOUR_SECRET_HERE>
SPOTIFY_CLIENT_ID=<YOUR_SECRET_HERE>
SPOTIFY_CLIENT_SECRET=<YOUR_SECRET_HERE>
FINNHUB_SECRET=<YOUR_SECRET_HERE>
TWITTER_CLIENT_ID=<YOUR_SECRET_HERE>
TWITTER_CLIENT_SECRET=<YOUR_SECRET_HERE>
TWITTER_CODE_CHALLENGE_KEY=<YOUR_SECRET_HERE>
TOKEN_ENCRYPT_KEY=<YOUR_SECRET_HERE>
OUTLOOK_CLIENT_ID=<YOUR_SECRET_HERE>
OUTLOOK_CLIENT_SECRET=<YOUR_SECRET_HERE>
GOOGLE_CLIENT_ID=<YOUR_SECRET_HERE>
GOOGLE_CLIENT_SECRET=<YOUR_SECRET_HERE>
DATABASE_URL=<YOUR_SECRET_HERE>
DATABASE_URL_UNPOOLED=<YOUR_SECRET_HERE>
ANALYTICS_ENABLED=<true or false>
لتشغيل StarterTab محليًا ، استخدم:
yarn dev
لتشغيله في وضع الإنتاج ، استخدم:
yarn build && yarn start
src/components/tiles . تأكد من قبول دعامة "tileid" ، وهذا يمكّنك من تغيير لون النص المستند إلى الإعدادات التي تم تغييرها في الشريط الجانبي. type PageProps = {
tileId : number ;
} ;
export const YourNewTile : React . FC < PageProps > = ( { tileId } ) => {
const color = `var(--text-color- ${ tileId } )` ;
return ( ) ;
}src/types/settings.ts .tileSize في src/components/sidebar/OptionsForTileTypeSelect.tsxtileType في src/components/TileContainer.tsxإذا كنت بحاجة إلى تخزين مستمر
TileSettings داخل src/types/settings.tssrc/recoil/UserSettingsSelectors.tsxمثال على ذلك:
export const imageFilePathSelector = createTilePropertySelector < string > (
"imageFilePath" ,
( theme , newValue ) => {
theme . imageFilePath = newValue ;
}
) ;باستخدام هذا المحدد في البلاط:
const [ fileValue , setFileValue ] = useRecoilState (
imageFilePathSelector ( tileId )
) as [ string | undefined , SetterOrUpdater < string | undefined > ] ;إنشاء عنصر قائمة الشريط الجانبي للخيارات
OptionType في src/types/settings.tssrc/helpers/sideBarOptions.tssrc/components/sidebar/SettingOptionContainer.tsx لتضمين نوع الخيار الجديد