Giter Site home page Giter Site logo

denchenn / shorturl-maker Goto Github PK

View Code? Open in Web Editor NEW
27.0 3.0 8.0 89 KB

This is a demo project for Dcard, which is currently deployed on GKE.

Home Page: https://dcard-api.yentingchen.me/v1/

License: MIT License

Go 99.21% Dockerfile 0.79%
golang gin-gonic kubernetes github-actions redis postgresql semantic-versioning gcp-kubernetes unit-testing

shorturl-maker's Introduction

Overview

Build, Unit Testing, Versioning and Deploy GitHub GitHub Repo stars GitHub release (latest by date)

This is a project for applying my first intern job at Dcard Taiwan Ltd. ๐Ÿ˜ƒ !!!
๐Ÿ”— Backend documentation link ๐Ÿ”—

Company Requirements

  • One POST api for uploading url
  • One GET api for redirecting to original url
  • Use one of the relational databases: MySQL, PostgresSQL, SQLite
  • Use one of the cache database: Redis, Memcached
  • Reasonable error handling
  • No need to consider auth
  • Simultaneously user access handling
  • Non-existent shorten URL access handling

Tech Stack

  • Using Golang Gin framework to build api
  • Using postgresSQL for relational database
  • Using redis for caching database
  • Deploy database and backend server on Google Kubernetes Engine
  • Github Actions for CI / CD
  • Implement semantic versioning with git

Features

  • Deploy backend service on GKE 3-Nodes distributed systems
  • Deploy databases on GKE 3-Nodes distributed systems
  • Handling invalid access and simultaneously access by caching
  • Automatically unit testing in CI/CD workflow using github action
  • Improve CI/CD efficiency with pipeline workflow
  • Automatically semantic versioning in CI/CD workflow base on git label
  • DNS and proxy server configuration using cloudflare

Detail explanation

How do I design my backend system architecture ?
How do I handle simultaneously access and non-existed-url access with cache ?
Why do I choose Gin framework and how do I handle error in it?
How do I integrate both versioning process and unit tests into CI/CD process ?
How do I implement unit tests ?

Future TODO list

  • Build frontend UI with next.js and ts
  • Feature: Upload video and image
  • Feature: User can set password for uploaded resource

shorturl-maker's People

Contributors

denchenn avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

shorturl-maker's Issues

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.