Giter Site home page Giter Site logo

mmazzarolo / chrome-another-tab Goto Github PK

View Code? Open in Web Editor NEW
248.0 6.0 21.0 6.49 MB

Just building a Chrome Extension with Create React App and TypeScript.

License: GNU General Public License v3.0

HTML 3.38% TypeScript 96.62%
chrome-extension react typescript redux immer

chrome-another-tab's Introduction

 

Another Tab - Chrome Extension

An open source Chrome extension that shows your bookmarks when you open a new tab.
Built with Create React App and TypeScript.

 

Another Tab

Another Tab Download Another Tab from the Chrome Web Store

...or try it live!

Overview

I initially built this extension just for personal use... and for trying building a Chrome extension 🤷‍♂️, so for now it has just the features that I need...
That said, PRs are welcome!
Check the DEVLOG to see the history of the project.

Features

  • Shows your bookmarks in the new tab page
  • Bookmarks filtering/search
  • Keyboard navigation support
  • Bookmark folders visibility toggle
  • Themes support
  • Drag & drop bookmark sorting

Stack

  • React (using Create React App) and hooks
  • TypeScript
  • Styled-Components
  • Redux, Redux-Saga and Typesafe-Actions

Contributing

Feature request

I already created a few issues with some features that I feel like would be really welcomed addition, and I'm open to any other additional suggestion... especially if you already have an idea to implement it's UI/UX.

Developing locally

This is a standard Create React App, so you can easily start working on it by simply cloning the project and running yarn to install all its dependencies.
To develop the app locally you can run yarn start, I already included some fake bookmarks to simulate the production behaviour of the extension.

Development tips

This app uses TypeScript, React Hooks, Redux and Styled-Components, so you might need to be confortable with these technologies to completely understand the codebase.
The app is still pretty simple, doesn't have too many components and most of the logic is just in the Chrome Bookmarks parsing and in the Redux sagas.
If you feel intimidated by the codebase please just open an issue/send a PR, I'm open to discussion and tips.
Also, if you're not confortable with hooks feel free to use class components.

Chrome Web Store deployment

I setup a semi-automated Chrome Web Store deployment using CircleCI.
It currently runs only when the master branch receives a new push, but I still haven't automated the version number bumping (so I still have to do it manually).
It would be great making the publishing step manipulate the manifest.json so that it reflects the package.json version and/or a git tag.

Live example deployment

The "live example" is just a customized version of the production build of the app deployed on GitHub Pages. If you check the gh-pages script in the package.json you'll see that I'm setting a REACT_APP_IS_LIVE_EXAMPLE environment variable before running the GitHub Pages deployment: this will allow the build to use the fake bookmarks instead of trying to get them from the Chrome API (like if it was an extension running in the browser).

GitHub organization?

If the app starts getting contributions I'll gladly create a new ad-hoc organization for it, instead of keeping it in my personal profile.

chrome-another-tab's People

Contributors

dkozickis avatar mmazzarolo avatar oneill45 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

chrome-another-tab's Issues

Add a setting page

Creating a setting page would allow us to build more toggable features without worrying about where to put the toggle itself.
E.g.: hide/show header, disable animations, etc...

Typo in devlog.md

cd chrome-anoter-tab && yarn add @types/chrome

should be another instead of anoter

cd chrome-another-tab && yarn add @types/chrome

Support for Unsplash

It would be awesome if you could add support for Dynamic backgrounds pulled from Unsplash.

Add a way to customize the themes

Themes are currently read as JSON from the src/assets/themes folder.
It would be really cool to create an interactive way to load your own custom theme inside the app.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.