Git Product home page Git Product logo

andresweitzel / microservicio_productossupermercado Goto Github PK

View Code? Open in Web Editor NEW
1.0 3.0 1.0 5.08 MB

Microservicio acerca de productos de supermercado implementado con Spring Boot, Spring MVC, Spring Security, JWT , Spring Data JPA, SpringFox, Swagger UI, Maven, Lombok, Postman, Log4j, Git, DBeaver, pgAdmin y PostgreSQL

License: GNU General Public License v3.0

Java 100.00%
git log4j lombok maven postgresql spring-boot spring-data-jpa spring-docs spring-mvc spring-security

microservicio_productossupermercado's Introduction

Microservicio Productos de Supermercado

  • Microservicio acerca de Productos de Supermercado implementado con Spring Boot, Spring MVC, Spring Security, JWT , Spring Data JPA, SpringFox, Swagger UI, Maven, Lombok, Postman, Log4j, Git, DBeaver, pgAdmin y PostgreSQL.


脥ndice 馃摐

Ver

Secci贸n 1) Descripci贸n, Tecnolog铆as y Dependencias

Secci贸n 2) Endpoints y Recursos

Secci贸n 3) Prueba de Funcionalidad y Referencias



Secci贸n 1) Descripci贸n, Tecnolog铆as y Dependencias

1.0) Descripci贸n 馃敐

Ver
  • El Microservicio implementa todas las Operaciones CRUD, tanto para productos como para usuarios.
  • Se separa la capa de seguridad para la autenticaci贸n , implementando Spring Security y JWT.
  • Adem谩s de realizar las operaciones CRUD para usuarios se aplica login y signin para la capa de presentaci贸n.
  • Tambi茅n se desarrollan los m茅todos de b煤squedas independientes de tipo Like para todos los campos, tanto de usuarios como productos.
  • Los objetos de tipo getBy se manipulan como paginados, salvo los getById y Optional que se requiere un response por objeto y no una E.D como de tipo lista, stream, etc.
  • Se desarrollan clases espec铆ficas para el manejo de excepciones para cada servicio , como tambi茅n un manejador de excepciones y validaciones por campos de beans.
  • Todas las funcionalidades tienen generaci贸n de logs en el Server para los errores y excepciones personalizadas.
  • Se incluye documentaci贸n completa de la Api con SpringFox para la visualizaci贸n con swagger-ui, las anotaciones de open-api se aplican junto con los c贸digos de respuesta de tipo HTTP para cada funci贸n en los respectivos controllers.
  • Se pone a disposici贸n todos los recursos anteriores para productos y usuarios.
  • Entre otros.


1.1) Ejecuci贸n del Proyecto 馃敐

Ver
  • Ejecutar la base de datos del proyecto.
  • Crear un entorno de trabajo a trav茅s de alg煤n IDE (Para este caso utilizo STS 4).
  • Clonar el Proyecto (git clone https://github.com/andresWeitzel/ApiRest_MicroFrontEnd_ProductosSupermercado)
  • Utilizando sts, dentro del package explorer click derecho sobre el proyecto, run as spring boot app.
  • Verificar logs del server.
  • Comprobar cada endpoint.

1.2) Patrones de Dise帽o 馃敐

Ver
Patr贸n de Dise帽o Finalidad
DAO Uso de interfaces entre la aplicaci贸n y el almacenamiento de datos.
MVC Separaci贸n y Representaci贸n de los Datos, Manejo de errores, Escalabilidad, etc
DTO Transferencia de objectos separando la capa de acceso a datos
Dependency Inyection Uso de funcionalidades requeridas de clases a trav茅s de inyecci贸n

1.3) Tecnolog铆as 馃敐

Ver
Tecnolog铆a Versi贸n Finalidad
Java 12.0.2 JDK
Spring Tool Suite 4 4.9.0 IDE
Spring Boot 2.6.4 Framework
Spring Boot Data JPA 2.6.3 Mapeo de objetos y persistencia en la db
Spring Security 2.6.7 Servicios de Seguridad
JSON Web Token 0.9.1 Creaci贸n de tokens de acceso
Maven 4.0.0 Gestor de Proyectos
Postman 9.4.1 Test de Apis
Lombok 1.18.22 Automatizaci贸n de C贸digo
SpringFox 3.0.0 Documentaci贸n de la Api
UI Swagger 1.6.4 Visualizaci贸n y Gesti贸n de la Api
PostgreSQL 13.2 Sistema de Gesti贸n de DB'S
DBeaver 22.1 Editor de Base de Datos
pgAdmin 5.1 Sistema de Administraci贸n de DB'S
GNU bash / Terminal 4.4.23 Bash / Terminal para el manejo e implementaci贸n de Git integrado al Spring Tool Suite
Git 2.29.1 Control de Versiones

1.4) Dependencias Maven 馃敐

Ver
Dependencia Maven Versi贸n Finalidad
spring-boot-starter-data-jpa 2.6.7 Api de JpaRepository para el manejo de m茅todos
spring-boot-starter-test 2.6.7 Para Testing
spring-boot-starter-web 2.6.7 Se agrega toda la configuraci贸n web autom谩ticamente de Maven a Spring
spring-boot-starter-validation 2.7.0 Validaci贸n de Annotations
spring-boot-devtools 2.6.7 Herramientas para el Manejo de Spring Boot
spring-boot-starter-security 2.6.7 M贸dulo de Seguridad de Spring
jjwt 0.9.1 Manejo de Token's
nimbus-jose-jwt 9.22 Refresh Token
jaxb-api 4.0 Serializaci贸n de Objetos Java a XML
jackson-databind 4.0 Serializaci贸n de Objetos Java a JSON
javax-annotation-api 4.0 Api para la lectura de annotations
springfox-boot-starter 3.0.0 Doc Api
springfox-swagger-ui 3.0.0 Doc Api
postgresql 42.3.4 Driver para el SGDB PostgreSQL
lombok 1.18.22 Dependencia para la automatizaci贸n de C贸digo


Secci贸n 2) EndPoints y Recursos

2.0) EndPoints 馃敐

Ver

EndPoints Generales

Descripci贸n Api Rest

Index app

Response Modelo C贸digos Http

Index app Index app

Beans Validations

Index app


2.1) Recursos por Endpoints馃敐

Ver
  • Algunos de los recursos de cada endpoint se muestran en las siguientes im谩genes.

Producto Controller.

Index app

Usuario Controller.

Index app

Auth Controller.

Index app



Secci贸n 3) Prueba de Funcionalidad y Referencias

3.0) Prueba de Funcionalidad 馃敐

Ver

Login y Signin | Ver funcionalidad

Alt text

Refresh Token | Ver funcionalidad

Alt text

Usuario Controller | Ver funcionalidad

Alt text

Usuario Bean Validations (Add) | Ver funcionalidad

Alt text

Usuario Bean Validations (Update and Delete) | Ver funcionalidad

Alt text

Producto Controller | Ver funcionalidad

Alt text

Producto Bean Validations | Ver funcionalidad

Alt text

Documentaci贸n SwaggerUI-SpringFox | Ver funcionalidad

Alt text


3.1) Referencias 馃敐

Ver

Doc No Oficial Recomendada

Doc Gr谩fica No Oficial Recomendada





Siguiente secci贸n en proceso de actualizaci贸n

Ver

Documentaci贸n y Gu铆a del Proyecto

(Esta Documentaci贸n que Desarroll茅 es para la Creaci贸n y Configuraci贸n de la API Rest, Manejo y Dependencias de Maven, Spring Tool Suite, Spring Boot, Spring Security, JWT, PostgreSQL, SpringFox, Swagger UI y otros usos. Esta gu铆a solamente abarca algunos puntos de configuraci贸n, si se requiere especificidad para alg煤n caso concreto dirigirse a los links que se anexan en cada paso. Recomiendo Leerla y Realizar todo paso a paso como se indica en la misma ).


Indice

Secci贸n 1) Creaci贸n y Configuraciones del Proyecto

Secci贸n 2) Dependencias del Proyecto, Descarga de Lombok y Archivo de Propiedades

Secci贸n 3) Creaci贸n y Configuraci贸n de Clases Entities/Models

Secci贸n 4) Creaci贸n y Configuraci贸n de las Interfaces Repositories

Secci贸n 5) Creaci贸n y Configuraci贸n de los Services y Excepciones de Clase

Secci贸n 6) Creaci贸n y Configuraci贸n de los Controllers

Secci贸n 8) Prueba de los Servicios Rest Desarrollados

  • [Paso x) Desarrollar...

Secci贸n 9) Uso y Manejo de Git


Secci贸n 1) Creaci贸n y Configuraciones del Proyecto


Paso 1) Creaci贸n de un Proyecto Spring Boot con Maven en Spring Tool Suite 4 y Configuraciones Iniciales.

(Primeramente deber谩s configurar tu espacio de trabajo, en donde se alojar谩 la aplicaci贸n. Cada vez que muevas el Proyecto de Directorio, recomiendo crear o setear nuevamente el Espacio de Trabajo).

  • Una vez abierto Spring Tool Suite 4

    • --> Seleccionas la Pesta帽a File
    • --> New
    • --> Spring Starter Proyect (Si no aparece buscar en Other).
  • Se abrir谩 una Interfaz Gr谩fica, por defecto dejar marcado lo siguiente con los siguientes valores por defecto

    • --> Service Url : https://start.spring.io
    • --> Use default location por defecto (es la ruta absoluta de tu workspace)
    • --> Type : Maven
    • --> Java Version : 11
    • --> Packaging : Jar
    • --> Language : Java
    • --> Artifact : Por Defecto como est谩 (cambia autom谩ticamente cuando escribimos el Name del Proyect) * --> Version : Por Defecto como est谩 * --> Working Sets Desmarcado.
  • Configuramos lo restante

    • --> Name : ApiRest_NombreDelproyecto. Luego debe cambiarse aut. el Artifact
    • --> Group : com.api.nombre (Nombre del grupo + Referencia de api + Nombre del Proyecto).
    • --> Description: la deseada.
    • --> Package : com.api.nombre
    • --> Next
  • En la Nueva Interfaz Gr谩fica elegimos la versi贸n y dependencia

    • --> Spring Boot Versi贸n : 2.6.7 o una que no sea la 煤ltima
    • --> Vamos a seleccionar las dependencias necesarias
    • --> Dependencias : Spring Web, Spring Data JPA, Spring Boot DevTools, Lombok, Spring Security, Postgres y si falta alguna se a帽ade luego en el pom.xml desde maven repositories.
    • --> Next, Next y Seguidamente Finish.
  • Esperar a que finalice Spring la creaci贸n del Proyecto


Paso 2) Otras Configuraciones del Proyecto.

(Para este paso se anexan configuraciones que para el Proyecto son relevantes, capaz creando el Proyecto desde otro IDE se autoconfiguran dichas configuraciones).


2.1) Actualizaci贸n de Java-1.7 a 1.8 (Si seleccionaste una versi贸n Moderna de Spring no es Necesario esto)

  • Vamos al pom.xml (el archivo al final de todo)

  • Dentro de el tag properties donde dice java.versi贸n cambiar la version del compiler a 1.8, ctrl+s para guardar

  • Click Derecho sobre el Proyecto

    • --> Maven
    • --> Update Proyect
    • --> Fijate que el Proyecto este seleccionado y Boton ok
  • Si cambio JavaSE-1.7 a JavaSE-1.8 se efectuo el cambio


2.2) Paquetes Maven (Java Resources). (Si seleccionaste una versi贸n Moderna de Spring no es Necesario esto)

  • Por Defecto Viene deshabilitada la opci贸n de paquetes Maven, en donde vamos a guardar nuestros paquetes y clases
    • --> Para habilitar las mismas, click Der sobre el Proyecto.
    • --> Properties.
    • --> Buscamos la secci贸n Java Build Path
    • --> Seleccionamos la casilla Maven Dependencies.
    • --> Apply and Close.
    • --> F5 y deber铆an aparecer src/main/java y src/test/java

Secci贸n 2) Dependencias del Proyecto, Descarga de Lombok y Uso del SGDB PostgreSQL


Paso 3) Listado de Dependencias

(Las siguientes dependencias del Proyecto deber谩n estar en el pom.xml para el correcto funcionamiento del Proyecto. Puede ocurrir que haya m谩s dependencias que las mencionadas, por defecto spring proporciona las generales, el resto las buscamos desde Maven Repositories).

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.6.7</version>
		<relativePath /> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.api.rest.productos.supermercado</groupId>
	<artifactId>ApiRest_MicroFrontEnd_ProductosSup</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>ApiRest_MicroFrontEnd_ProductosSup</name>
	<description>ApiRest_MicroFrontEnd_ProductosSup</description>
	<properties>
		<java.version>11</java.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-jpa</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-security</artifactId>
		</dependency>
		<!-- JSON WEB TOKEN -->
		<!-- https://mvnrepository.com/artifact/com.auth0/java-jwt -->
		<dependency>
			<groupId>io.jsonwebtoken</groupId>
			<artifactId>jjwt</artifactId>
			<version>0.9.1</version>
		</dependency>
		<!-- CONVERTIR OBJETOS JAVA EN OBJETOS XML -->
		<!-- https://mvnrepository.com/artifact/javax.xml.bind/jaxb-api -->
		<dependency>
			<groupId>javax.xml.bind</groupId>
			<artifactId>jaxb-api</artifactId>
		</dependency>



		<!-- CONVERTIR OBJETOS JAVA EN OBJETOS JSON -->
		<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
		</dependency>
		<!-- API LECTURA DE ANNOTATION -->
		<!-- https://mvnrepository.com/artifact/javax.annotation/javax.annotation-api -->
		<dependency>
			<groupId>javax.annotation</groupId>
			<artifactId>javax.annotation-api</artifactId>
		</dependency>

		<!-- API PARA LAS VALIDACIONES -->
		<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-validation -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-validation</artifactId>
		</dependency>



		<!-- REFRESH TOKEN -->
		<!-- https://mvnrepository.com/artifact/com.nimbusds/nimbus-jose-jwt -->
		<dependency>
			<groupId>com.nimbusds</groupId>
			<artifactId>nimbus-jose-jwt</artifactId>
			<version>9.22</version>
		</dependency>



		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<scope>runtime</scope>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>org.postgresql</groupId>
			<artifactId>postgresql</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>

		<!-- SWAGGER -->
		<!-- https://mvnrepository.com/artifact/io.springfox/springfox-boot-starter -->
		<dependency>
			<groupId>io.springfox</groupId>
			<artifactId>springfox-boot-starter</artifactId>
			<version>3.0.0</version>
		</dependency>
		
		<!-- SWAGGER -->
		<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
		<dependency>
			<groupId>io.springfox</groupId>
			<artifactId>springfox-swagger-ui</artifactId>
			<version>3.0.0</version>
		</dependency>

		<!--LOMBOK -->
		<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<scope>provided</scope>
		</dependency>

		<dependency>
			<groupId>org.springframework.security</groupId>
			<artifactId>spring-security-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>


  • ...
  • Ctrl + s Guardas
  • Click Der sobre el proyecto
  • Maven y update Maven o Alt + F5
  • Fijarse dentro de Maven Dependencies si Maven descargo las mismas

Paso 4) Descarga de Lombok

  • Seguidamente de tener el jars a trav茅s de la dependencia en nuestro proyecto, vamos a instalar lombok para poder utilizarlo, no basta con la descarga, hay que realizar la configuraci贸n y descarga del mismo en nuestro ordenador.
  • Buscamos el jar en Maven Dependencies lombok-1.18.... Click derecho y properties
  • Pesta帽a Java Source Attachment y buscamos el Path donde se descargo el jar de lombok.
  • Nos dirigimos a dicha carpeta, en mi caso C:\Users\andre\.m2\repository\org\projectlombok\lombok\1.18.22 y ejecutamos el jar de lombok lombok-1.18.22.jar
  • VAMOS A REALIZAR LA INSTALACI脫N EN LA CARPETA DE CONFIGURACI脫N DE NUESTRO IDE SELECCIONANDO SELECCIONANDO SPECIFY LOCATION, EN MI CASO SPRING TOOL SUITE C:\Program Files (x86)\sts-4.13.1.RELEASE
  • Instalamos, siguiente siguiente...
  • Cerramos y Abrimos el IDE para que los cambios se ejecuten correctamente

Paso 5) Configuraciones del application.properties

(Vamos a utilizar el esquema de conexi贸n de nuestra db ya creado en otro repositorio acerca de productos de supermercado y usuarios, las dudas referentes a la misma se encuentra en el respectivo repositorio de base de datos....https://github.com/andresWeitzel/Microdb_productos_supermercado_PostgreSQL)


  • Como se mencion贸, todos los pasos para trabajar con este esquema/db se encuentra en el respectivo repositorio, la informaci贸n relevante ser谩 el nombre y contrase帽a de usuario o rol levantado en el respectivo esquema creado (microdb_productos_supermercado)..
username: postgres

password: postgres
  • Las Configuraciones para el sgdb postgres ser铆an..
  • La URL es un estandar de uso, tipos de sgdb, host, puerto, tipo de db, etc
  • ATENTI, al trabajar con enumerados podemos agregar un config desde la URL para que postgres interprete correctamente los valores enviados desde los enumerados en java. ?stringtype=unspecified
#---CONFIG POSTGRESQL -----
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
spring.jpa.hibernate.ddl-auto=none
#spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.datasource.url=jdbc:postgresql://localhost:5432/microdb_productos_supermercado?stringtype=unspecified
spring.datasource.username=postgres
spring.datasource.password=postgres
  • Configuramos los loggins y paginaciones
#---CONFIG PAGINATION---
spring.data.rest.page-param-name=page
spring.data.rest.sort-param-name=sort
spring.data.rest.limit-param-name=limit
spring.data.rest.default-page-size = 10


# --- LOGGING
logging.level.org.springframework.data=debug
logging.level.=errors

  • xml completo..
#--- CONFIG SERVER -------
server.port = 8098
server.error.whitelabel.enabled=true


#---CONFIG POSTGRESQL -----
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
spring.jpa.hibernate.ddl-auto=none
#spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.datasource.url=jdbc:postgresql://localhost:5432/microdb_productos_supermercado?stringtype=unspecified
spring.datasource.username=postgres
spring.datasource.password=postgres



#---CONFIG PAGINATION---
spring.data.rest.page-param-name=page
spring.data.rest.sort-param-name=sort
spring.data.rest.limit-param-name=limit
spring.data.rest.default-page-size = 10


# --- LOGGING
logging.level.org.springframework.data=debug
logging.level.=errors


Secci贸n 3) Creaci贸n y Configuraci贸n de las Clases Entities/Models


Paso 6) Seguir paso a paso la respectiva secci贸n de la gu铆a de la siguiente api : https://github.com/andresWeitzel/ApiRest_Microelectronica_SpringBoot_Oracle



Secci贸n 4) Creaci贸n y Configuraci贸n de las Interfaces Repositories


Paso 7) Seguir paso a paso la respectiva secci贸n de la gu铆a de la siguiente api : https://github.com/andresWeitzel/ApiRest_Microelectronica_SpringBoot_Oracle


Secci贸n 6) Creaci贸n y Configuraci贸n de los Controllers


Paso 8) Seguir paso a paso la respectiva secci贸n de la gu铆a de la siguiente api : https://github.com/andresWeitzel/ApiRest_Microelectronica_SpringBoot_Oracle


Secci贸n 7) Prueba de los Servicios Rest Desarrollados


Paso 9) Seguir paso a paso la respectiva secci贸n de la gu铆a de la siguiente api : https://github.com/andresWeitzel/ApiRest_Microelectronica_SpringBoot_Oracle


Secci贸n 9) Uso y Manejo de Git.


Paso 26) Descarga y Configuraci贸n de Git

26.1) Descarga de Git

  • Nos dirigimos a https://git-scm.com/downloads y descargamos el versionador
  • Como toda aplicacion siguiente.... siguiente....
  • IMPORTANTE:NO TENER DBEAVER ABIERTO DURANTE LA INSTALACION, SINO NO RECONOCE EL PATH

26.2) Abrir una Consola de Git (Git Bash) desde Windows

  • --> Escribimos Git Bash desde el Buscador de Windows
  • --> Desde la consola escribimos el comando cd seguidamente de la ruta del proyecto
  • --> Tenemos que tener la ruta del Proyecto y pegarla en el Git Bash
  • --> Una vez dentro del Proyecto podremos hacer uso de Git

Paso 27) Subir el proyecto al repositorio de github desde la consola de git

27.1) Creamos un nuevo repositorio en GitHub.

27.2) Inicializamos nuestro repositorio local .git desde la terminal.

  • git init

27.3) Agregamos lo desarrollado a nuestro repo local desde la terminal.

  • git add *

27.4) Agregamos lo que tenemos en nuestro repo local al 谩rea de Trabajo desde la terminal.

  • git commit -m "agrega un comentario entre comillas"

27.5) Le indicamos a git donde se va a almacenar nuestro proyecto(fijate en tu repositorio de github cual es el enlace de tu proyecto(esta en code)).

27.6) Subimos nuestro proyecto.

  • git push -u origin master

Paso 28) Actualizaci贸n del repositorio del proyecto desde la consola de GIT

28.1) Visualizamos las modificaciones realizadas en local

  • git status

28.2) Agregamos lo modificado al 谩rea de trabajo

  • git add *

28.3) Confirmamos las modificaciones realizadas

  • git commit -m "tu commit entre comillas"

28.4) Sincronizamos y traemos todos los cambios del repositorio remoto a la rama en la que estemos trabajando actualmente.

(SOLO SI SE REALIZARON CAMBIOS DESDE OTRA LADO, ej: en github u/o/y un equipo de trabajo)

28.5) Enviamos todos los cambios locales al repo en github

28.6) En casos extremos pisamos todo el repositorio

  • git push -f --set-upstream origin master

microservicio_productossupermercado's People

Contributors

andresweitzel avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

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.