GithubHelp home page GithubHelp logo

rxluz / notes Goto Github PK

View Code? Open in Web Editor NEW
0.0 2.0 0.0 9.46 MB

The most cool notes app that you'll see today

Home Page: https://rxluz.github.io/notes/

License: GNU General Public License v3.0

HTML 6.41% JavaScript 78.78% CSS 14.80%

notes's Introduction

Overview

This is a PWA React application built with Create React App, Hooks, Redux. Follows Airbnb's Javascript style guide.

Heavily inspired from Egghead.io - How to Write an Open Source JavaScript Library.

Project resources

Ideas / brainstorm
Inspiration board
Mockups
List of presentational components

Main tools

Item Description
Modern JS Compatible with ES6+
Code Linting JavaScript code linting is done using ESLint - a pluggable linter tool for identifying and reporting on patterns in JavaScript. Uses ESLint with eslint-config-airbnb, which tries to follow the Airbnb JavaScript style guide.
Jest Library test
React Uses react with hooks
Redux Uses redux connected with react and redux-thunk, also uses redux persist to save the user data
PWA This application could be used offline and installed both in desktop and mobile
SASS CSS created using SASS following the BEM Methodology
Code spliting Automatic code minify and spliting
Storybook List all presentational components
Accessibility Application uses keyboard shortcuts to allow a better navigation
Dark mode Application automatic detects when the browser is in dark mode and apply it to the layout
Multi-language support Allow to add new languages using PoEdit files
Atomic commits Commits following the angular commit message conventions
Prettier Automatic code formatting

Main features

Feature Description
JS disabled warning Display a message and an illustration to the user when the JS isn't enabled
No notes state Display an empty state with a message and an illustration to the user when no notes is added
Dark mode Allow the user to use the dark mode and detect automatically when the browser is in dark mode and apply it to the layout
Search page Allow the user search by note name, content or tags
No results state Display an empty state with a message and an illustration to the user when the search has no results
Settings page Allow the user to define dark mode, auto save and add a new note by default
Shortcuts page Display all the shortcuts available
Add / remove tags Allow the user to connect a note with tags
Add / remove star Allow to create a starred note that will be displayed before the other notes
Add color Allow the user to add a note
Share note In mobile mode allow the user to share the note using the share api
Remove note Allow the user to delete a note

Shortcuts

shortcut action
alt / option + n create a new note
alt / option + p settings
alt / option + h help page
alt / option + s search note
alt / option + a list all notes
shift + enter save this note and add a new one

Available Scripts

In the project directory, you can run:

npm start

Runs the app in the development mode.

Open http://localhost:3000 to view it in the browser.

The page will reload if you make edits.

You will also see any lint errors in the console.

npm test

Launches the test runner in the interactive watch mode.

See the section about running tests for more information.

npm run build

Builds the app for production to the build folder.

It correctly bundles React in production mode and optimizes the build for the best performance.

The build is minified and the filenames include the hashes.

Your app is ready to be deployed!

See the section about deployment for more information.

npm run eject

Note: this is a one-way operation. Once you eject, you can’t go back!

If you aren’t satisfied with the build tool and configuration choices, you can eject at any time. This command will remove the single build dependency from your project.

Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except eject will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own.

You don’t have to ever use eject. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it.

npm run translation:extract

Extracts all the translations strings from js files and put them in a poedit (.pot) template file. Read more.

npm run translation:import

Import all the translations available from poedit (.mo) translations file

Deployment

npm run deploy

Publish the static files in gh-pages branch, also publishes the storybook in gh-page, it's available in the /storybook page. Example.

Acknowledgments

This project was bootstrapped with Create React App.
Illustrations by Ivan Haidutski.
Google Fonts.
Favicon.io.
Github pages.
React.
Redux.
React-Redux.
Redux Thunk.
Redux Router.
React tippy.
Redux i18n.
React icons.
Redux persist.
Storybook.
BEM CSS.

Known technical debts

  • Publish to github OK
  • Fix storybook errors OK
  • Check layout mobile OK
  • Fix the dark mode checkbox OK
  • Return 404 in edit mode OK
  • On delete return to main screen OK
  • Fix the remove in edit mode OK
  • On close in add mode delete the note in add mode OK
  • Don't display the drafts in the main list OK
  • Display the pinned notes first OK
  • Don't display shortcuts in mobile mode OK
  • Remove fist clear button in mobile mode OK
  • Improve the mobile padding and alignment OK
  • Change the float button colour OK
  • Make the shortcuts work OK
  • Attach the docs created
  • Check if possible embed images
  • Code the shortcuts
  • Handle with invalid notes in edit mode
  • create a feature table in readme
  • rename interfaces to pages
  • The previous tags are displaying in new notes
  • Review the BEM classes names Know more
  • Improve the tests quality
  • Remove useless css classes
  • Allow custom icons in IconTextSwitch
  • Improve iconTextSwitch accessibility
  • Improve colourSwitch accessibility
  • Fix wording errors
  • Fix broken tests
  • Remove double components names in sass
  • Improve HTML semantic
  • Stop using import in SASS
  • Create unit tests in utils functions
  • Use the empty function util
  • Stop using array key as react key elements
  • Chip chipdisplay class name
  • rename the no-javascript tag
  • create tests in stateless interfaces
  • replace the translation system to a new one that don't use the old context api
  • Organize the imports order (absolute imports first)
  • Start using proptypes in interfaces
  • Improve the search results (better string filter
  • Highlight the search terms
  • Check texts in small screens
  • Make the settings add new note by default works
  • Create a portuguese version and a switcher?
  • Add the search signal when the search is active
  • Verify what happens when the user add many tags
  • Create note undo
  • Fix the dark mode switch

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.