Git Product home page Git Product logo

zephyr-one's Introduction

Hey, There πŸ‘‹

My name's Rasio Ganang Atmaja, I'm a Software Engineer with focus on backend development such as REST-API and gRPC.

πŸ“« If you would like to discuss about your ideas πŸ’‘, programming πŸ€–, space πŸš€ or whatever pops into your mind, you can reach me on LinkedIn, Instagram or shoot me a message at [email protected]

zephyr-one's People

Contributors

dependabot[bot] avatar rasatmaja avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

zephyr-one's Issues

Registrations

User story

As a developer who use AAA service to authenticate user, i want to send user data to server, so that those data can be save into server database

Acceptance Criteria

  • Should be able to send user data like name, email, and password
  • Should return a JSON object with field code, message and status
  • Should return a JSON that contain field validation error when data email invalid

Non-Functional Requirements

  • The API should recover that return error JSON when program experiencing a panic
  • API should process the request and respond within maximum 10 seconds in a end-to-end setup.

Issue type : 🦌 New Feature

Descriptions :
no description present

Task :

Golang Project Setup

Technical Description
Initialize GO modules to defines the module’s module path, which is also the import path used for the root directory, and its dependency requirements, which are the other modules needed for a successful build. Each dependency requirement is written as a module path and a specific semantic version.

Acceptance Criteria

  • go.mod and go.sum files should present on root directory
  • env example should present on root directory and contain prefix ZO on every variable

Technical type : 🦌 New Feature

Task :

  • Init GO Modules
  • Set main function
  • Init Go server
  • Create folder structure
  • Init ENV

Add Silent type for logger

Technical Description
Create silent type for logger to disable logger. This type is very useful when we want to disable when run unit testing

Acceptance Criteria

  • Logger shouldn't appear on unit test result

Technical type : 🦌 New Feature

Task :

  • Add silent type on logger
  • Implement silent type on uni testing

Research Docker

Research Docker

Issue type : 🦧 Documentation content changes

Authenticates user credential

User story

As a developer who use AAA service to authenticate user, i want to receive a JWT Token from server when i send user username and his password, so that i can use those JWT token to navigate user into secure resources

Acceptance Criteria

  • Should be able receive a POST request from URL /login
  • Should be able to send user username and his password in the API request. These fields are mandatory
  • Should return a JSON object with field access_token and refresh_token

Non-Functional Requirements

  • The API should support a load of 50 API requests per second without failing.
  • API should process the request and respond within maximum 500 milliseconds in a cloud-to-cloud setup.

Issue type : 🦌 New Feature

Descriptions :

  • For debugging purpose the API should return user data alongside with JWT

Task :

Construct JSON Response

Technical Description
Research how to construct JSON Response, include success response and error response

Acceptance Criteria

  • Section JSON Response should present on README file

Technical type : 🦧 Documentation content changes

Task :

  • How to construct base response on go
  • Best way to build success response
  • Best way to build error response include message, error code, HTTP code, etc

Refactor how to initialize log for every package

Technical Description
Refactor how to initialize log for every package. The purpose of this refactoring is to reduce setter function for logger for every package that need logger.

// setup handler
handler := handler.New()
handler.SetLogger(log)

Acceptance Criteria

  • logger setter function on package server and handler should be gone

Technical type : πŸ‡πŸΌ Refactoring (no functional changes, no api changes)

Task :

  • Remove logger setter function in handler
  • Init logger when package initialize (on New function)
  • Remove app field logger
  • Remove Sync function
  • Create function log fLog
  • Implement singleton patter when init logger

Research ExpressJS

  • Research implement ExpressJS using Typescript
  • Research project structures

Implement Config

Technical Description
Implement config to all across package in the project.

Acceptance Criteria

  • config package should be present on destination package

Technical type : 🦌 New Feature

Task :

  • implement config on server
  • implement config on logger

GitHub Action

Technical Description
Initialize GitHub action that perform go test, code coverage and go build with multiple operating system (windows, linux, and mac os) matrix.

Acceptance Criteria

  • GitHub action should use at lease 1.16 go version
  • GitHub action should use ubuntu-latest as container operating system
  • GitHub action should run when pull request open
  • GitHub action should run when there is changes on branch
  • GitHub action should produce test report and code coverage in text base file
  • GitHub action should display those test report and code coverage in pull request comment
  • GitHub action should fail when code coverage bellow 50%

Technical type :

  • 🦌 New Feature
  • πŸ… Build related changes

Task :

  • Init workflow yaml
  • Setup Go
  • Setup unit testing job
  • Setup code coverage job
  • Display test report and code coverage in pull request comment
  • #322
  • #323

Setup Middleware

Technical Description
Initialize middle-ware server such as 404 Page, Compression, Transaction ID, Request ID, and swagger UI

Acceptance Criteria

  • middleware.go should present on internal directory
  • middleware package should present on middleware.go files

Technical type : 🐞 Possible Bug

Task :

  • 404 Page Not found
  • RequestID middle-ware
  • Swagger UI as a middle-ware
  • TransactionID middle-ware
  • Recover middleware
  • Response Time middleware
  • Implement Logger
  • Implement config ENV

Research PosgresSQL

Research PosgresSQL

Issue type : 🦧 Documentation content changes

Descriptions :
Research how to setup PosgresSQL and implemented in typescript

Migrate Zap Logger to Zerolog

Technical Description
Remove current logger system which is zap logger and replace it with zerolog. I conside zerolog because it have a better performance than zap logger based on this benchmark:
image

and also zero logger have better prettier print on console and easy to structure logging with custom field
image

Acceptance Criteria

  • Zerolog dependency present on go.mod and go.sum files
  • Zerolog should be create structured logging
  • Zerolog should be provide pretty log

Technical type :

  • 🦌 New Feature
  • πŸ‡πŸΌ Refactoring (no functional changes, no api changes)
  • 🦧 Documentation content changes

Task :

  • Install Zerolog
  • Implement Zerolog and remove Zap Logger
  • Update README

Setup SSL on development server

Technical Description
Initialize SSL on server so that https can be run

Acceptance Criteria

  • server can be access with https schema

Technical type : 🦌 New Feature

Task :

  • Research how to implement SSL
  • Implement SSL on fiber server

Research Promise (async)

Research Promise (async)

Issue type : 🦧 Documentation content changes

Descriptions :
Research Promise (async),how it works, and how i implemented on typescript

PProf

Technical Description
Initialize Pprof on Fiber server.

Acceptance Criteria

  • There are endpoint to navigate user into pprof web based

Technical type : 🦌 New Feature

Task :

  • Init pprof
  • Create endpoint to navigate into pprof

Password Hasing

Technical Description
Spike password hashing like argon2ID, bcrypt, etc, how they work, how to implement it, how it benchmark and how to save those hashing format into database

Acceptance Criteria

  • No acceptance criteria required

Technical type : 🦧 Documentation content changes

Task :

  • How they work
  • How to implement it
  • Hows their benchmark
  • How to save thier hashing format into database

Server timeout

Technical Description
Define server time out on fiber config. There are three timeout, write, read and idle that should be define on config.

Acceptance Criteria

  • Read, write, and idle timeout should be present on fiber config on server.go
  • env example should contain timeout config

Technical type :

  • 🦌 New Feature

Task :

  • Init timeout config
  • implement timeout on server.go

Avoid panic when parse logger level

Technical Description
Avoid panic when error parse logger level occurs, replace panic with generic prinln and set level into zerolog trace

Acceptance Criteria
Program didn't panic when config LOG_LEVEL set to "UNKNOWN" and logger level set to trace

Technical type : 🐞 Possible Bug

Task :
Refactor logger to meet acceptance criteria

Default error handler

Technical Description
Define default error handler on fiber server. For default the app should give error status code 500 with message "Internal server error". If the error type is *reponse{}, the app should sent a response with the provided status code, message and data.

Acceptance Criteria

  • Error method should present on handler package
  • Error handler should be implement when server initializing

Technical type : 🦌 New Feature

Task :

Initialize GO env variable config

Technical Description
Initialize GO env variable config with viper.

Acceptance Criteria

  • Package viper present on go.mod and go.sum files.
  • Config file and package present on internal directory

Technical type : 🦌 New Feature

Task :

  • Install package viper
  • Create config package and init struct
  • Implement viper
  • Update README

Update README

  • Remove unnecessary tech
  • Update tech stack
  • Update .gitignore

SQL Database Setup

Technical Description
Initialize SQL database, and init package with Postgress SQL

Acceptance Criteria

  • SQL Postgress should present on go.mod and go.sum files
  • Package database should present on the project

Technical type : 🐞 Possible Bug

Task :

  • install pstgress SQL
  • init package database
  • init sql transaction interface
  • implement sql transaction
  • implement ENV
  • Implement Timeout

Swagger UI

Technical Description
Initialize Swagger UI with path /docs

Acceptance Criteria

  • Program should server Swagger UI when program receive request into URL /docs

Technical type : 🦌 New Feature

Task :

  • Install Swagger UI
  • Implement Swagger as handler
  • Construct OpenAPI Swagger

Setup VSCode Config

Technical Description
Initialize Visual Studio Code config for debugging an enable certain plugin.

Acceptance Criteria

  • Directory .vscode should present on root directory

Technical type : 🦌 New Feature

Task :

  • Init debugging config
  • init workspace setting

Makefile

Technical Description
Initialize Makefile to write script to automate a golang run or golang build

Acceptance Criteria

  • Makefile files should present on root directory

Technical type : 🦌 New Feature

Task :

  • Init Makefile
  • export env
  • script go run
  • script go build

404 Default Response

Technical Description
Initialize 404 response if URL doesn't match with any routing.

Acceptance Criteria

Technical type : 🦌 New Feature

Task :

  • Init 404 middle ware

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.