├── .firebase └── hosting.YnVpbGQ.cache ├── .firebaserc ├── .gitignore ├── README.md ├── firebase.json ├── index.html ├── package-lock.json ├── package.json ├── public ├── favicon.ico ├── index.html └── manifest.json └── src ├── App.js ├── App.test.js ├── UI └── theme.js ├── components ├── AuthForm │ ├── AuthForm.js │ ├── LogInForm.js │ ├── RegisterForm.js │ ├── SocialsAuth.js │ └── common-elements.js ├── ColorPicker │ ├── ColorPicker.js │ └── ColorPickerElements.js ├── EditNoteModal │ └── EditNoteModal.js ├── Footer │ └── Footer.js ├── FormNoteList │ └── FormNoteList.js ├── Navigation │ ├── Navigation.js │ └── navigation-elements.js ├── NoteForm │ ├── NoteForm.js │ ├── NoteFormElements.js │ └── NotesFormFooter.js ├── NotesList │ ├── Checkbox.js │ ├── Column.js │ ├── Note.js │ ├── NoteDraggable.js │ ├── NotesList.js │ ├── NotesListMobile.js │ └── notes-list-elements.js ├── TagList │ └── TagList.js ├── TagWidget │ ├── AvaiableTags.js │ ├── TagWidget.js │ ├── scrollbar.css │ └── widget-elements.js └── index.js ├── containers ├── About │ └── About.js ├── Home │ └── Home.js ├── Notes │ └── Notes.js └── index.js ├── firebase ├── firebaseAPI.js ├── firebaseAuth.js └── firebaseConfig.js ├── images ├── font │ ├── fontello.eot │ ├── fontello.svg │ ├── fontello.ttf │ ├── fontello.woff │ └── fontello.woff2 ├── fontello.css ├── pin-in-diagonal-position.png ├── pin-outline.png └── pin1.png ├── index.css ├── index.js ├── redux ├── auth.js ├── notes.js └── storeConfig.js └── utils.js /.firebase/hosting.YnVpbGQ.cache: -------------------------------------------------------------------------------- 1 | asset-manifest.json,1580922057256,00b0bc8d88e309b531fd9135fa9357b6e55fb6157fa77849c84575fa6540e52a 2 | favicon.ico,1580922032103,c599b7a91ab3627e3538125d9f40adc2d4bf949046984262670545dc7738af06 3 | manifest.json,1580922032103,ed7b98046be74c7d1476b73ebb8cd1f00c2b34443af1525af60b9dd20be9fb9a 4 | index.html,1580922057256,c9556727fa7adfabae822b5f1fce123909621f7b3fcdc282a7c57ea4ffe46260 5 | precache-manifest.ae074338b0131aa7491db94e42af2232.js,1580922057256,43cf2d71eac32bcc0ade2e179cd6c1d6fc7111a0cb2bad2678e96c53fb7be6ff 6 | service-worker.js,1580922057256,5d247069f58027a702d78ea9349bdb19ce6ad114afc654abcc566d7c65e63877 7 | static/css/2.764ccc25.chunk.css,1580922057256,96e30f5cf73f33d636fc1cec624c3fe11e4ad23124b6f13a48d5542cc5f57b01 8 | static/css/main.df013226.chunk.css,1580922057223,8cc8ae397a78b0c18b86be203c061347c929916575f82551032ec2f730d237d8 9 | static/css/main.df013226.chunk.css.map,1580922057256,10e71639dce394863a8010200ede70ba5c215e48d44427eef48932cd3116942a 10 | static/css/2.764ccc25.chunk.css.map,1580922057256,a0a06ff18c092ffe84ad302460cb4de9ad30a51f617f0449b9a108b8a49b8b47 11 | static/js/main.403dbbfb.chunk.js,1580922057256,c86629d0c7d3958ef14545399ae2b99b532203d9a010350d27580e0b15aaa500 12 | static/js/runtime~main.a8a9905a.js,1580922057227,5b0313db8c475761662a933e703f2a6bd16847cdfc34b81915f5dd56862e4e77 13 | static/js/runtime~main.a8a9905a.js.map,1580922057256,2510643041ce395196dfc3f9ae31cd72d7127dbd8457479959c6e22dd1b1eaeb 14 | static/media/fontello.7f49b01e.ttf,1580922057256,6332c330e23d12bf3882036b26b48e194fcc4f0d8713725b2fadbbb9b0320815 15 | static/media/fontello.48370e24.woff2,1580922057252,f8e2331421403a673560e48b7dae9fd1a412d2c9c88f0e54d103ee00ba64ce94 16 | static/media/fontello.806abce4.eot,1580922057223,b85552f23c8af5ee8c9af428fa6fa1133e252271487c588eacb8db46fa073e9b 17 | static/media/fontello.e7c6ec07.svg,1580922057256,af9d78dff27f634a3f88d3757f843739c2bec99aec0652a2eca7fa92eee581a9 18 | static/media/fontello.f31b8162.woff,1580922057256,053a9b3a9acbff062db2fed9b39334e418bbaf5c24d86dbdd2f4ddfd7f202870 19 | static/js/main.403dbbfb.chunk.js.map,1580922057256,d44d870c83bb511975d53e8eb2f5f1ff53783557d27453684bc5f629ec63072c 20 | static/js/2.286c880b.chunk.js,1580922057256,55481ab00e5c666abcbeec4a9420bc5735df694b8c135ac85aa4170588342b86 21 | static/js/2.286c880b.chunk.js.map,1580922057256,7646bfd2d0393bb36c31b85197974e5c64626fa5961c0082ce17fb5b8cd9553e 22 | -------------------------------------------------------------------------------- /.firebaserc: -------------------------------------------------------------------------------- 1 | { 2 | "projects": { 3 | "default": "keep-clone-app" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | .env 21 | 22 | npm-debug.log* 23 | yarn-debug.log* 24 | yarn-error.log* 25 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![Codacy Badge](https://api.codacy.com/project/badge/Grade/36bcb079a45541aea75ad47e84627227)](https://www.codacy.com/app/simon125/google-keep-clone?utm_source=github.com&utm_medium=referral&utm_content=simon125/google-keep-clone&utm_campaign=Badge_Grade) 2 | ![stability-wip](https://img.shields.io/badge/stability-work_in_progress-lightgrey.svg) 3 | 4 | # Google keep clone 5 | 6 | 7 | ### Google keep clone is a clone of well known service from google for notes/tasks and much more. 8 | 9 | By doing it, I was trying to clone the UI almost in 100%(from. list of notes, panel for searching) without bunch of features, 10 | Project for me is kind of challange, sandbox for new getting know new features/packages/compoennts/libraries, and playground for getting know good practices and approaches in react which I'm looking for in docs/medium/tutorials. 11 | 12 | ### Live demo 13 | 14 | You can easily check the current version [here](https://keep-clone-app.firebaseapp.com/) 15 | 16 | 17 | ## Tech 18 | 19 | - React (with hooks^^) 20 | - Redux 21 | - Formik for validation form 22 | - Firebase (firestore, auth) 23 | - Styled Components 24 | - npm, bunch of components, drag and drop library (react-beautiful-dnd) 25 | 26 | - trello for tracking progress and keep order 27 | 28 | 29 | ## TODO 30 | - set rules in firebase 31 | - filtering/searching 32 | - Refactor if new side project won't consume my whole attention 33 | When I'm using this app things which need improvment appear, 34 | - one more time !!!filtering/searching!!! 35 | - possible to delete the tag from DB 36 | - improve edit mode in desktop 37 | - improve edit mode in mobile 38 | - displaying in center tools to note in mobile version 39 | 40 | -------------------------------------------------------------------------------- /firebase.json: -------------------------------------------------------------------------------- 1 | { 2 | "hosting": { 3 | "public": "build", 4 | "ignore": [ 5 | "firebase.json", 6 | "**/.*", 7 | "**/node_modules/**" 8 | ], 9 | "rewrites": [ 10 | { 11 | "source": "**", 12 | "destination": "/index.html" 13 | } 14 | ] 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Welcome to Firebase Hosting 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 32 | 33 | 34 |
35 |

Welcome

36 |

Firebase Hosting Setup Complete

37 |

You're seeing this because you've successfully setup Firebase Hosting. Now it's time to go build something extraordinary!

38 | Open Hosting Documentation 39 |
40 |

Firebase SDK Loading…

41 | 42 | 64 | 65 | 66 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "note-app", 3 | "version": "0.1.0", 4 | "private": true, 5 | "dependencies": { 6 | "clone-deep": "^4.0.1", 7 | "deep-equal": "^1.1.0", 8 | "firebase": "^6.1.1", 9 | "formik": "^1.5.7", 10 | "normalize.css": "^8.0.1", 11 | "prop-types": "^15.7.2", 12 | "react": "^16.8.6", 13 | "react-autosize-textarea": "^7.0.0", 14 | "react-beautiful-dnd": "^11.0.4", 15 | "react-dom": "^16.8.6", 16 | "react-grid-layout": "^0.16.6", 17 | "react-loader-spinner": "^3.1.5", 18 | "react-masonry-component": "^6.2.1", 19 | "react-redux": "^7.0.3", 20 | "react-router-dom": "^5.0.1", 21 | "react-scripts": "3.0.1", 22 | "react-scroll-up-button": "^1.6.4", 23 | "redux": "^4.0.1", 24 | "redux-thunk": "^2.3.0", 25 | "styled-components": "^4.3.1", 26 | "uuid": "^3.3.2", 27 | "yup": "^0.27.0" 28 | }, 29 | "scripts": { 30 | "start": "react-scripts start", 31 | "build": "react-scripts build", 32 | "test": "react-scripts test", 33 | "eject": "react-scripts eject" 34 | }, 35 | "eslintConfig": { 36 | "extends": "react-app" 37 | }, 38 | "browserslist": { 39 | "production": [ 40 | ">0.2%", 41 | "not dead", 42 | "not op_mini all" 43 | ], 44 | "development": [ 45 | "last 1 chrome version", 46 | "last 1 firefox version", 47 | "last 1 safari version" 48 | ] 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simon125/google-keep-clone/744b52c5b2a839a8612a0d6248f77881c66c4ec4/public/favicon.ico -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 12 | 13 | 22 | React App 23 | 24 | 25 | 26 |
27 | 28 | 29 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "React App", 3 | "name": "Create React App Sample", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | } 10 | ], 11 | "start_url": ".", 12 | "display": "standalone", 13 | "theme_color": "#000000", 14 | "background_color": "#ffffff" 15 | } 16 | -------------------------------------------------------------------------------- /src/App.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { Navigation, Footer } from './components'; 3 | import { Home, Notes, About } from './containers'; 4 | import { AppContainer } from './UI/theme'; 5 | import { Provider } from 'react-redux'; 6 | import { store } from './redux/storeConfig'; 7 | import { Route, BrowserRouter as Router, Switch } from 'react-router-dom'; 8 | function App() { 9 | return ( 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |