Merge pull request #23 from scissorsneedfoodtoo/feat/cleanup-glitch-assets-and-add-files

feat: clean up glitch assets and add files
This commit is contained in:
Randell Dawson 2020-11-02 13:34:15 -08:00 committed by GitHub
commit f091da64e9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 1047 additions and 404 deletions

View File

@ -1,2 +0,0 @@
[core]
excludesfile = /etc/.gitignore-global

3
.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
.vscode/*
.env
node_modules/

View File

@ -1,58 +0,0 @@
{"name":"drag-in-files-copy.svg","date":"2016-03-16T18:27:31.021Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fdrag-in-files-copy.svg","type":"image/svg+xml","size":6229,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fdrag-in-files-copy.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(100,156,204)","uuid":"tkviVwlaQ2RryM4r"}
{"name":"drag-in-files.svg","date":"2016-03-16T18:21:25.984Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fdrag-in-files.svg","type":"image/svg+xml","size":7990,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fdrag-in-files.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(100,156,204)","uuid":"Pr0LH5dpGcRJ2QSU"}
{"name":"click-for-details.svg","date":"2016-03-16T18:21:23.511Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fclick-for-details.svg","type":"image/svg+xml","size":6408,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fclick-for-details.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(244,188,188)","uuid":"nuMndaSEzn2KoNFG"}
{"name":"use-url.svg","date":"2016-03-16T18:21:20.130Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fuse-url.svg","type":"image/svg+xml","size":6155,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fuse-url.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(44,180,188)","uuid":"LiyD5Lxg8FrmZlhz"}
{"name":"click-for-details.svg","date":"2016-03-16T18:20:57.943Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fclick-for-details.svg","type":"image/svg+xml","size":6408,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fclick-for-details.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(244,188,188)","uuid":"04MB8gA2GPoSJ7pp"}
{"name":"drag-in-files.svg","date":"2016-03-16T18:20:56.379Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fdrag-in-files.svg","type":"image/svg+xml","size":7990,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fdrag-in-files.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(100,156,204)","uuid":"q8Au1vYvVFpuGd5b"}
{"name":"use-url.svg","date":"2016-03-16T18:20:52.651Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fuse-url.svg","type":"image/svg+xml","size":6155,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fuse-url.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(44,180,188)","uuid":"9FiKvjvvr4C3oG0i"}
{"name":"1.svg","date":"2016-03-16T18:18:11.204Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2F1.svg","type":"image/svg+xml","size":20524,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2F1.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(100,156,204)","uuid":"MR02bReHwXODf2iH"}
{"name":"2.svg","date":"2016-03-16T18:18:09.776Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2F2.svg","type":"image/svg+xml","size":6597,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2F2.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(244,188,188)","uuid":"Q5gjW3biIe5ubDSw"}
{"name":"3.svg","date":"2016-03-16T18:18:08.145Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2F3.svg","type":"image/svg+xml","size":6856,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2F3.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(44,180,188)","uuid":"ZtH2QDmOOe11lCXh"}
{"name":"drag-in-files.svg","date":"2016-03-16T18:15:33.737Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fdrag-in-files.svg","type":"image/svg+xml","size":7990,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fdrag-in-files.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(100,156,204)","uuid":"5ZhCFJBZeljgrOsm"}
{"name":"click-for-details.svg","date":"2016-03-16T18:15:31.732Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fclick-for-details.svg","type":"image/svg+xml","size":6408,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fclick-for-details.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(244,188,188)","uuid":"j9DYGSrBdfoh5Qgf"}
{"name":"drag-in-files.svg","date":"2016-03-16T18:13:11.062Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fdrag-in-files.svg","type":"image/svg+xml","size":7990,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fdrag-in-files.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(100,156,204)","uuid":"xs11lHNV40rcZiOr"}
{"name":"click-for-details.svg","date":"2016-03-16T18:13:07.869Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fclick-for-details.svg","type":"image/svg+xml","size":6397,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fclick-for-details.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(244,188,188)","uuid":"oDrtrMLQDzHj3fCi"}
{"name":"drag-in-files.svg","date":"2016-03-16T18:12:09.577Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fdrag-in-files.svg","type":"image/svg+xml","size":7990,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fdrag-in-files.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(100,156,204)","uuid":"QZQEhdAJwQlN15xh"}
{"name":"click-for-details.svg","date":"2016-03-16T18:12:06.958Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fclick-for-details.svg","type":"image/svg+xml","size":6395,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fclick-for-details.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(244,188,188)","uuid":"4DsIsyOkpGM5vhnm"}
{"name":"use-url.svg","date":"2016-03-16T18:12:02.187Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fuse-url.svg","type":"image/svg+xml","size":6155,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fuse-url.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(44,180,188)","uuid":"2D0DVLCP7wUxzaXm"}
{"name":"click-for-details.svg","date":"2016-03-16T18:11:49.564Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fclick-for-details.svg","type":"image/svg+xml","size":6395,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fclick-for-details.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(244,188,188)","uuid":"ellCYXezSjscGSrr"}
{"name":"drag-in-files.svg","date":"2016-03-16T18:11:44.256Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fdrag-in-files.svg","type":"image/svg+xml","size":7990,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fdrag-in-files.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(100,156,204)","uuid":"96WPtGmfDbGjk1Cq"}
{"name":"drag-in-files.svg","date":"2016-03-16T18:11:25.392Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fdrag-in-files.svg","type":"image/svg+xml","size":7990,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fdrag-in-files.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(100,156,204)","uuid":"w2iCDrwXU3boaMb0"}
{"uuid":"w2iCDrwXU3boaMb0","deleted":true}
{"uuid":"ellCYXezSjscGSrr","deleted":true}
{"uuid":"96WPtGmfDbGjk1Cq","deleted":true}
{"uuid":"4DsIsyOkpGM5vhnm","deleted":true}
{"uuid":"QZQEhdAJwQlN15xh","deleted":true}
{"uuid":"oDrtrMLQDzHj3fCi","deleted":true}
{"uuid":"xs11lHNV40rcZiOr","deleted":true}
{"uuid":"5ZhCFJBZeljgrOsm","deleted":true}
{"uuid":"j9DYGSrBdfoh5Qgf","deleted":true}
{"uuid":"2D0DVLCP7wUxzaXm","deleted":true}
{"uuid":"04MB8gA2GPoSJ7pp","deleted":true}
{"uuid":"q8Au1vYvVFpuGd5b","deleted":true}
{"uuid":"MR02bReHwXODf2iH","deleted":true}
{"uuid":"9FiKvjvvr4C3oG0i","deleted":true}
{"uuid":"ZtH2QDmOOe11lCXh","deleted":true}
{"uuid":"Q5gjW3biIe5ubDSw","deleted":true}
{"uuid":"Pr0LH5dpGcRJ2QSU","deleted":true}
{"uuid":"tkviVwlaQ2RryM4r","deleted":true}
{"uuid":"LiyD5Lxg8FrmZlhz","deleted":true}
{"uuid":"nuMndaSEzn2KoNFG","deleted":true}
{"name":"use-url.svg","date":"2016-03-29T18:22:42.337Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fuse-url.svg","type":"image/svg+xml","size":12848,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fuse-url.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(44,180,188)","uuid":"BPzdWy4z8l1Yn4EQ"}
{"name":"drag-in-files.svg","date":"2016-03-29T18:22:44.084Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fdrag-in-files.svg","type":"image/svg+xml","size":14823,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fdrag-in-files.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(100,156,204)","uuid":"VQVhKMzbgQcBopQk"}
{"uuid":"BPzdWy4z8l1Yn4EQ","deleted":true}
{"uuid":"VQVhKMzbgQcBopQk","deleted":true}
{"name":"click-for-details.svg","date":"2016-03-29T18:22:55.141Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fclick-for-details.svg","type":"image/svg+xml","size":12623,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fclick-for-details.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(244,188,188)","uuid":"QTRGE6XDqUiSoYO9"}
{"name":"drag-in-files.svg","date":"2016-03-29T18:22:57.596Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fdrag-in-files.svg","type":"image/svg+xml","size":14823,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fdrag-in-files.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(100,156,204)","uuid":"RS7rnVaX9eGP4Lri"}
{"uuid":"RS7rnVaX9eGP4Lri","deleted":true}
{"uuid":"QTRGE6XDqUiSoYO9","deleted":true}
{"name":"drag-in-files.svg","date":"2016-03-29T18:23:08.746Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fdrag-in-files.svg","type":"image/svg+xml","size":14823,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fdrag-in-files.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(100,156,204)","uuid":"fxoJRXwNdZeThuNz"}
{"name":"click-for-details.svg","date":"2016-03-29T18:23:10.422Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fclick-for-details.svg","type":"image/svg+xml","size":12623,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fclick-for-details.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(244,188,188)","uuid":"Lp2si7Cpft2ktNM4"}
{"name":"use-url.svg","date":"2016-03-29T18:23:12.439Z","url":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fuse-url.svg","type":"image/svg+xml","size":12848,"imageWidth":276,"imageHeight":276,"thumbnail":"https://s3.amazonaws.com/hyperweb-editor-assets/us-east-1%3Ad0d03a8e-22bf-451d-ba15-f08d8f4e99ba%2Fuse-url.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(44,180,188)","uuid":"EjI8Y9wdZ9DEXI17"}
{"name":"ts.png","date":"2016-07-29T20:12:54.081Z","url":"https://cdn.hyperdev.com/us-east-1%3A52a203ff-088b-420f-81be-45bf559d01b1%2Fts.png","type":"image/png","size":51415,"imageWidth":300,"imageHeight":300,"thumbnail":"https://cdn.hyperdev.com/us-east-1%3A52a203ff-088b-420f-81be-45bf559d01b1%2Fts.png","thumbnailWidth":300,"thumbnailHeight":300,"dominantColor":null,"uuid":"KkT0yh4eO6qQ0IoB"}
{"name":"favicon.ico","date":"2016-07-29T20:16:10.860Z","url":"https://cdn.hyperdev.com/us-east-1%3A52a203ff-088b-420f-81be-45bf559d01b1%2Ffavicon.ico","type":"image/vnd.microsoft.icon","size":3262,"imageWidth":32,"imageHeight":32,"thumbnail":"https://cdn.hyperdev.com/us-east-1%3A52a203ff-088b-420f-81be-45bf559d01b1%2Ffavicon.ico","thumbnailWidth":32,"thumbnailHeight":32,"dominantColor":"rgb(202,221,202)","uuid":"D1EJusUtfCMrDlM2"}
{"uuid":"KkT0yh4eO6qQ0IoB","deleted":true}
{"name":"logo.png","date":"2016-07-29T20:36:52.799Z","url":"https://cdn.hyperdev.com/us-east-1%3A6a03d0e1-65b6-4b61-95cb-e479fe48c93b%2Flogo.png","type":"image/png","size":17058,"imageWidth":300,"imageHeight":300,"thumbnail":"https://cdn.hyperdev.com/us-east-1%3A6a03d0e1-65b6-4b61-95cb-e479fe48c93b%2Flogo.png","thumbnailWidth":300,"thumbnailHeight":300,"dominantColor":null,"uuid":"t52kqiom00fjF7RI"}
{"uuid":"t52kqiom00fjF7RI","deleted":true}
{"name":"logo.png","date":"2016-07-29T21:00:29.508Z","url":"https://cdn.hyperdev.com/us-east-1%3A29c0cbbb-c421-402b-86fb-7ac41eee893c%2Flogo.png","type":"image/png","size":28116,"imageWidth":300,"imageHeight":300,"thumbnail":"https://cdn.hyperdev.com/us-east-1%3A29c0cbbb-c421-402b-86fb-7ac41eee893c%2Flogo.png","thumbnailWidth":300,"thumbnailHeight":300,"dominantColor":null,"uuid":"rjG1lKrU35W953So"}
{"uuid":"rjG1lKrU35W953So","deleted":true}

View File

@ -1,2 +1,2 @@
language = "nodejs" language = "nodejs"
run = "npm start" run = "npm run dev"

View File

@ -1,22 +1 @@
# API Project: URL Shortener Microservice for freeCodeCamp # [URL Shortener Microservice](https://www.freecodecamp.org/learn/apis-and-microservices/apis-and-microservices-projects/url-shortener-microservice)
[![Run on Repl.it](https://repl.it/badge/github/freeCodeCamp/boilerplate-project-urlshortener)](https://repl.it/github/freeCodeCamp/boilerplate-project-urlshortener)
### User Stories
1. I can POST a URL to `[project_url]/api/shorturl/new` and I will receive a shortened URL in the JSON response. Example : `{"original_url":"www.google.com","short_url":1}`
2. If I pass an invalid URL that doesn't follow the valid `http(s)://www.example.com(/more/routes)` format, the JSON response will contain an error like `{"error":"invalid URL"}`. *HINT*: to be sure that the submitted url points to a valid site you can use the function `dns.lookup(host, cb)` from the `dns` core module.
3. When I visit the shortened URL, it will redirect me to my original link.
#### Creation Example:
POST [project_url]/api/shorturl/new - body (urlencoded) : url=https://www.freecodecamp.org/forum/
#### Usage:
[this_project_url]/api/shorturl/3
#### Will redirect to:
https://www.freecodecamp.org/forum/

13
nodemon.json Normal file
View File

@ -0,0 +1,13 @@
{
"restartable": "rs",
"ignore": [
".git",
"node_modules/**/node_modules"
],
"verbose": true,
"env": {
"NODE_ENV": "development"
},
"ext": "js,json,html,css",
"delay": "2500"
}

1146
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -4,26 +4,20 @@
"description": "API project for freeCodeCamp", "description": "API project for freeCodeCamp",
"main": "server.js", "main": "server.js",
"scripts": { "scripts": {
"start": "node server.js" "start": "node server.js",
"dev": "nodemon server.js"
}, },
"dependencies": { "dependencies": {
"express": "^4.17.1", "body-parser": "^1.19.0",
"mongodb": "^3.5.9",
"mongoose": "^5.9.27",
"cors": "^2.8.5", "cors": "^2.8.5",
"body-parser": "^1.19.0" "dotenv": "^8.2.0",
"express": "^4.17.1"
}, },
"engines": { "engines": {
"node": "12.18.3" "node": "12.18.3"
}, },
"repository": { "license": "MIT",
"type": "git", "devDependencies": {
"url": "https://hyperdev.com/#!/project/welcome-project" "nodemon": "^2.0.4"
}, }
"keywords": [
"node",
"hyperdev",
"express"
],
"license": "MIT"
} }

View File

@ -1,15 +1,13 @@
/****** Main Styling ******/
body { body {
font-family: 'Roboto', sans-serif; font-family: Arial, sans-serif;
font-size: 16px; font-size: 16px;
color: #222; color: #222;
background-color: #FaFaFa; background-color: #fff;
text-align: center; text-align: center;
line-height: 1.4em; line-height: 1.4em;
} }
.container { main {
padding: 0; padding: 0;
margin-top: 40px; margin-top: 40px;
} }
@ -18,43 +16,17 @@ h3 {
margin-top: 30px; margin-top: 30px;
} }
.footer {
margin-top: 40px;
}
.user-stories {
position: relative;
text-align: justify;
max-width: 700px;
margin: 15px auto;
}
code {
font-family: monospace;
padding: 2px;
color: black;
background-color: #fff;
}
ol {
list-style-position: inside;
}
ul {
list-style-type: none;
}
li {
margin-bottom: 0.5em;
}
.user-stories li { .user-stories li {
margin-bottom: 1em; margin-bottom: 1em;
} }
a { a {
color: #2574A9; color: #2574a9;
} }
form { form {
border: solid 1px black;
border-radius: 5px;
margin: 10px auto; margin: 10px auto;
padding: 20px; padding: 20px;
max-width: 600px; max-width: 600px;
@ -68,7 +40,7 @@ input {
padding: 5px; padding: 5px;
} }
input[type=text] { input[type='text'] {
width: 220px; width: 220px;
text-align: center; text-align: center;
} }

2
sample.env Normal file
View File

@ -0,0 +1,2 @@
PORT=
DB_URI=

View File

@ -1,36 +1,24 @@
'use strict'; require('dotenv').config();
const express = require('express');
const express = require('express'), const cors = require('cors');
mongo = require('mongodb'), const app = express();
mongoose = require('mongoose'),
cors = require('cors'),
app = express();
// Basic Configuration // Basic Configuration
const port = process.env.PORT || 3000; const port = process.env.PORT || 3000;
/** this project needs a db !! **/
mongoose.connect(process.env.MONGOLAB_URI, { useMongoClient: true });
app.use(cors()); app.use(cors());
/** this project needs to parse POST bodies **/
// you should mount the body-parser here
app.use('/public', express.static(`${process.cwd()}/public`)); app.use('/public', express.static(`${process.cwd()}/public`));
app.get('/', (req, res) => { app.get('/', function(req, res) {
res.sendFile(`${process.cwd()}/views/index.html`); res.sendFile(process.cwd() + '/views/index.html');
}); });
// Your first API endpoint
// your first API endpoint... app.get('/api/hello', function(req, res) {
app.get("/api/hello", (req, res) => { res.json({ greeting: 'hello API' });
res.json({greeting: 'hello API'});
}); });
app.listen(port, function() {
app.listen(port, () => { console.log(`Listening on port ${port}`);
console.log('Node.js listening ...');
}); });

View File

@ -1,48 +1,32 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
<title>URL Shortener</title> <title>URL Shortener Microservice | freeCodeCamp.org</title>
<link rel="shortcut icon" href="https://cdn.hyperdev.com/us-east-1%3A52a203ff-088b-420f-81be-45bf559d01b1%2Ffavicon.ico" type="image/x-icon"/> <link
<link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet" type="text/css"> rel="icon"
<link href="/public/style.css" rel="stylesheet" type="text/css"> type="image/png"
href="https://cdn.freecodecamp.org/universal/favicons/favicon-16x16.png"
/>
<link href="/public/style.css" rel="stylesheet" type="text/css" />
</head> </head>
<body> <body>
<div class="container"> <h1>URL Shortener Microservice</h1>
<h2>API Project: URL Shortener Microservice</h2> <main>
<h3>User Story: </h3> <section>
<ol>
<li>I can <b>POST</b> a <b>URL</b> to <code>[project_url]/api/shorturl/new</code> and I will receive a shortened <b>URL</b> in the JSON response.<br><br><i>Example</i> : <code>{"original_url":"www.google.com","short_url":1}</code></li><br><br>
<li>If I pass an <b>invalid URL</b> that doesn't follow the <code>http(s)://www.example.com(/more/routes)</code> format, the JSON response will contain an error like <code>{"error":"invalid URL"}</code><br><br>
<b><i>HINT</i></b>: To be sure that the submitted URL points to a valid site, you can use the function <code>dns.lookup(host, cb)</code> from the <code>dns</code> core module. Incase you are new to NodeJs, you can learn about this function from its documentation.(<a href="https://nodejs.org/api/dns.html">NodeJs Documentation</a>)</li><br><br>
<li>When I visit the shortened URL, it will redirect me to my original link.</li><br>
</ol>
<h3>Short URL Creation </h3>
<p>
example: <code>POST [project_url]/api/shorturl/new</code> - <code>https://www.google.com</code>
</p>
<form action="api/shorturl/new" method="POST"> <form action="api/shorturl/new" method="POST">
<label for="url_input">URL to be shortened</label> <fieldset>
<input id="url_input" type="text" name="url" value="https://www.freecodecamp.org"> <legend>URL Shortener</legend>
<input type="submit" value="POST URL"> <label for="url_input">URL:</label>
<input id="url_input" type="text" name="url" placeholder="https://www.freecodecamp.org/" />
<input type="submit" value="POST URL" />
</fieldset>
</form> </form>
<h3>Example Usage:</h3> </section>
<a href="https://url-shortener.freecodecamp.repl.co/api/shorturl/3"> </main>
[this_project_url]/api/shorturl/3 <footer>
</a> <p>By <a href="https://www.freecodecamp.org/">freeCodeCamp</a></p>
</footer>
<h3>Will Redirect to:</h3>
<p>https://forum.freecodecamp.org/</p>
</div>
<div class="footer">
<p>
by <a href="https://www.freecodecamp.org">freeCodeCamp</a>
</p>
</div>
</body> </body>
</html> </html>