Giter Site home page Giter Site logo

simpleflashcards's People

Contributors

morcinus avatar

Watchers

 avatar  avatar

simpleflashcards's Issues

Dokončení

  • změnit cardLimit na 10
  • rebuildnout fb dokumentaci
  • rebuildnout client dokumentaci
  • rebuildnout a uploadnout client
  • uloadnout fb functions

  • promazat dokumentaci s deckama, uzivatelema, obrazkama a kolekcema
  • testnout zakladni funkce pro prezentaci
  • znovu vse promazat (=pripravit na prezentaci)

Code Polish & DOKUMENTACE

  • Projít kód jak front-end, tak back-end a polishnout ho, přidat všude commenty, rozdělit víc do funkcí a komponentů atd..

  • Pridat do dokumentace styly v Reactu (u jednotlivych pages/komponentu)

  • Říct si jednotnou typografii v tabulkách a aplikovat pro celou dokumentaci.

  • U každé classy vyhledat constructor(props) a dopsat props do parametrů

  • přidat do docs každou this.props.clearStatus(); funkci

  • Projít znovu celou databázi a prokontrolovat a PŘIDAT ODKAZY na reducery, moduly funkce atd.

  • U každého success kódu v returnu napsat, co to je successCode/errorCode - jen ze to je uspesna hlaska

  • U každé funkce správně zapsat return - TYP & (vysvětlit)

  • přidat "listens" ke každé funkci co čeká na event - To asi dělat nebudu.

  • Zeptat se, jeslti mám v dokumentaci jako return hodnotu psát slovně nebo jen typ - jak kde.. prostě někde se to hodí slovně, někde ne

  • Zeptat se, jak mám správně dokumentovat ty Cloud Functions - jak mám popisovat vnitřní Promises atd.

  • db schema (vytvořit) - asi nebudu dělat. Popsal jsem to v dokumentaci

  • Homepage pro Cloud Functions Dokumentaci (vytvořit)

  • Homepage pro Client Dokumentaci (vytvořit)

  • Přepsat Readme - odstranit --- a přepsat Projekt

Component Error & Code Polish:

  • CollectionDecks
  • CollectionDialog
  • CollectionInfo
  • ColTable
  • DeckCards
  • DeckInfo
  • DeckTable
  • UserCollections
  • UserDecks
  • Navbar
  • PinnedCollections
  • PinnedDecks

Pages Error & Code Polish:

  • collection
  • createDeck
  • deck
  • editDeck
  • editCollection
  • home
  • homePage
  • login
  • settings
  • signup
  • studyDeck
  • studyCollection
  • userProfile

Actions Error & Code Polish:
✔️❌
colStudyActions

  • getColLearnCards
  • getColCardsToLearnAndReview
  • getColReviewCards
  • pushCollectionProgress
  • clearStudyCollection
  • unpackCardsFromArrays
  • groupIntoArrays

colUiActions

  • getUserCollections
  • getUserCollectionsWithDeckInfo
  • getPinnedCollections
  • getCollection
  • clearPinnedCollections
  • clearUserCollections
  • clearCollection
  • pinCollection
  • unpinCollection
  • openCollectionDialog
  • closeCollectionDialog
  • addDeckToCollection
  • createCollection

createDeckActions

  • saveDeckDraft
  • uploadDeck
  • validateUploadDeckData
  • deleteDeckDraft

deckStudyActions

  • getLearnDeck
  • getLearnAndReviewDeck
  • getReviewDeck
  • pushDeckProgress
  • clearStudyDeck

userActions

  • loginUser
  • signupUser
  • logoutUser
  • getUserPersonalData
  • setUserPersonalData
  • resetPassword
  • setAuthorizationHeader
  • getUserDataByUsername
  • getUserData
  • clearUserData

editDeckActions

  • uploadDeck
  • getDeck
  • validateUploadDeckData
  • deleteDeck
  • deleteDeckDraft

editColActions

  • uploadCollection
  • getCollection
  • validateUploadCollectionData
  • deleteCollection
  • deleteCollectionDraft

deckUiActions

  • getUserDecks
  • getPinnedDecks
  • getDeck
  • clearPinnedDecks
  • clearUserDecks
  • clearDeck
  • pinDeck
  • unpinDeck

Firebase funkce

U KAZDY FUNKCE [Success handle][Error handle][Polish][Comment][Final check]
Deck Cards:

  • setDeckCardsProgress
  • getCardsToReview
  • compareUnderstandingLevels
  • getDeckUnknownCards
  • findUnknownCards
  • getCardsToLearnAndReview

Collection:

  • createCollection
  • updateCollection
  • addDeckToCollection
  • deleteCollection
  • pinCollection
  • unpinCollection
  • getUserCollections
  • getUserCollectionsWithDeckInfo
  • getPinnedCollections
  • getCollection

Collection Cards:

  • compareUnderstandingLevels
  • loop
  • getExportCards
  • getExportCards_ungrouped
  • groupIntoArrays
  • getColCardsToReview
  • getColUnknownCards
  • findUnknownCards
  • getColCardsToLearnAndReview
  • setColCardsProgress

User:

  • validateUserSignupData
  • signup
  • login
  • validateUserProfileData
  • updateUserProfile
  • resetPassword
  • getUserPersonalData
  • setUserPersonalData
  • getUserDataByUsername
  • getUserData

Deck:

  • createDeck
  • updateDeck
  • findDeletedCards
  • deleteDeck
  • newId
  • uploadDeckImage
  • pinDeck
  • unpinDeck
  • getUserDecks
  • getPinnedDecks
  • getDeck

Fb-functions:

  • functions
  • admin
  • authMiddleware

COLLECTIONS

  • Udelat moznosti pro collections

Backend:

  • Vytvareni collections
  • Editovani collections
  • Deletovani collections
  • Pinnovani collections
  • Unpinnovani collections
  • Karty k uceni z collections
  • Karty k opakovani z collections
  • Karty k uceni & opakovani z collections
  • Ukladani progressu z collections (Asi az po FRONTENDU)
  • Loadovani UI z collections (getCollection)
  • Get Pinned Collections
  • Get User Collections
  • Add deck to collection

Frontend

  • Vytvareni collections
  • editovani collections
  • Add deck to collections
  • Uceni z collections, ukladani progressu v collections
  • (Un)Pinnovani collections
  • Collection Page
  • Pinned Collections in tab
  • User Collections in tab

Pinovani decku

  • Moznost pinnout/unpinnout deck na strance decku
  • Spolecne s loadovanim decku loadnout, jestli ho uzivatel pinnul nebo ne

My Profile page

  • Vytvoření stránky
  • Loadnutí decků & kolekcí daného uživatele
  • Lepší design stránky bitte
  • Ke kazde kolekci a decku dat odkaz na autora

Editování decku

  • Stránka pro editování decku (vpodstatě identická s create, ale vyplnit ty veci co tam jsou)

  • FB funkce na updatnutí decku

  • Čudl na deletování decku

  • FB funkce na deletovani decku

  • FB funkce Deletovani obrazku decku

  • Prepisovani obrazku, aby pro kazdy deck byl jen jeden obrazek

  • !!! FB trigger na odstranění pinů při deletnutí decku

  • !!! FB trigger na odstranění progress decku při deletnutí decku

  • !!! FB trigger na odstranění progressů karet při odstranění karty z decku

  • Na stránce daného decku přidat čudlík na editování (pokud to je toho uživatele)

  • Loadovat informaci, jestli to je uživatele nebo ne

Proper Error Handling = Error feedback from server

  • Udelat spravny error handling u vsech funkci - spravny catch() funkce atd.
  • Udelat spravne error displaying u settings page

SEPSAT SEM VSECHNY MISTA KDE JE POTREBA CEKAT NA RESPONSE OD SERVERU A HANDLOVAT ERRORY - u kazdyho pak udelat proper error handling (kouknout jak se to ma delat), u kazdyho dat LOADING do reduceru a do UI

U KAZDY FUNKCE [Success handle][Error handle][Polish][Comment][UI success][UI fail][FB Polish**][Final polish]
** of the fb functions inside this function [Success handle][Error handle][Polish][Comment]

Component Error & Code Polish:

  • CollectionDecks
  • CollectionDialog
  • CollectionInfo
  • ColTable
  • DeckCards
  • DeckInfo
  • DeckTable
  • UserCollections
  • UserDecks
  • Navbar
  • PinnedCollections
  • PinnedDecks

Pages Error & Code Polish:

  • collection
  • createDeck
  • deck
  • editDeck
  • editCollection
  • home
  • homePage
  • login
  • settings
  • signup
  • studyDeck
  • studyCollection
  • userProfile

Actions Error & Code Polish:
✔️❌
colStudyActions [✔️]

  • getColLearnCards [❌][❌][❌][❌][❌][❌][❌][❌]
  • getColCardsToLearnAndReview [❌][❌][❌][❌][❌][❌][❌][❌]
  • getColReviewCards [❌][❌][❌][❌][❌][❌][❌][❌]
  • pushCollectionProgress [❌][❌][❌][❌][❌][❌][❌][❌]
  • clearStudyCollection [❌][❌][❌][❌][❌][❌][❌][❌]
  • unpackCardsFromArrays [❌][❌][❌][❌][❌][❌][❌][❌]
  • groupIntoArrays [❌][❌][❌][❌][❌][❌][❌][❌]

colUiActions [✔️]

  • getUserCollections [❌][❌][❌][❌][❌][❌][❌][❌]
  • getUserCollectionsWithDeckInfo [❌][❌][❌][❌][❌][❌][❌][❌]
  • getPinnedCollections [❌][❌][❌][❌][❌][❌][❌][❌]
  • getCollection [❌][❌][❌][❌][❌][❌][❌][❌]
  • clearPinnedCollections [❌][❌][❌][❌][❌][❌][❌][❌]
  • clearUserCollections [❌][❌][❌][❌][❌][❌][❌][❌]
  • clearCollection [❌][❌][❌][❌][❌][❌][❌][❌]
  • pinCollection [❌][❌][❌][❌][❌][❌][❌][❌]
  • unpinCollection [❌][❌][❌][❌][❌][❌][❌][❌]
  • openCollectionDialog [❌][❌][❌][❌][❌][❌][❌][❌]
  • closeCollectionDialog [❌][❌][❌][❌][❌][❌][❌][❌]
  • addDeckToCollection [❌][❌][❌][❌][❌][❌][❌][❌]
  • createCollection [❌][❌][❌][❌][❌][❌][❌][❌]

createDeckActions [✔️]

  • saveDeckDraft [❌][❌][❌][❌][❌][❌][❌][❌]
  • uploadDeck [❌][❌][❌][❌][❌][❌][❌][❌]
  • validateUploadDeckData [❌][❌][❌][❌][❌][❌][❌][❌]
  • deleteDeckDraft [❌][❌][❌][❌][❌][❌][❌][❌]

deckStudyActions [✔️]

  • getLearnDeck [❌][❌][❌][❌][❌][❌][❌][❌]
  • getLearnAndReviewDeck [❌][❌][❌][❌][❌][❌][❌][❌]
  • getReviewDeck [❌][❌][❌][❌][❌][❌][❌][❌]
  • pushDeckProgress [❌][❌][❌][❌][❌][❌][❌][❌]
  • clearStudyDeck [❌][❌][❌][❌][❌][❌][❌][❌]

userActions [✔️]

  • loginUser [❌][❌][❌][❌][❌][❌][❌][❌]
  • signupUser [❌][❌][❌][❌][❌][❌][❌][❌]
  • logoutUser [❌][❌][❌][❌][❌][❌][❌][❌]
  • getUserPersonalData [❌][❌][❌][❌][❌][❌][❌][❌]
  • setUserPersonalData [❌][❌][❌][❌][❌][❌][❌][❌]
  • resetPassword [❌][❌][❌][❌][❌][❌][❌][❌]
  • setAuthorizationHeader [❌][❌][❌][❌][❌][❌][❌][❌]
  • getUserDataByUsername [❌][❌][❌][❌][❌][❌][❌][❌]
  • getUserData [❌][❌][❌][❌][❌][❌][❌][❌]
  • clearUserData [❌][❌][❌][❌][❌][❌][❌][❌]

editDeckActions [✔️]

  • uploadDeck [❌][❌][❌][❌][❌][❌][❌][❌]
  • getDeck [❌][❌][❌][❌][❌][❌][❌][❌]
  • validateUploadDeckData [❌][❌][❌][❌][❌][❌][❌][❌]
  • deleteDeck [❌][❌][❌][❌][❌][❌][❌][❌]
  • deleteDeckDraft [❌][❌][❌][❌][❌][❌][❌][❌]

editColActions [✔️]

  • uploadCollection [❌][❌][❌][❌][❌][❌][❌][❌]
  • getCollection [❌][❌][❌][❌][❌][❌][❌][❌]
  • validateUploadCollectionData [❌][❌][❌][❌][❌][❌][❌][❌]
  • deleteCollection [❌][❌][❌][❌][❌][❌][❌][❌]
  • deleteCollectionDraft [❌][❌][❌][❌][❌][❌][❌][❌]

deckUiActions [✔️]

  • getUserDecks [❌][❌][❌][❌][❌][❌][❌][❌]
  • getPinnedDecks [❌][❌][❌][❌][❌][❌][❌][❌]
  • getDeck [❌][❌][❌][❌][❌][❌][❌][❌]
  • clearPinnedDecks [❌][❌][❌][❌][❌][❌][❌][❌]
  • clearUserDecks [❌][❌][❌][❌][❌][❌][❌][❌]
  • clearDeck [❌][❌][❌][❌][❌][❌][❌][❌]
  • pinDeck [❌][❌][❌][❌][❌][❌][❌][❌]
  • unpinDeck [❌][❌][❌][❌][❌][❌][❌][❌]

Firebase funkce

U KAZDY FUNKCE [Success handle][Error handle][Polish][Comment][Final check]
Deck Cards: [✔️]

  • setDeckCardsProgress [❌][❌][❌][❌][❌]
  • getCardsToReview [❌][❌][❌][❌][❌]
  • compareUnderstandingLevels [❌][❌][❌][❌][❌]
  • getDeckUnknownCards [❌][❌][❌][❌][❌]
  • findUnknownCards [❌][❌][❌][❌][❌]
  • getCardsToLearnAndReview [❌][❌][❌][❌][❌]

Collection: [✔️]

  • createCollection [❌][❌][❌][❌][❌]
  • updateCollection [❌][❌][❌][❌][❌]
  • addDeckToCollection [❌][❌][❌][❌][❌]
  • deleteCollection [❌][❌][❌][❌][❌]
  • pinCollection [❌][❌][❌][❌][❌]
  • unpinCollection [❌][❌][❌][❌][❌]
  • getUserCollections [❌][❌][❌][❌][❌]
  • getUserCollectionsWithDeckInfo[❌][❌][❌][❌][❌]
  • getPinnedCollections [❌][❌][❌][❌][❌]
  • getCollection [❌][❌][❌][❌][❌]

Collection Cards: [❌]

  • compareUnderstandingLevels [❌][❌][❌][❌][❌]
  • loop [❌][❌][❌][❌][❌]
  • getExportCards[❌][❌][❌][❌][❌]
  • getExportCards_ungrouped[❌][❌][❌][❌][❌]
  • groupIntoArrays [❌][❌][❌][❌][❌]
  • getColCardsToReview[❌][❌][❌][❌][❌]
  • getColUnknownCards [❌][❌][❌][❌][❌]
  • findUnknownCards [❌][❌][❌][❌][❌]
  • getColCardsToLearnAndReview [❌][❌][❌][❌][❌]
  • setColCardsProgress [❌][❌][❌][❌][❌]

User: [✔️]

  • validateUserSignupData[❌][❌][❌][❌][❌]
  • signup [❌][❌][❌][❌][❌]
  • login [✔️][✔️][❌][❌][❌]
  • validateUserProfileData [❌][❌][❌][❌][❌]
  • updateUserProfile [❌][❌][❌][❌][❌]
  • resetPassword [❌][❌][❌][❌][❌]
  • getUserPersonalData [❌][❌][❌][❌][❌]
  • setUserPersonalData [❌][❌][❌][❌][❌]
  • getUserDataByUsername [❌][❌][❌][❌][❌]
  • getUserData [❌][❌][❌][❌][❌]

Deck: [✔️]

  • createDeck[❌][❌][❌][❌][❌]
  • updateDeck [❌][❌][❌][❌][❌]
  • findDeletedCards [❌][❌][❌][❌][❌]
  • deleteDeck [❌][❌][❌][❌][❌]
  • newId [❌][❌][❌][❌][❌]
  • uploadDeckImage[❌][❌][❌][❌][❌]
  • pinDeck [❌][❌][❌][❌][❌]
  • unpinDeck [❌][❌][❌][❌][❌]
  • getUserDecks [❌][❌][❌][❌][❌]
  • getPinnedDecks [❌][❌][❌][❌][❌]
  • getDeck [❌][❌][❌][❌][❌]

others:

  • SEPSAT SEM VSECHNY MISTA, KDE JSOUSE FORMULARE A. KDE POTREBUJU OVEROVAT INPUT FORMY
  • U kazdyho fomulare udelat input verification - na frontend i backend

Osetrit security rules

  • Aby mohl decku uploadovat obrazek jen owner
    .. sepsat vsechny funkce co by mohly byt zneuzity a osetrit je

Settings page

  • Vytvoření stránky

Zprovoznění jednotlivých settings:

  • změna jména
  • Updatování bio
  • Změna emailu -> poslat potvrzeni na mail
  • Změna hesla -> poslat potvrzeni na mail

Design Upgrade & Polish & RESPONSIVE DESIGN

Projít každou stránku a:

  • Prejmenovat vsechny nazvy icony z Nazev na NazevIcon
  • Zajistit, aby byla responsivní a vypadala všude dobře
  • Kouknout, jak by se dal vylepšit design
  • Zkusit nějak sjednotit css pro celou apku, aby nebyly styly vsude rozhazeny - Narvat do theme.js, pridat tam dokumentaci
  • Rozdělit kód do víc komponentů, kde to jde

SEPSAT SEM VSECHNY COMPONENTY & STRANKY, Kazdou polishnout z hlediska vzhledu (zeptat se horkyho, jestli to je potreba?)

Component Error & Code Polish:

  • CollectionDecks
  • CollectionDialog
  • CollectionInfo
  • ColTable
  • DeckCards
  • DeckInfo
  • DeckTable
  • UserCollections
  • UserDecks
  • Navbar
  • PinnedCollections
  • PinnedDecks

Pages Error & Code Polish:

  • collection
  • createDeck
  • deck
  • editDeck
  • editCollection
  • home
  • homePage
  • login
  • settings
  • signup
  • studyDeck
  • studyCollection
  • userProfile

Bug Fixes & Changes

  • Pri vytvareni decku hodi error kdyz nenahraju obrazek

  • Kdyz cloveku skonci token, tak ho to neodlogne/nerefreshne to token... (asi vyreseno?)

  • Pri editovani kolekce/decku (a teda mozna i u vytvareni) se mi pokazi indexy v tabulce, kdyz deletnu prvni, tak je druhy index porad 2 a nezmeni se na 1

  • TESTNOUT Learning funkce u collections a decks MUSIM OTESTOVAT COL FUNKCE!!! - hlavne learn and review u col

  • Přidat mezeru za jmeno created by

  • Nastavit limity karet na 10

  • pridat do deck name a col name regex cislice

  • Zeptat se na prekroceni kvoty u projektu - (-> CORS error) - nemam sanci to nejak odlisit od ostatnich erroru, protoze to nehazi zadnou errorovou hlasku klientovi. Jen to hazi do konzole, ale do klienta nic. (Proste osetrit u erroru, aby tam byla response) - global error popup

  • LICENCE - změnit licenci na Apache 2.0 a zchecknout, jestli to vubec muzu udelat :D - zchecknout licence knihoven

  • Kouknout na funkci getDeck v fb-functions

  • odstranit console logy

  • Pripsat do navodu pro instalaci, ze je treba zmenit firebaseConfig pri instalaci fb functions

  • LICENCE - zeptat se kde všude mám uvádět moji licenci, jestli mám někde uvádět licence použitých knihoven + Přidat správné licence do všech dokumentací a částí aplikace!!

  • udělat hromadny catch na auth/id-token-expired !!!! (Asi ke kazdy actions funkci hodit catch? -> setunauthorized

  • každou stránku projít a opravit vsechny errory a warnings v konzoli

  • Opravit bug pri vytvareni - kdyz na stejny strance vytvarim vic balicku, bugne se tabulka

  • Pri prvnim startu aplikace je whitescreen (asi to bude kvuli tomu presmerovavani z "/" na /login

  • JE POTŘEBA ODSTRANIT CUDLIK PRO UPRAVU V EDIT COLLECTION

  • Error response pages (403!! - private deck/col)

  • U my collections, my decks, pinned decks, pinned collections vyresit dlouhy nazvy (aby se neprekryvaly s ostatnima, aby nerozbijely grid)

  • Username, password etc. validation on client in ALL forms (signup, login, settings)

  • Změnit defaultní deck Image

  • Změnit favicons 3 dokumentací a aplikace (+ přidat do navbaru) - v Docs až po dokončení ve všech html souborech

  • Licenci na github a do Readme.md

  • Udělat public repo

  • Opravit "key" error v konzoli na kazde strance + pridat k tmu comment

  • Udělat správný citation u zdrojů

  • Dát do docs všechny knihovny

  • Zmenit vsechny tri dokumentace podle toho, co mam v poznamkovym bloku

  • změnit title u jsdoc - až po dokončení Docs

  • Při loadování vytvoření/editování balíčků a kolekcí vypnout čudlík vytváření!!


Přidat tyhle věci u FB Docs:

  • Kde to běží
  • Od čeho se odpíchnout, když to chci začít upravovat z nuly
  • Rozcestník podle modulů
  • Pročíst dokumentaci a přeformulovat nesmyslné věci
  • uploadnout finální verzi

Přidat tyhle věci u Client Docs:

  • Kde to běží
  • Od čeho se odpíchnout, když to chci začít upravovat z nuly
  • Rozcestník podle modulů
  • Pročíst dokumentaci a přeformulovat nesmyslné věci
  • uploadnout finální verzi

Projít a polishnout user docs:

  • registrace
  • balíčky
  • učení
  • kolekce
  • vytváření a uprava
  • profil a nastavení
  • uploadnout finální verzi

Projít a polishnout README:

  • uploadnout finální verzi

  • vytvořit Readme file = STRÁNKU O TÉTO APLIKACI a nacpat do dokumentací

  • DOVOLIT HÁČKY A ČÁRKY v názvech balíčků

  • Opravit error s deck/collection name - hazi to ze to je empty, kdyz to je nepovoleny znak

  • Zeptat se Horkýho na feedback k dokumentaci. Jestli by nam mohl dat feedback nebo jestli by nam mohl ukazat projekty minulych studentu.

  • PRI LOADNUTI DECKU, PAK LOADNUTI DRUHEHO DECKU JE ERROR S ISPINNED (To samy u collections?) - Asi jsem to fixnul lol

  • prejmenovat konstanty na velky pismena

  • Set Pin button to send to server when pressed (not when leaving site) ... it causes bugs such as when refreshing the site, the pin is still the same

  • After logging in, redirect to /home

  • Better loading (removing "loading" button but adding loading circle with MUI & the article)

  • Přidat odkazy na stánky v Readme.md

  • Udělat global error popup - sepsat seznam všech známých errorů, pokud se to nerovná žádnému z nich, tak to udělá popup "Something went wrong" - Na to asi kaslu nebo ne?

  • Osetrit private validation u createDeck a updateDeck + collections - Na to asi kaslu

  • Pri uploadnuti obrazku do decku oriznout obrazek pred uploadem na Firebase Storage - na to fakt kaslu :D

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.