GO LANG & MongoDB Portfolio

Connection (Typescript client with Typescript server) via gRPC API and (Typescript client with Go Lang server)
GitHub repository: https://github.com/cholakovit/grpc-typescript-go

This application demonstrates the establishment of communication between different applications based on gRPC. We have communication between a TypeScript client and server and communication between a TypeScript client and a Go server. The communication is basic, showing only the connection between the applications, but anyone can use this foundation to build something more substantial. Since there are few examples on the internet, and most of them are terrible, I decided to create my own example and publish it to show how it works. I have tried to keep it as simple and basic as possible to make it as straightforward and understandable as possible. This type of data transmission is one of the fastest and most efficient and can even be used between React components to directly call a GoLang function.

You can download the code and explore it from the  GitHub repository.

Main Technologies:

  • Typescript
  • grpc/grpc-js
  • grpc/proto-loader
  • Protobuf
  • GoLang

Vending Machine,
GitHub repository: https://github.com/cholakovit/vm

At first glance, this application might seem simple, a vending machine, but I've integrated various types of tools within. For the frontend, I've used React with TypeScript. I've established a solid file architecture and organized the logic by moving it out of the components into а custom hooks (which, in my opinion, is a better approach for modular and reusable code). The code uses strong TypeScript. Following that, I've used unit testing as well as Integrational unit testing, which you can see in `src/App.test.tsx`. Additionally, I've used Cypress for e2e unit testing.

For global state management, I've utilized Redux Toolkit. I've developed two distinct approaches for data retrieval. Approach 1: Redux & Thunks — a classic approach that works well and is implemented in many projects.
Approach 2: Redux & RTK Query—this approach is significantly better for several reasons that I've detailed in an article I've written on the topic. One of the many advantages of RTK Query that I appreciate is optimistic updates, a unique feature.

For HTML and CSS, I'm used one of the best libraries, MUI, which allows me to structure and reuse my code intelligently and create HTML elements in a very efficient manner. Additionally, I've used Storybook, although I had almost no time to develop the components within a isolated environment (that`s the way to start developing the components, but...). I've also included a bundle analyzer to analyze bundles and point out any that are excessively heavy or large, among other things. I've also incorporated standard tools like ESLint, Prettier, and Husky.

For the server-side, I've employed the best language from my repertoire—GO LANG. In this case, I've opted for the Fiber Framework, renowned as the fastest HTTP framework for delivering raw data in GO. However, in many cases, I tend to prefer GIN. This section of the application isn't overly complex; I've established a connection to a MongoDB database. I've implemented a CRUD model and utilized goroutines for database queries. I used a playground for data validation and have created custom messages for feedback. In terms of middleware, I've created just a basic CORS function.

You can download the code and explore it from the  GitHub repository.

Main Technologies:

  • React
  • Typescript
  • Redux/Toolkit
  • MUI
  • Jest
  • Cypress
  • bundle analyzer
  • ESLint, Prettier, and Husky (airbnb)
  • Go Lang
  • Fiber Framework
  • Go playground
  • MongoDB

DEMO Project: Web3 Project - solidity-todolist-app
GitHub repository: https://github.com/cholakovit/Solidity-Todo-List-with-Nextjs-Tailwind-CSS-Template

This is a relatively straightforward web3-based application, considering that one of my most recent companies was focused on web2 & web3. The application is a to-do list where you can add tasks, but there's a twist, you'll be charged for it :) . You need to have MetaMask and Ethereum, although it's not real; it's just a demo. You pay using MetaMask and add your task. On the server side, there are Solidity smart contracts that serve the application, while the frontend is based on Next.js. It's an interesting demonstration of how processes work with web2 and web3.

You can download the code and explore it from the  GitHub repository.

Main Technologies:

  • Nextjs, TypeScript
  • Solidity
  • web3 & Metamask

DEMO Project: to-do app based on GO LANG
https://github.com/cholakovit/todo-application-2

This is a to-do app i recently developed based on GO LANG. I am always excited to learn new technologies and improve my work and technical skills. In this case I am combining top UI technologies with top backend technologies.

Main Technologies:

  • REACT - Vite, TypeScript
  • SWR Data Fetching and caching
  • Mantine UI
  • GO Lang
  • Github Actions - CI/CD