Me estaba cansando de la misma vieja página de pestaña nueva. Quería tener un tablero para todo lo que busque en mi día de trabajo típico, así que lo construí.
StarterTab está aquí para revolucionar la forma en que comienza el día en Internet. Con una aplicación web completamente personalizable para reemplazar su nueva página de inicio de pestañas, puede personalizar su experiencia en línea como nunca antes.
Puede instalar la extensión de Chrome aquí, o la extensión de Firefox aquí y hacer de StarterTab el sitio que se abre en cada una de sus nuevas pestañas.
El almacenamiento local se está utilizando para almacenar todas sus personalizaciones, ¡lo que significa que es propietario de sus datos! Todas las configuraciones, fichas y temas se encuentran en su propio navegador. Algunos pueden llamarlo pereza que no quiero mantener una base de datos, también podría verlo como yo ayudando a evitar que sus datos estén en otro servicio en la nube.
Escrito en Nextjs con Charkaui. El frontend y las funciones se alojan en Vercel, la base de datos en Neon.
git clone https://github.com/allister-grange/startertab.git
cd startertab
yarn install
Copie el archivo .env.local.example en este directorio a .env.local (que será ignorado por Git):
cp .env.local.example .env.local
Agregue detalles para todos los proveedores que desea usar:
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>
Para ejecutar su StarterTab localmente, use:
yarn dev
Para ejecutarlo en modo de producción, use:
yarn build && yarn start
src/components/tiles . Asegúrese de aceptar un accesorio de 'mosaico', esto le permite cambiar el color del texto basado en la configuración cambiada en la barra lateral. type PageProps = {
tileId : number ;
} ;
export const YourNewTile : React . FC < PageProps > = ( { tileId } ) => {
const color = `var(--text-color- ${ tileId } )` ;
return ( ) ;
}src/types/settings.ts .tileSize en src/components/sidebar/OptionsForTileTypeSelect.tsxtileType en src/components/TileContainer.tsxSi necesita almacenamiento persistente
TileSettings dentro de src/types/settings.tssrc/recoil/UserSettingsSelectors.tsxEjemplo selector:
export const imageFilePathSelector = createTilePropertySelector < string > (
"imageFilePath" ,
( theme , newValue ) => {
theme . imageFilePath = newValue ;
}
) ;Usando ese selector en un mosaico:
const [ fileValue , setFileValue ] = useRecoilState (
imageFilePathSelector ( tileId )
) as [ string | undefined , SetterOrUpdater < string | undefined > ] ;Creación de un elemento de menú de barra lateral para opciones
OptionType en src/types/settings.tssrc/helpers/sideBarOptions.tssrc/components/sidebar/SettingOptionContainer.tsx para incluir el nuevo tipo de opción