Urlsh Versions Save

Golang URL shortener and bookmarker service with UI, API, Cache, Hits Counter and forwarder using postgres and redis in backend, bulma in frontend. Think of it as self hosting ready url shortener.

v1.0.1

1 year ago

What's Changed

Full Changelog: https://github.com/adhocore/urlsh/compare/v1.0.0...v1.0.1

v1.0.0

1 year ago

Features

  • Add yahoo openid provider (@adhocore) 5549179
  • Add microsoft (Jitendra Adhikari) 6f30dd5
  • Register goic middleware (Jitendra Adhikari) 93150d9
  • Middleware: Add recover middleware (Jitendra Adhikari) 2b80bdc
  • Cmd.urlshc: Add urlshc command (Jitendra Adhikari) 0840fe3
  • Service.url: Check url reach (host) if configured (Jitendra Adhikari) 769303c
  • Request.url: Append host to input (Jitendra Adhikari) ea8d41d
  • Tmpl: Toggle check on copy from history row (Jitendra Adhikari) 93d47cd
  • Add /banner route and resource for og:image (Jitendra Adhikari) 9cea00f
  • Tmpl: Add og tags (Jitendra Adhikari) 24238cd
  • *****: Add favicon and robots router and template (Jitendra Adhikari) f24ea69
  • Tmpl: Add copy btn in history row, simplify dynamic row (Jitendra Adhikari) 272fe11
  • Tmpl: Add history table, rename copy button (Jitendra Adhikari) cffbc7a
  • Controller: Show UI in homepage (Jitendra Adhikari) 17596cc
  • Tmpl: Add home html template (Jitendra Adhikari) 6083ff0
  • Import.service: Make cache deactivation async, increment hits to compare threshold (Jitendra Adhikari) 5df0b30
  • Controller: Make hits increment async (Jitendra Adhikari) 6a42a0f
  • Service.url: Make cache deactivation async (Jitendra Adhikari) 485c6fa
  • Controller: Add x-cached header for cached data (Jitendra Adhikari) a7c85e5
  • Service.client: Lookup return flag to signify cached value (Jitendra Adhikari) eafedea
  • Cache: Add redis cache with lookup, persist and deactivate feature (Jitendra Adhikari) e85a297
  • Controller: Add endpoint to serve short url (Jitendra Adhikari) 2ffe1d6
  • Service.url: Add service to lookup origin & inc hits by shortcode (Jitendra Adhikari) c2807c2
  • Common: Add shortcode regex (Jitendra Adhikari) 1a0eed6
  • Router: Register short url delete endpoint (Jitendra Adhikari) c978a13
  • Controller: Add delete endpoint (Jitendra Adhikari) 9ab63ed
  • Common: Add no short code error (Jitendra Adhikari) 9e60505
  • Service.url: Add service to delete short url (Jitendra Adhikari) 2beece1
  • Common: Add auth token errors (Jitendra Adhikari) 1e388a2
  • Middleware: Add auth middleware to validate header token for admin (Jitendra Adhikari) fa7781c
  • Router: Register admin list/search controller (Jitendra Adhikari) a2eff44
  • Controller: Add admin list/search endpoint controller (Jitendra Adhikari) ff7987d
  • Common: Add data not found error (Jitendra Adhikari) 29e29d7
  • Service.url: Add service to list urls by filter for admin (Jitendra Adhikari) ad056f0
  • Request: Add UrlFilter definition with offset getter for search (Jitendra Adhikari) 8e2ced5
  • Response.body: Add Merge helper (Jitendra Adhikari) 5245e72
  • Controller: Add client api controller for short url (Jitendra Adhikari) ff2be5d
  • Common: Add short code length constant (Jitendra Adhikari) 07bb669
  • Service: Add short url creation service (Jitendra Adhikari) 1fd622e
  • Request: Add short url create request struct with validator (Jitendra Adhikari) 53e699c
  • Common: Add errors to be used in validation throughout (Jitendra Adhikari) 667dbca
  • Util: Add random length helper util (Jitendra Adhikari) 410ed52
  • Orm: Add postgres connection handler for gorm (Jitendra Adhikari) 0b8a769
  • Add DateLayout const, use time.UTC instead of common.UTC (Jitendra Adhikari) 8e014b5
  • Model: Add url model (Jitendra Adhikari) dda5a92
  • Model: Add keyword model (Jitendra Adhikari) 88b5ecd
  • Controller: Add not found handler (Jitendra Adhikari) 06c0041
  • Router: Add route registrar with multi endpoints handler (Jitendra Adhikari) 185a98e
  • Main: Listen and serve request, register default route (Jitendra Adhikari) 6ac7282
  • Controller: Add frontend controller (Jitendra Adhikari) 8d0ff88
  • Response: Add json response writer (Jitendra Adhikari) 265872f
  • Init module (Jitendra Adhikari) 796e171

Bug Fixes

  • Typo (Jitendra Adhikari) 691a3c7
  • Service.url: Use generic error (Jitendra Adhikari) a98fe7a
  • Cache: Redis uses different env (Jitendra Adhikari) 179c51f
  • Request: Validate url with regex (Jitendra Adhikari) 0ba06fc
  • Request: Exclude pattern (Jitendra Adhikari) 604c8cb
  • Tmpl: Use short href (Jitendra Adhikari) 167edf0
  • Request: Blacklist local urls (Jitendra Adhikari) fa7eb8b
  • Tmpl: Hide copy btn on error (Jitendra Adhikari) b83105a
  • Cache: User h is not usable (Jitendra Adhikari) 9a52035
  • Init-db: Make executable (Jitendra Adhikari) 4dccb36
  • Main: Use port dynamically (Jitendra Adhikari) 04e7272
  • Cache.redis: A;ways populate cached model (Jitendra Adhikari) 9c6a30e
  • Service.url: Ignore empty short code early (Jitendra Adhikari) 7168e83
  • Service.url: Select deleted field (Jitendra Adhikari) 84bdc5d
  • Service.url: When checking dupe, exclude deleted (Jitendra Adhikari) f4c3f59
  • Middleware: Use req.URL.Path for portability (Jitendra Adhikari) f05c70b

Internal Refactors

  • Middleware: Switch type usage (Jitendra Adhikari) 25d190a
  • Router: Wrap handler with recover (Jitendra Adhikari) 3b4aa88
  • Orm: Use panic (Jitendra Adhikari) 6a73c42
  • Cmd.urlshc: Precheck missing url opt (Jitendra Adhikari) e9e13f8
  • Move tmpl/ to assets/ (Jitendra Adhikari) 4cd4444
  • Service.url: Make validateURLInput public (Jitendra Adhikari) 281f830
  • Validate url len, keyword char, rephrase url filter error msg (Jitendra Adhikari) e08c0e7
  • *****: Use 2000 as default port (Jitendra Adhikari) 9703bd3
  • Tmpl: Add source code url, fix per w3c validator (Jitendra Adhikari) 1154b53
  • Use PORT instead of APP_PORT (Jitendra Adhikari) 9bc61b6
  • Orm,cache: Use DATABASE_URL and REDIS_URL env instead (Jitendra Adhikari) a855083
  • *****: Use 301 permanent redirect instead (Jitendra Adhikari) 80972d8
  • Postman: Move "/" to "/status" (Jitendra Adhikari) 1bc5865
  • Router: Move "/" to "/status" (Jitendra Adhikari) 425becc
  • Cache.redis: Use pool instead (Jitendra Adhikari) 7d6a96a
  • Cache: Support redis user/pass (Jitendra Adhikari) e19b3bc
  • Controller: Adapt to changed service layer (with cache) (Jitendra Adhikari) 7d2cd1c
  • Service.url: Integrate with cache layer for delete (Jitendra Adhikari) ede27c2
  • Service.url: Integrate with cache layer for lookup (Jitendra Adhikari) 511336c
  • Config.env: Add some hints (Jitendra Adhikari) bef7a66
  • Orm: Use test db for APP_ENV=test (Jitendra Adhikari) 1d38256
  • Router: Refactor to handle ServeShortUrl request (Jitendra Adhikari) 67c09eb
  • Main: Attach mux handler from router (Jitendra Adhikari) 2d889ce
  • Router: Use mux instead to make it middleware friendly (Jitendra Adhikari) 0e25641
  • Service.url: Add doc, always use offset (Jitendra Adhikari) 31b1a60
  • Controller.client: Simplify with body.Merge (Jitendra Adhikari) 4735648
  • Request.url: Cleanup and simplify GetExpiresOn (Jitendra Adhikari) b83110e
  • Main: Switch to router instead (Jitendra Adhikari) 13281b9

Miscellaneous

  • Deps: Bump deps, hopefully fix the yaml sec vuln (Jitendra Adhikari) 9c5b64d
  • Add dummy credentials (Jitendra) 3f5e92a
  • Fix editorconfig (Jitendra Adhikari) 627a79a
  • Bump adhocore/goic (Jitendra Adhikari) 9d41a8d
  • Bump adhocore/goic (Jitendra Adhikari) 1ecfdba
  • Bump adhocore/goic (Jitendra Adhikari) 6a1eff7
  • Add adhocore/goic (Jitendra Adhikari) d488da6
  • Init/setup github codeql (Jitendra Adhikari) 9b74a9b
  • Common: Add server error (Jitendra Adhikari) f59e0d7
  • Minor tweak homepage html (Jitendra Adhikari) 096d2af
  • Use short url to source code (Jitendra Adhikari) cfa183c
  • Timeout 1s (Jitendra Adhikari) 72fe0c5
  • Add check conf (Jitendra Adhikari) 28d5aff
  • No tag autocomplete (Jitendra Adhikari) 9e6eda4
  • Fix typo (Jitendra Adhikari) 9cc8775
  • Tmpl: Use nbsp (Jitendra Adhikari) a4ce4e3
  • Config: Fix db host (Jitendra Adhikari) 17481d4
  • Config: Add DATABASE_URL and REDIS_URL (Jitendra Adhikari) 1c94cfb
  • Common: Normalize error msg (Jitendra Adhikari) 7303f67
  • Cleanup (Jitendra Adhikari) d4bee1c
  • Docker cache (Jitendra Adhikari) ede9a0f
  • Flush redis before test (Jitendra Adhikari) db9163a
  • Add gha test (Jitendra Adhikari) baa12e0
  • Gh codeowner (Jitendra Adhikari) 727159e
  • Common: Popular website hits count (Jitendra Adhikari) fc8c61b
  • Config: Redis cache host:port (Jitendra Adhikari) 89e4c0d
  • Deps: Add redigo module (Jitendra Adhikari) ca3e959
  • Gha lint (Jitendra Adhikari) 26dab7f
  • Config: Document APP_PORT (Jitendra Adhikari) d2c3e7c
  • Postman: Add collection and environment (Jitendra Adhikari) 9e1dcf7
  • Config: Add env example config (Jitendra Adhikari) 6543454
  • Git: Add .env to ignore (Jitendra Adhikari) a5171a5
  • Deps: Add postgres driver and gorm (Jitendra Adhikari) be3d3b8
  • Cs: Add editorconfig config (Jitendra Adhikari) 2302817
  • Add gitignore (Jitendra Adhikari) 7319b5c

Documentations

  • Add urlshc terminal client (Jitendra Adhikari) 60e8be9
  • Add screenshot (Jitendra Adhikari) 8a3d83b
  • Update readme (Jitendra Adhikari) 249ba2f
  • Move "/" to "/status" (Jitendra Adhikari) 313ddda
  • About redis cache (Jitendra Adhikari) 195f010
  • Cache: Add method docs (Jitendra Adhikari) 8d77f86
  • About test env and cov (Jitendra Adhikari) aa5709a
  • Create url short code param and behavior (Jitendra Adhikari) 8566c94
  • Postman redirect (Jitendra Adhikari) 0123a51
  • Readme: Add installation/setup/testing steps, endpoint docs and postman (Jitendra Adhikari) 2cfafe0
  • *****: Add method docs for all source (Jitendra Adhikari) 336cd19
  • Init repo (Jitendra Adhikari) 5f7bdd1

Builds

  • Docker: No CGO in alpine container (Jitendra Adhikari) 7df35ec
  • Docker: Env map should be .env only (Jitendra Adhikari) 63a5d22
  • Docker: Use alpine images (Jitendra Adhikari) 7292580
  • Docker: APP_DB_DSN is no longer needed (Jitendra Adhikari) 5abe992
  • Docker: Add redis cache (Jitendra Adhikari) 70face3
  • Docker: Add docker-compose (Jitendra Adhikari) 3e8e036
  • Docker: Add init-test-db (Jitendra Adhikari) 68dd75a

v0.2.0

3 years ago

Bump of v0.1.2

v0.1.2

3 years ago

Features

  • Middleware: Add recover middleware (Jitendra Adhikari) 3bcbcce

Internal Refactors

  • Middleware: Switch type usage (Jitendra Adhikari) 624659e
  • Router: Wrap handler with recover (Jitendra Adhikari) 17cd64d
  • Orm: Use panic (Jitendra Adhikari) c16c881

Miscellaneous

  • Common: Add server error (Jitendra Adhikari) b3cadf9

Builds

  • Docker: No CGO in alpine container (Jitendra Adhikari) 1856cb5
  • Docker: Env map should be .env only (Jitendra Adhikari) 080e65c
  • Docker: Use alpine images (Jitendra Adhikari) 88bc5bf

v0.1.1

3 years ago

Internal Refactors

  • Cmd.urlshc: Precheck missing url opt (Jitendra Adhikari) 458d4cb

v0.1.0

3 years ago

v0.1.0 (2021-04-13)

Features

  • Cmd.urlshc: Add urlshc command (Jitendra Adhikari) 7f30ea5
  • Service.url: Check url reach (host) if configured (Jitendra Adhikari) ca97005
  • Request.url: Append host to input (Jitendra Adhikari) 79c845c
  • Tmpl: Toggle check on copy from history row (Jitendra Adhikari) 5833b70
  • Add /banner route and resource for og:image (Jitendra Adhikari) ec7ed9c
  • Tmpl: Add og tags (Jitendra Adhikari) f9f4a1d
  • *****: Add favicon and robots router and template (Jitendra Adhikari) 72a55fa
  • Tmpl: Add copy btn in history row, simplify dynamic row (Jitendra Adhikari) aa6bfdc
  • Tmpl: Add history table, rename copy button (Jitendra Adhikari) e7367cb
  • Controller: Show UI in homepage (Jitendra Adhikari) 3d1f396
  • Tmpl: Add home html template (Jitendra Adhikari) 0fc94ad
  • Import.service: Make cache deactivation async, increment hits to compare threshold (Jitendra Adhikari) 97fdfe3
  • Controller: Make hits increment async (Jitendra Adhikari) 193af34
  • Service.url: Make cache deactivation async (Jitendra Adhikari) bd6fb24
  • Controller: Add x-cached header for cached data (Jitendra Adhikari) eadf345
  • Service.client: Lookup return flag to signify cached value (Jitendra Adhikari) ce0ed85
  • Cache: Add redis cache with lookup, persist and deactivate feature (Jitendra Adhikari) e781d68
  • Controller: Add endpoint to serve short url (Jitendra Adhikari) df2d6a9
  • Service.url: Add service to lookup origin & inc hits by shortcode (Jitendra Adhikari) 79ac77a
  • Common: Add shortcode regex (Jitendra Adhikari) 040db1d
  • Router: Register short url delete endpoint (Jitendra Adhikari) c12f42a
  • Controller: Add delete endpoint (Jitendra Adhikari) 79455d4
  • Common: Add no short code error (Jitendra Adhikari) 31e2f43
  • Service.url: Add service to delete short url (Jitendra Adhikari) 24e8d7d
  • Common: Add auth token errors (Jitendra Adhikari) e7fa252
  • Middleware: Add auth middleware to validate header token for admin (Jitendra Adhikari) 11f06d9
  • Router: Register admin list/search controller (Jitendra Adhikari) 7ec1ac1
  • Controller: Add admin list/search endpoint controller (Jitendra Adhikari) 136666e
  • Common: Add data not found error (Jitendra Adhikari) 98c1160
  • Service.url: Add service to list urls by filter for admin (Jitendra Adhikari) be7bff1
  • Request: Add UrlFilter definition with offset getter for search (Jitendra Adhikari) 70dc8d4
  • Response.body: Add Merge helper (Jitendra Adhikari) e6f8e12
  • Controller: Add client api controller for short url (Jitendra Adhikari) b729830
  • Common: Add short code length constant (Jitendra Adhikari) 6c93eae
  • Service: Add short url creation service (Jitendra Adhikari) ba6e13b
  • Request: Add short url create request struct with validator (Jitendra Adhikari) d291da2
  • Common: Add errors to be used in validation throughout (Jitendra Adhikari) dbf74f6
  • Util: Add random length helper util (Jitendra Adhikari) dbbf1ad
  • Orm: Add postgres connection handler for gorm (Jitendra Adhikari) aca8fc1
  • Add DateLayout const, use time.UTC instead of common.UTC (Jitendra Adhikari) f8f53a8
  • Model: Add url model (Jitendra Adhikari) 8f0af8a
  • Model: Add keyword model (Jitendra Adhikari) 8462de3
  • Controller: Add not found handler (Jitendra Adhikari) e8437d5
  • Router: Add route registrar with multi endpoints handler (Jitendra Adhikari) 153a45a
  • Main: Listen and serve request, register default route (Jitendra Adhikari) 1020674
  • Controller: Add frontend controller (Jitendra Adhikari) 0955f36
  • Response: Add json response writer (Jitendra Adhikari) 5894f71
  • Init module (Jitendra Adhikari) 8e796d3

Bug Fixes

  • Typo (Jitendra Adhikari) 4c11604
  • Service.url: Use generic error (Jitendra Adhikari) 034ae99
  • Cache: Redis uses different env (Jitendra Adhikari) 6038ced
  • Request: Validate url with regex (Jitendra Adhikari) 3bc274c
  • Request: Exclude pattern (Jitendra Adhikari) e27a8b8
  • Tmpl: Use short href (Jitendra Adhikari) d1c067e
  • Request: Blacklist local urls (Jitendra Adhikari) d37cfc5
  • Tmpl: Hide copy btn on error (Jitendra Adhikari) 6e08e41
  • Cache: User h is not usable (Jitendra Adhikari) ef8e844
  • Init-db: Make executable (Jitendra Adhikari) 48ca0cf
  • Main: Use port dynamically (Jitendra Adhikari) 5233f98
  • Cache.redis: A;ways populate cached model (Jitendra Adhikari) e7f265d
  • Service.url: Ignore empty short code early (Jitendra Adhikari) d6439aa
  • Service.url: Select deleted field (Jitendra Adhikari) 998d8c3
  • Service.url: When checking dupe, exclude deleted (Jitendra Adhikari) dc99646
  • Middleware: Use req.URL.Path for portability (Jitendra Adhikari) 860b16d

Internal Refactors

  • Move tmpl/ to assets/ (Jitendra Adhikari) 65bc2a0
  • Service.url: Make validateURLInput public (Jitendra Adhikari) 85c9194
  • Validate url len, keyword char, rephrase url filter error msg (Jitendra Adhikari) 6bc3661
  • *****: Use 2000 as default port (Jitendra Adhikari) 01f58ab
  • Tmpl: Add source code url, fix per w3c validator (Jitendra Adhikari) 2c0a8c6
  • Use PORT instead of APP_PORT (Jitendra Adhikari) 5c014f9
  • Orm,cache: Use DATABASE_URL and REDIS_URL env instead (Jitendra Adhikari) 8910662
  • *****: Use 301 permanent redirect instead (Jitendra Adhikari) 2619adc
  • Postman: Move "/" to "/status" (Jitendra Adhikari) 42f5da3
  • Router: Move "/" to "/status" (Jitendra Adhikari) 9ee7a87
  • Cache.redis: Use pool instead (Jitendra Adhikari) cc24a94
  • Cache: Support redis user/pass (Jitendra Adhikari) 0ad1754
  • Controller: Adapt to changed service layer (with cache) (Jitendra Adhikari) c4edc2e
  • Service.url: Integrate with cache layer for delete (Jitendra Adhikari) df1ad3f
  • Service.url: Integrate with cache layer for lookup (Jitendra Adhikari) 9bdc002
  • Config.env: Add some hints (Jitendra Adhikari) bbe5596
  • Orm: Use test db for APP_ENV=test (Jitendra Adhikari) 6fefad1
  • Router: Refactor to handle ServeShortUrl request (Jitendra Adhikari) a6d8a1f
  • Main: Attach mux handler from router (Jitendra Adhikari) 8fa951b
  • Router: Use mux instead to make it middleware friendly (Jitendra Adhikari) 4f44825
  • Service.url: Add doc, always use offset (Jitendra Adhikari) 22f50e7
  • Controller.client: Simplify with body.Merge (Jitendra Adhikari) 8899f07
  • Request.url: Cleanup and simplify GetExpiresOn (Jitendra Adhikari) cc24550
  • Main: Switch to router instead (Jitendra Adhikari) e314a4a

Miscellaneous

  • Minor tweak homepage html (Jitendra Adhikari) f912681
  • Use short url to source code (Jitendra Adhikari) 79db201
  • Timeout 1s (Jitendra Adhikari) 41e9fbf
  • Add check conf (Jitendra Adhikari) 68bc576
  • No tag autocomplete (Jitendra Adhikari) d94c26c
  • Fix typo (Jitendra Adhikari) 78bf1ff
  • Tmpl: Use nbsp (Jitendra Adhikari) 4e7b2cb
  • Config: Fix db host (Jitendra Adhikari) bc4871b
  • Config: Add DATABASE_URL and REDIS_URL (Jitendra Adhikari) bf17b7a
  • Common: Normalize error msg (Jitendra Adhikari) b7f93e6
  • Cleanup (Jitendra Adhikari) c34d86a
  • Docker cache (Jitendra Adhikari) ec6d9a8
  • Flush redis before test (Jitendra Adhikari) b3a0610
  • Add gha test (Jitendra Adhikari) 75fca1a
  • Gh codeowner (Jitendra Adhikari) 6c23bac
  • Common: Popular website hits count (Jitendra Adhikari) 1804fe9
  • Config: Redis cache host:port (Jitendra Adhikari) 4cbb672
  • Deps: Add redigo module (Jitendra Adhikari) e37f192
  • Gha lint (Jitendra Adhikari) 36e8942
  • Config: Document APP_PORT (Jitendra Adhikari) 2916f87
  • Postman: Add collection and environment (Jitendra Adhikari) f630b8b
  • Config: Add env example config (Jitendra Adhikari) 83a3dd6
  • Git: Add .env to ignore (Jitendra Adhikari) ceab82c
  • Deps: Add postgres driver and gorm (Jitendra Adhikari) 544705a
  • Cs: Add editorconfig config (Jitendra Adhikari) 97b5312
  • Add gitignore (Jitendra Adhikari) cc2d8f1

Documentations

  • Add urlshc terminal client (Jitendra Adhikari) 25c8a31
  • Add screenshot (Jitendra Adhikari) d682cb4
  • Update readme (Jitendra Adhikari) b7100c3
  • Move "/" to "/status" (Jitendra Adhikari) 86d1933
  • About redis cache (Jitendra Adhikari) bb8ead9
  • Cache: Add method docs (Jitendra Adhikari) 925bab0
  • About test env and cov (Jitendra Adhikari) 696ca9b
  • Create url short code param and behavior (Jitendra Adhikari) 0379809
  • Postman redirect (Jitendra Adhikari) 26c8efc
  • Readme: Add installation/setup/testing steps, endpoint docs and postman (Jitendra Adhikari) e7fe6c6
  • *****: Add method docs for all source (Jitendra Adhikari) ed3277f
  • Init repo (Jitendra Adhikari) 9c9ad4a

Builds

  • Docker: APP_DB_DSN is no longer needed (Jitendra Adhikari) 249e4f6
  • Docker: Add redis cache (Jitendra Adhikari) 744d5eb
  • Docker: Add docker-compose (Jitendra Adhikari) d2b182f
  • Docker: Add init-test-db (Jitendra Adhikari) 5832a09