Giter Site home page Giter Site logo

air-flashcards's Introduction

Proyecto Air

App Flashcards

Notion del proyecto


Documentos importantes


Estructura de carpetas

src/ 
└───modules/
│   └───firebase/
|	└───auth.tsx
|	└───firebase-utils.ts
|	└───firebase-types.ts
|	└───...
│   └───Home/
|	└───components/
|	|	└───HomeForm.tsx
|	|	└───homeForm.module.css
|	└───HomeView.tsx
|	└───home-hooks.ts
|	└───home.module.css
|	└───home-utils.ts
|	└───home-types.ts
|	└───...
│   └───collections/
|	└───CollectionDetailView.tsx
|	└───CollectionUpdateView.tsx
|	└───CollectionCreateView.tsx
|	└───Collection-utils.ts
|	└───...
│   └───another-module/
|	└───components/
|	└───...
|	└───AnotherView.ts
|	└───another-store.ts
|	└───...
│   └───shared/
|	└───components/
|	|	└───buttons/
|	|	└───text/
|	|	└───forms/
|	└───SomeComponent.ts
|	└───AnotherUnclassifiedComponent.ts
|	└───assets/
|	|	└───images/
|	|	|	└───logo.png
|	|	|	└───background_main.jpg
|	|	|	└───...

assets carpeta

Carpeta que contienen archivos de imagenes como: png, svg, jpg, etc

modules carpeta

Carpeta principal para especificar modules

shared carpeta

Carpeta para utilidades y components que se deberian compartir atraves de modulos

components carpeta

Componentes de react, pueden ser especificados en shared/components/ o modules/<module-name>/components/

*-utils archivo

Funciones o clases, pueden ser especificados en shared/ o modules/<module-name>/

*.module.css archivo

Archivo css para especificar los estilos del componente o modulo

¿Cómo sé si lo que estoy haciendo va en un módulo aparte o en shared?

Una manera fácil de saber si tu código se comporta como un módulo, es ver si tiene funciones o características que se llaman entre sí para cumplir un propósito. Por ejemplo, el module de Firebase no es un módulo que tenga una vista, pero sí tiene una lógica que necesita tener una capa de abstracción para que los otros módulos puedan acceder a sus funcionalidades fácilmente. En shared principalmente deberían ir componentes, funciones, constantes etc. Que se comportan a nivel de la aplicación y se necesiten en varios módulos a la vez.

Lo ideal si tienes una funcion o componente que veas que se requiera en otro módulo es que muevas esa función a shared, ya que no deberíamos tener imports entre módulos, osea que el módulo de Home no importe nada del Modulo de Login


Variables de ambiente

Crea un archivo .env en el root del proyecto, y agrega los siguientes valores para poder conectarte a Firebase:

NEXT_PUBLIC_FIREBASE_API_KEY=...
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=...
NEXT_PUBLIC_FIREBASE_PROJECT_ID=...
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=...
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=...
NEXT_PUBLIC_FIREBASE_APP_ID=...

Podrás encontrar esto también en el archivo .env.example. Para encontrar los valores que debes reemplazar por ... debes acceder a este enlace


Contribuir al Proyecto

Para contribuir al proyecto, lo ideal es basarse en el siguiente paso a paso:

1) Issue

Este es el punto de partida de cualquier tarea. Ingresa al board del proyecto, y asígnate el issue que vayas a realizar. Lo ideal es que sea uno que se encuentre en la columna TODO. Chequea que tenga una descripción clara y apropiada, y un scope bien definido para que cuando hagas los cambios, tanto vos como quien revise tu Pull Request sepa cuál es el objetivo y qué debe aprobar o no aprobar. Si el issue no existe, podés crearlo bajo estos mismos requisitos. Por último, pasá este issue que te asignaste a la columna In Progress.

2) Creá una branch

Deberás pararte en tu branch main, habiendo pulleado los últimos cambios de esa rama, y desde allí, crear una nueva siguiendo la siguiente convención: (Rama-padre)-(Tipo)/(Numero de la issue)-(Descripcion corta)

  • Rama-padre: La rama que originó la rama que estas creando.
  • Tipo : El propocito de la rama, pueden ser: fix, feature, docs, tests, release
  • Numero de la issue: Numero de la issue.
  • Descripcion corta: Una descripcion corta sobre de que va a ser la rama

Ejemplo:

  • main-fix/39-page-loadings
  • main-feature/2-add-firebase-module
  • main-test/49-date-picker-tests

3) A medida que avances, haz commits

Los commits son el historial de un proyecto. Indican qué se hizo a lo largo del tiempo, y tener buenos commits, nos permite tener un mejor control sobre la historia de nuestro código, permitiéndonos volver al pasado y recuperar cambios, volver hacia atrás si algo salió mal en alguno de ellos, y muchas otras ventajas. Al ser el historial del proyecto, también serán el historial de tu Pull Request, así que tratalos con cariño. Además, permiten al reviewer al leerlos, entender cuál fue el proceso mental que siguió el autor para desarrollar ese Pull Request. Para crear commits bonitos, sigue esta convención a la hora de elegirles un mensaje:

  <type>[scope]: <description>

  [optional body]

Por ejemplo: feat(RegisterForm): add prop submitLabel to show in submit button

Puedes incluso ser más específico aclarando exactamente dónde se encuentra el directorio y archivo que modificaste, pero eso dejaría tu commit muy largo, y la idea es que sean algo fácil de leer y entender. Más info sobre Conventional Commits

4) Creá un Pull Request

Puedes crear el Pull Request tanto cuando empieces a codear como al terminar, aunque te recomendamos hacerlo al inicio para poder ir viendo cómo vas avanzando y hacerte comentarios que puedan ahorrarte tiempo. Si lo haces de esta manera, no olvides poner al inicio del nombre del PR [WIP] (Work In Progress), para indicar que aún no está listo para ser revisado. Luego, nómbralo siguiendo la siguiente convención:

[Rama a mergear] [Tipo] [Pequeña descripcion]

  • Tipo: El proposito del pull request, pueden ser: [FIX], [FEATURE], [DOCS], [RELEASE], [TESTS], [WIP]
  • Rama a mergear: La rama a la que se le hace el pull request (Usualmente seria main, ya que los cambios se enviarian a esa rama)
  • Pequeña descripcion: Una pequeña descripcion general de los cambios

Ejemplo:

  • [MAIN][FIX] Change primary color
  • [MAIN][FEATURE] Add Log out button

Responde y debate con tus compañeros las consultas que hagan sobre tu código, y está atento para revisar también los que suben los otros participantes para dar tu feedback. Es PR es el momento en el que chequeamos que lo que llega a main es correcto y hubo personas que validaron esos cambios. Es un momento de enorme aprendizaje así que te recomendamos aprovecharlo. Haz los cambios que hayan considerado necesarios en los comentarios, y luego espera que te lo aprueben al menos dos personas para finalmente, mergear. La idea es que los PR no se traben mucho tiempo para evitar Merge Conflicts.

air-flashcards's People

Contributors

anibaldbxd avatar kevin-dev71 avatar mariodev9 avatar tomi-mercado avatar oraliahdz avatar nicodeheza avatar dafnecaneda avatar agustinvazquez30 avatar 9gustin avatar iarabaya avatar gustavoisaacc avatar lilianaestefanypachari avatar analiaalvarez avatar marcelonieva7 avatar franmper avatar eriandev avatar hifrontendcafe avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

air-flashcards's Issues

Crear componente GameStatus

Image

Image

Crear componente GameStatus, el cual debe ser capaz de recibir y renderizar

  • cantidad de preguntas correctas
  • cantidad de preguntas incorrectas
  • pregunta actual
  • preguntas totales

Cuando no hay preguntas correctas respondidas, se muestran rectángulos como en la primera imagen

Crear componente Select

Image

Crear componente Select capaz de recibir un label, un placeholder y un array de opciones que provean un texto a mostrar en cada opción, como un value para cada una de ellas, más las props que se consideren necesarias.
Armar los estilos desde el theme de Chakra.
Debe ser responsive, y por defecto debería ocupar el ancho total de su padre, permitiendo otras props que permitan modificar ese comportamiento.
#75

Crear rutas no accesibles al estar logueado

Crear componente que redirija al usuario hacia una ruta que se pueda recibir por props al estar logueado. Es decir, el usuario estando logueado no debería poder acceder a ella. Por ejemplo, un usuario logueado no debería poder ingresar a la página de login o register.

Crear endpoint para crear una card

Contexto

Necesitamos un endpoint para agregar cards. No es necesario mejorar la interface cards, para eso esta la issue #36 . No es necesario agregar una pagina que renderice este endpoint, podes hacerlo si tessirve pero el alcance de esta card es el endpoint.

Criterios de aceptacion

  1. Debe crearse un endpoint(en las api routes de next) que permita agregar registros a la coleccion collections/id/cards
  2. Una card debe pertenecer a una coleccion si o si.

Links utiles

Si tessirve dejo la documentacion sobre como realizar esto con firestore:
https://firebase.google.com/docs/firestore/manage-data/add-data

Nuestra consola de firebase:
https://console.firebase.google.com/u/0/project/air-flashcards/overview

Crear componente StudySessionCard

Image

Crear componente para las cards de las sesiones de estudio, los cuales deben recibir y ser capaces de renderizar:

  • un título
  • la colección a la cual pertenecen
  • la cantidad de tarjetas
  • el porcentaje completado de la sesión de estudio

Además, debe recibir

  • una url a la cual se debe redirigir al usuario si la card es clickeada
  • on callback que reciba el id de la sesión de estudio que se está renderizando para poder eliminarla desde fuera del componente

Integrar autenticacion del frontend con las llamadas a firestore

Contexto

Necesitamos autenticar las requests que le hacemos a firestore. Debemos tomar el token del usuario autenticado e implementarlo en una funcion generica que despues se utilize para hacer las peticiones de informacion a firestore.

Criterios de aceptacion

  1. Se debe integrar el usuario loggeado con las peticiones a firestore.
  2. Se debe dejar un metodo generico para agregar las credenciales en cada request

Links utiles

Si tessirve dejo la documentacion sobre como realizar esto con firestore:
https://firebase.google.com/docs/firestore/security/overview

Nuestra consola de firebase:
https://console.firebase.google.com/u/0/project/air-flashcards/overview

Crear endpoint para buscar una coleccion

Contexto

Necesitamos un endpoint para buscar una coleccion por texto. No es necesario mejorar la interface collection, para eso esta la issue #35 . No es necesario agregar una pagina que renderice este endpoint, podes hacerlo si tessirve pero el alcance de esta card es el endpoint.

Criterios de aceptacion

  1. Debe crearse un endpoint(en las api routes de next) que permita filtrar collections por el campo name.
  2. Se debe recibir por parametro el texto a buscar

Links utiles

Si tessirve dejo la documentacion sobre como realizar esto con firestore:
https://firebase.google.com/docs/firestore/query-data/queries#simple_queries

Nuestra consola de firebase:
https://console.firebase.google.com/u/0/project/air-flashcards/overview

Crear endpoint para obtener una coleccion por id de session de estudio

Contexto

Necesitamos un endpoint para buscar una coleccion que contiene una sesion de estudio. No es necesario mejorar la interface collection, para eso esta la issue #35 . No es necesario agregar una pagina que renderice este endpoint, podes hacerlo si tessirve pero el alcance de esta card es el endpoint.

Criterios de aceptacion

  1. Debe crearse un endpoint(en las api routes de next) que permita obtener una collection por un id de sesion de estudio
  2. Se debe recibir por parametro el id de la sesion de estudio

Links utiles

Si tessirve dejo la documentacion sobre como realizar esto con firestore:
https://firebase.google.com/docs/firestore/query-data/queries#simple_queries

Nuestra consola de firebase:
https://console.firebase.google.com/u/0/project/air-flashcards/overview

Definir modelo Card con todos sus campos

Contexto

El objetivo es dejar creada la interface de Card con sus campos para despues utilizarla como tipo para endpoints y pantallas que necesiten usar colecciones.

Los que se me ocurrieron a mi:

  1. createdAt: string
  2. sideA: {type: "image"|"text", value: string}
  3. sideB: {type: "image"|"text", value: string}
  4. id: autogenerated

Criterios de aceptacion

  1. Dejar la interface en modules/Cards/models.ts

Links utiles

Para poder refinar que campos tiene este modelo podemos guiarnos en el diseño:
https://www.figma.com/file/T1vCl4wMSd8IvDtU82MZUC/Flashcards?node-id=0%3A1

Crear componente Dialog

Image

Crear componente Dialog, el cual debe recibir por props si se encuentra abierto o no, un ícono, un color para el fondo de ese ícono y el ícono en sí mismo, un título, subtítulo, y un array de botones que posean tanto un label a mostrar como una función a invocar si son clickeados.
Así mismo, clickear fuera del componente debería cerrarlo.

Crear endpoint para editar una card

Contexto

Necesitamos un endpoint para editar cards. No es necesario mejorar la interface cards, para eso esta la issue #36 . No es necesario agregar una pagina que renderice este endpoint, podes hacerlo si tessirve pero el alcance de esta card es el endpoint.

Criterios de aceptacion

  1. Debe crearse un endpoint(en las api routes de next) que permita editar registros de la coleccion collections/id/cards
  2. Una card debe pertenecer a una coleccion si o si.

Links utiles

Si tessirve dejo la documentacion sobre como realizar esto con firestore:
https://firebase.google.com/docs/firestore/manage-data/add-data#update-data
https://firebase.google.com/docs/firestore/manage-data/add-data#update_fields_in_nested_objects

Nuestra consola de firebase:
https://console.firebase.google.com/u/0/project/air-flashcards/overview

Crear endpoint para eliminar una coleccion

Contexto

Necesitamos un endpoint para eliminar colecciones. No es necesario mejorar la interface collection, para eso esta la issue #35 . No es necesario agregar una pagina que renderice este endpoint, podes hacerlo si tessirve pero el alcance de esta card es el endpoint.

Criterios de aceptacion

  1. Debe crearse un endpoint(en las api routes de next) que permita eliminar registros de la coleccion collections

Links utiles

Si tessirve dejo la documentacion sobre como realizar esto con firestore:
https://firebase.google.com/docs/firestore/manage-data/delete-data

Nuestra consola de firebase:
https://console.firebase.google.com/u/0/project/air-flashcards/overview

Setup de la style-guide

Contexto

Necesitamos hacer el detup del tema completo que se definio por diseño para despues utilizarlo en las distintas paginas y componentes.

Criterios de aceptacion

  1. Agregar la tipografia a la app
  2. Crear las variables de la tipografia
  3. Crear los colores restantes en el theme
  4. Se debe partir de esta rama, que tiene el setup inicial: feature/integrate-chakra-ui

Links utiles

Figma de la style-guide:
https://www.figma.com/file/T1vCl4wMSd8IvDtU82MZUC/Flashcards?node-id=346%3A4501

Crear endpoint para obtener una card por id

Contexto

Necesitamos un endpoint para buscar una card por id. No es necesario mejorar la interface card, para eso esta la issue #36 . No es necesario agregar una pagina que renderice este endpoint, podes hacerlo si tessirve pero el alcance de esta card es el endpoint.

Criterios de aceptacion

  1. Debe crearse un endpoint(en las api routes de next) que permita obtener una collections/id/cards/CARD_ID por id de la card.
  2. Se debe recibir por parametro el id de la card a obtener
  3. Se debe retornar la informacion de la card

Links utiles

Si tessirve dejo la documentacion sobre como realizar esto con firestore:
https://firebase.google.com/docs/firestore/query-data/queries#simple_queries

Nuestra consola de firebase:
https://console.firebase.google.com/u/0/project/air-flashcards/overview

SPIKE - Investigar como se realizaria la integracion con Firebase Storage

El usuario cuando cree tarjetas va a poder agregarles imagenes, para esto podriamos guardarlas en firebase storage, deberiamos realizar una investigacion sobre como hacer esto.

Criterios de aceptacion

  1. Dejar en la app algun formulario dummy que cargue imagenes a firebase
  2. Dejar el metodo para cargar imagenes a firebase

Links utiles

Consola de firebase
https://console.firebase.google.com/u/0/project/air-flashcards/overview

Doc sobre firebase storage
https://firebase.google.com/docs/storage?hl=es&authuser=0

Crear componente Textfield

Image

Crear un componente Textfield capaz de recibir label, placeholder, y un boolean textarea que lo muestre como un textarea si es true (un campo textarea es un campo de texto un poco más grande), y el resto de lo que se considere necesario.
Armar los estilos desde el theme de Chakra.
Debe ser responsive, y por defecto debería ocupar el ancho total de su padre, permitiendo otras props que permitan modificar ese comportamiento.

Crear endpoint para crear una coleccion

Contexto

Necesitamos un endpoint para agregar colecciones. No es necesario mejorar la interface collections, para eso esta la issue #35 . No es necesario agregar una pagina que renderice este endpoint, podes hacerlo si tessirve pero el alcance de esta card es el endpoint.

Criterios de aceptacion

  1. Debe crearse un endpoint(en las api routes de next) que permita agregar registros a la coleccion collections

Links utiles

Si tessirve dejo la documentacion sobre como realizar esto con firestore:
https://firebase.google.com/docs/firestore/manage-data/add-data

Nuestra consola de firebase:
https://console.firebase.google.com/u/0/project/air-flashcards/overview

Configurar linter

Configurar comando para hacer lint en el proyecto, inicialmente habiamos pensado en implementar la configuracion de airbnb. Tambien ver si hace falta configurar prettier, si con eslint se puede resolver todo mejor.

Se aceptan propuestas.

Crear endpoint para eliminar una card

Contexto

Necesitamos un endpoint para eliminar cards. No es necesario mejorar la interface cards, para eso esta la issue #36 . No es necesario agregar una pagina que renderice este endpoint, podes hacerlo si tessirve pero el alcance de esta card es el endpoint.

Criterios de aceptacion

  1. Debe crearse un endpoint(en las api routes de next) que permita eliminar registros de la coleccion collections/id/cards

Links utiles

Si tessirve dejo la documentacion sobre como realizar esto con firestore:
https://firebase.google.com/docs/firestore/manage-data/delete-data#fields

Nuestra consola de firebase:
https://console.firebase.google.com/u/0/project/air-flashcards/overview

Crear endpoint que permita eliminar sesiones de estudio de un usuario

Contexto

Necesitamos un endpoint para eliminar sesiones de estudio de un usuario.

Criterios de aceptacion

  • Debe crearse un endpoint(en las api routes de next) que recibiendo un uid de un usuario, y un id de studySession, permita chequear que el uid de ella es el mismo que el usuario tiene, y en caso de ser correcto, eliminar esa sesión de estudio.

Crear pantalla de iniciar sesion e integrar con firebase

El objetivo es crear otra page que sea para iniciar sesion. No es necesario que la pagina tenga estilos, el objetivo es utilizar los conocimientos en la charla de hoy: crear una pagina en next, usar los componentes del formulario de registro, integrar el metodo signin de firebase.

Criterios de aceptacion

  1. El usuario debe poder loggearse con email y contraseña
  2. Se debe validar el usuario contra firebase
  3. Se debe dar feedback al usuario a traves de alerts sobre el resultado (campos vacios, loggeado, error)

Documentacion adicional:

Consola del proyecto (Si no tenes acceso solicitanos por el canal de air-proyect de Discord!):
https://console.firebase.google.com/u/0/project/air-flashcards/overview

Integrar firebase:
https://firebase.google.com/docs/auth/web/password-auth#sign_in_a_user_with_an_email_address_and_password

Conventional commits:
https://www.conventionalcommits.org/en/v1.0.0/#summary

Crear endpoint para obtener una coleccion por id

Contexto

Necesitamos un endpoint para buscar una coleccion por id. No es necesario mejorar la interface collection, para eso esta la issue #35 . No es necesario agregar una pagina que renderice este endpoint, podes hacerlo si tessirve pero el alcance de esta card es el endpoint.

Criterios de aceptacion

  1. Debe crearse un endpoint(en las api routes de next) que permita obtener una collection por id.
  2. Se debe recibir por parametro el id a obtener
  3. Se debe parametrizar que sub-colecciones obtener. Puedo pedir solo la coleccion, puedo incluir sus cards y/o studySessions

Links utiles

Si tessirve dejo la documentacion sobre como realizar esto con firestore:
https://firebase.google.com/docs/firestore/query-data/queries#simple_queries

Nuestra consola de firebase:
https://console.firebase.google.com/u/0/project/air-flashcards/overview

SPIKE - Investigar como se realizaria la integracion con Firestore

El objetivo de esta card seria integrar con la app firestore, creando algun formulario dummy y probando los distintos metodos para crear, editar, eliminar y listar. Se puede utilizar el modelo "collections" para hacer esto.

Recordar que para Firebase los "modelos" se llaman "colecciones" o "collections", tratar de no confundirse con nuestro modelo collections que tiene el mismo nombre. Entonces, en Firestore por ejemplo tenemos una collection "cards" y una collection "collections"

Criterios de aceptación

  1. Dejar en el repo una conexión hecha con firestore y métodos para crear, editar, eliminar y listar una colección de firebase.

Links utiles

Consola de firebase:
https://console.firebase.google.com/u/0/project/air-flashcards/overview

Doc sobre como usar firestore:
https://firebase.google.com/docs/firestore

Crear endpoint para editar una coleccion

Contexto

Necesitamos un endpoint para editar colecciones. No es necesario mejorar la interface collection, para eso esta la issue #35 . No es necesario agregar una pagina que renderice este endpoint, podes hacerlo si tessirve pero el alcance de esta card es el endpoint.

Criterios de aceptacion

  1. Debe crearse un endpoint(en las api routes de next) que permita editar registros de la coleccion collections

Links utiles

Si tessirve dejo la documentacion sobre como realizar esto con firestore:
https://firebase.google.com/docs/firestore/manage-data/add-data#update-data

Nuestra consola de firebase:
https://console.firebase.google.com/u/0/project/air-flashcards/overview

Revisar endpoint PATCH de cards

Contexto

Ya esta desarrollado el modelo final de cards, deberiamos hacer pruebas de el endpoint patch, para ver si nos vamos a tener conflictos con las propiedades de tipo objeto(SideA, SideB).

Crear endpoint para editar una sesion de estudio

Contexto

Necesitamos un endpoint para editar sesiones de estudio. No es necesario mejorar la interface StudySession, para eso esta la issue #37 . No es necesario agregar una pagina que renderice este endpoint, podes hacerlo si tessirve pero el alcance de esta card es el endpoint.

Criterios de aceptacion

  1. Debe crearse un endpoint(en las api routes de next) que permita editar registros de la coleccion collections/id/studySessions
  2. Una sesion de estudio debe pertenecer a una coleccion si o si.

Links utiles

Si tessirve dejo la documentacion sobre como realizar esto con firestore:
https://firebase.google.com/docs/firestore/manage-data/add-data#update-data
https://firebase.google.com/docs/firestore/manage-data/add-data#update_fields_in_nested_objects

Nuestra consola de firebase:
https://console.firebase.google.com/u/0/project/air-flashcards/overview

Crear endpoint para crear una sesion de estudio

Contexto

Necesitamos un endpoint para agregar sesiones de estudio. No es necesario crear la interface StudySessions, para eso esta la issue #37 . No es necesario agregar una pagina que renderice este endpoint, podes hacerlo si tessirve pero el alcance de esta card es el endpoint.

Criterios de aceptacion

  1. Debe crearse un endpoint(en las api routes de next) que permita agregar registros a la coleccion collections/id/studySessions
  2. Una studySession debe pertenecer a una coleccion si o si.
  3. Una studySession debe poder indicar a qué usuario pertenece cuando sea accedida.

Links utiles

Si tessirve dejo la documentacion sobre como realizar esto con firestore:
https://firebase.google.com/docs/firestore/manage-data/add-data

Nuestra consola de firebase:
https://console.firebase.google.com/u/0/project/air-flashcards/overview

Crear componente GameCard

Image

Crear componente GameCard el cual debe ser capaz de recibir por props y renderizar

  • El texto que se muestra en el medio (de ambos lados de la tarjeta)
  • Una imagen que puede llegar a ir de fondo
  • Al hacer click sobre la tarjeta, esta debe voltearse y mostrar el otro lado (por ahora, no hay necesidad de agregar animación)

Además, dejar seteados los botones con sus íconos y textos de "Escuchar", "Mezclar" y "Voltear tarjeta", les daremos funcionalidad más adelante

Crear componente SliderInput

Image

Crear componente SliderInput capaz de recibir y renderizar

  • label
  • min
  • max

A medida que se usa, el valor del input debe ir modificándose

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.