golang-react-app

Related tags

golang-react-app
Overview

- Estructura planteada:

  • api ( Aplicación backend desarrollada en GOLANG )
    • controllers
      • main.go
      • product.go
    • database
      • connection.go
    • models
      • price.go
      • product.go
    • routes
      • main.go
      • product.go
    • .env
    • data.json
    • docker-compose.yml
    • Dockerfile
    • go.mod
    • go.sum
    • main.go
  • client (Aplicaciión desarrollada en React JS + Typesrcript)
    • node_modules
    • public
    • src
      • api
        • ReqResapi.tsx
      • hooks
        • useProduct.tsx
      • interfaces
        • Response.tsx
      • screens
        • HomeScreen.tsx
    • App.css
    • App.test.tsx
    • etc...

- CLiente

  • Está desarrollado con React Js & typesript, tiene lo necesario para mostrar el historial de precios y su historial de cambios.
  • Para ejecutar de se debe ir a la carpera client y ejecutar yarn start

- API

  • Está desarrollada con golang bajo el framework fiber y cuenta con gorm como ORM para las consultas y las transacciones con la DB.
  • Para ejecutar el api se debe acceder a la carpeta api y ejecutar go run main.go.

- Conexión con la base de datos

  • La base de datos utilizada en la app desarrollada fué postgres esta se empleó bajo el manejador psql, asi que se debe descargar (en dado caso de no tener) y crear un usuario llamado Priceomatic con el comando CREATE ROLE priceomatic LOGIN PASSWORD 'priceomatic';
  • El segundo paso es crear una base de datos llamada priceomatic con el comando CREATE DATABASE priceomatic;
  • El ejecutar la app, la misma contará con dos tablas products y prices está se crearán automaticamente al migrar los modelos creados.
  • Adicionalmente se leerá el archivo data.json ubicado en la raiz del proyecto, este insertará contenido inicial en la tabla products y así asi como se da el proceso de seeds.

- Controladores

  • prices.go (Controlador de la relación precios): este posee los siguienes métodos.
    • GetProducts: Obtiene los productos insertados en la base de datos.
    • GetProduct: Obtiene un producto especifico, este recibe el id del producto.
    • NewProduct: Crea o inserta un nuevo producto en la base de datos.
    • DeleteProduct: Borra un producto, este recibe el id del producto a borrar
    • ModifyProduct: Modifica la data de un producto, si el precio enviado desde el cliente es dintinto al que posee la tupla.
    • GetPrices: Obtiene el historial de precios de un producto, recibe el id del producto.

- Rutas

Todas las rutas se complementan de la uri /api/v1, sin embargo hay dos grupos, uno que puede usarse para rutas de un landigPage, dado por el grupo api.Group("/") y otro especifico del grupo de precios, dado por api.Group("/product"), de estos se detallan los siguientes endpoitns

  • get -> /: Obtiene todos los produtos
  • get -> /:id Recibe un id de producto y lo retorna
  • put -> /:id Recibe un id de producto y modifica sus datos, de acuerdo a lo que se reciba del cliente
  • patch -> /:id Recibe un id de producto y modifica sus datos, de acuerdo a lo que se reciba del cliente siempre y cuando el precio sea distinto
  • delete -> /:id Recibe un id de producto y lo borra
  • get -> /:id/prices Recibe un id de producto y devuelve el historial de precios de este

- Mejoras futuras

  • Middlewares de seguridad.
  • Segmentación de configuración para variables o datos globales
  • Mejor manejo de las peticiones PATCH
  • Comprensión a profundidad del framework FIBER
  • Creación de helpers que puedan usarse en cualquier parte de la app (utils)

Algunas capturas de pantallas

  • Mostrando productos en cliente Mostrando productos en cliente

  • Mostrando historial de un producto en cliente Mostrando historial de un producto en cliente

  • Logger de peticiones en api Logger de peticiones en api

  • Data inicial insertada luego de leer el archivo data.json Data inicial insertada luego de leer el archivo data.json

  • Data inicial en un cliente grafico Data inicial en un cliente grafico

  • Consultando el historial de precios de un producto Consultando el historial de precios de un producto

  • Consultado el historial de productos Consultado el historial de productos

Issues
Owner
Victor S'mith
Califico mi experiencia como de nivel medio en el campo del desarrollo de software, sin embargo conozco las herramientas y tengo el potencial para mejorar.
Victor S'mith
OpenSCRM是一套基于Go和React的超高质量企业微信私域流量管理系统 。企业微信、私域流量、SCRM、CRM、Golang、React、企业微信SDK

安全,强大,易开发的企业微信SCRM 文档 | 截图 | 演示 | 安装 项目简介 OpenSCRM是一套基于Go和React的超高质量企业微信私域流量管理系统 在线演示 http://dashboard.demo.openscrm.cn:8000/ 项目特点 安全性高:企业微信控制了企业所有员工和

OpenSCRM 1.6k Oct 25, 2021
Plant environment data sensor aggregation / UI server.

What? A pet project to design a simple garden sensor and custom server for aggregating data and providing a simple user interface. Nginx gateway for s

Steven James Erdmanczyk Jr 39 Aug 6, 2020
Remark42 is a self-hosted, lightweight, and simple comment engine

Remark42 is a self-hosted, lightweight, and simple (yet functional) comment engine, which doesn't spy on users. It can be embedded into blogs, articles or any other place where readers add comments.

Umputun 3.1k Oct 18, 2021
Azanul Haque 7 Oct 1, 2021
Go Server/API boilerplate using best practices DDD CQRS ES gRPC

Go Server/API boilerplate using best practices DDD CQRS ES gRPC

Rafał Lorenz 481 Oct 15, 2021
Soong is the replacement for the old Android make-based build system

Soong Soong is the replacement for the old Android make-based build system. It replaces Android.mk files with Android.bp files, which are JSON-like si

null 0 Oct 10, 2021
Lazyload module with golang

Install & Use Other installation options Disable global-sidecar Use cluster unique global-sidecar Introduction of features Automatic ServiceFence gene

null 2 Oct 15, 2021
Simple web app using Go and Gin framework

go-gin-app Simple web app using Go and Gin framework Golang 과 Gin 프레임워크를 사용한 간단한 웹 앱 How to get Started Install Gin and have Go installed on your syst

Sean Hong(홍성민) 0 Oct 17, 2021
listmonk is a standalone high performance, self-hosted newsletter and mailing list manager with a modern dashboard. Single binary app.

listmonk is a standalone, self-hosted, newsletter and mailing list manager. It is fast, feature-rich, and packed into a single binary. It uses a PostgreSQL database as its data store.

Kailash Nadh 6.8k Oct 23, 2021
快速crud开发框架,甚至于一行代码不用敲;自动根据数据库表结构自动生成crud代码;低代码开发框架;至少减少百分90%工作量;可快速把现有系统转成GfEasy版本;后端使用GoFrame开发;后台前端使用 cool-admin-vue;后台使用自适应布局,手机、PC完美使用。

GoFrame: GfEasy GfEasy So Easy 快速crud开发框架,甚至于一行代码不用敲 自动根据数据库表结构自动生成crud代码 低代码开发框架 至少减少百分90%工作量 可快速把现有系统转成GfEasy版本 后端使用GoFrame开发;后台前端使用 cool-admin-vue

jasonLaw1015 103 Oct 16, 2021
A simple application lifecycle management tool with multiple servers.

A simple application lifecycle management tool with multiple servers.

Wimi Yuan 3 Oct 8, 2021
A fast clone of the Jekyll blogging engine, in Go

Gojekyll Gojekyll is a partially-compatible clone of the Jekyll static site generator, written in the Go programming language. It provides build and s

Oliver Steele 68 Oct 17, 2021
gin api blog

Gin项目 介绍 以下是基于gin开发的项目接口,将持续更新,有兴趣请star,本项目包含mysql,redis,elasticsearch,mongo,rabbitmq,kafka,jaeger,单机限流,分布式限流,sentry, jwt,请求参数验证,发送邮件,图片上传,httpclient用

Colin 13 Aug 20, 2021
Focalboard is an open source, self-hosted alternative to Trello, Notion, and Asana.

Focalboard Like what you see? ?? Give us a GitHub Star! ⭐ Focalboard is an open source, self-hosted alternative to Trello, Notion, and Asana. It helps

Mattermost 5.3k Oct 23, 2021
記帳-PWA-web-app (Bookkeeping-PWA-web-app)

GoKeep (bookkeeping web app) 記帳-PWA-web-app (Bookkeeping-PWA-web-app) demo link : https://bookkepping.herokuapp.com/ 測試用帳密 : tester002 , tester002 (亦可

Yu-Zhuang Lin 4 Jun 20, 2021
listmonk is a standalone, self-hosted, newsletter and mailing list manager

listmonk is a standalone, self-hosted, newsletter and mailing list manager. It is fast, feature-rich, and packed into a single binary. It uses a Postg

Super-Smile 1 Oct 19, 2021
v8cdn - 一个cloudflare partner面板

这是一款Cloudflare Partner面板程序,后端基于gin,前端使用vue.js。

AOAOSTAR 27 Oct 6, 2021
🍭 集合多家 API 的新一代图床

AUXPI 集合多家 API 的新一代图床 功能 特色 支持 web 上传图片 支持 API 上传图片 支持分发,控制反转 各种自由定制请看下面的截图 项目截图 支持拖拽对首页的菜单进行排序和开关控制 图片链接按照权重进行异步分发 首页有几个可视化的图表,方便分析 如果您感觉不错,请您点个 Star

null 2.6k Oct 10, 2021
Example patterns for distributed service

Cloud Native Tulisan ini akan mengulas hasil pembelajaran dari beberapa sumber #learn-from-books. Dan terinspirasi dari obrolan The Pursuit of Product

Zeihan Aulia 14 Sep 8, 2021