Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/denchenn/shorturl-maker
This is a demo project for Dcard, which is currently deployed on GKE.
https://github.com/denchenn/shorturl-maker
gcp-kubernetes gin-gonic github-actions golang kubernetes postgresql redis semantic-versioning unit-testing
Last synced: 4 months ago
JSON representation
This is a demo project for Dcard, which is currently deployed on GKE.
- Host: GitHub
- URL: https://github.com/denchenn/shorturl-maker
- Owner: DenChenn
- License: mit
- Created: 2022-03-17T16:28:31.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2023-08-08T05:15:08.000Z (over 1 year ago)
- Last Synced: 2024-10-15T17:23:16.406Z (4 months ago)
- Topics: gcp-kubernetes, gin-gonic, github-actions, golang, kubernetes, postgresql, redis, semantic-versioning, unit-testing
- Language: Go
- Homepage: https://dcard-api.yentingchen.me/v1/
- Size: 86.9 KB
- Stars: 27
- Watchers: 3
- Forks: 8
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Overview
![Build, Unit Testing, Versioning and Deploy ](https://github.com/SwarzChen/shorturl-maker/actions/workflows/build.yaml/badge.svg)
![GitHub](https://img.shields.io/github/license/SwarzChen/shorturl-maker)
![GitHub Repo stars](https://img.shields.io/github/stars/SwarzChen/shorturl-maker)
![GitHub release (latest by date)](https://img.shields.io/github/v/release/SwarzChen/shorturl-maker)This is a project for applying my first intern job at **Dcard Taiwan Ltd.** 😃 !!!
[🔗 Backend documentation link 🔗](https://documenter.getpostman.com/view/12176709/UVypycK7)### Company Requirements
- [x] One POST api for uploading url
- [x] One GET api for redirecting to original url
- [x] Use one of the relational databases: MySQL, PostgresSQL, SQLite
- [x] Use one of the cache database: Redis, Memcached
- [x] Reasonable error handling
- [x] No need to consider auth
- [x] Simultaneously user access handling
- [x] 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 ?](https://medium.com/@aaaa102234/crazy-go-day-k8s-system-design-for-go-gin-redis-postgresql-957c74b4b25)
[How do I handle simultaneously access and non-existed-url access with cache ?](https://medium.com/@aaaa102234/crazy-go-day-access-caching-go-gin-redis-58d0446e9a3a)
[Why do I choose Gin framework and how do I handle error in it?](https://medium.com/@aaaa102234/crazy-go-day-why-using-gin-for-golang-backend-9ca48ec5d855)
[How do I integrate both versioning process and unit tests into CI/CD process ?](https://medium.com/@aaaa102234/crazy-go-day-integrate-semantic-versioning-and-unit-tests-into-ci-cd-workflow-827d07495ca)
[How do I implement unit tests ?](https://medium.com/@aaaa102234/crazy-go-day-simple-golang-unit-test-implementation-73518086496e)### Future TODO list
- [ ] Build frontend UI with next.js and ts
- [ ] Feature: Upload video and image
- [ ] Feature: User can set password for uploaded resource