This project contains a Fullstcak application built using Typescript - VueJs for the frontend, NodeJs for the backend and MongoDb database.
- NodeJs and Typescript for the server side language
- Loopback 4 for microservices REST framework.
- Repository Pattern
- Unit tests on the API controllers
- Open API documentation using Swagger UI
- MongoDB for the Database.
- Nanoid for generating unique strings
- Yup for request validation
- A single page application built with Typescript and VueJs Bootstrap Vue compnents
- Webpack: Webpack is a module bundler. Its main purpose is to bundle JavaScript files for usage in a browser, yet it is also capable of transforming, bundling, or packaging modules.
- Modularized project structure.
- Axios for http calls
- vue-clipboard2 for the clipboard feature
Likely improvements that can be done on the project include:
- Redis caching
- Custom short urls from users
- Dns look up for inputed urls
- Securing the endpoints using JWT/OAuth/Basic Auth
Clone the project
git clone https://github.com/paulonevrything/url-shortner
CD into project root
cd url-shortner
From the project root, run the following:
docker-compose build
docker-compose up
Launch the API documentation on swagger on http://localhost:3000/explorer/
Launch the Web Interface on http://localhost:8080/