A fast and lightweight URL shortener. You can either deploy it as a standalone service or use as a library. Two ways to store data: either using a built-in synchronous SQLite3 (a good compromise) or an in-memory database (very fast but data is lost in case of restart).
server.port— a port to listen to for HTTP requestsserver.token— authorization token string, set tonullif not usedsalt— a random number from 0 to 10^9, must be constant for a given databaseinMemory— allows running with no file-based DB at allredirectOnError— a URL to redirect to when unpacking failscleanup.checkOnEvery— a number of HTTP requests after which to check for outdated URLscleanup.lifetime— a number in seconds for a minimal URL lifetime
npm i curtus --save- Test code
const curtus = require('curtus')
curtus.init({/* config object */})
const
quickCode = curtus.db.saveUrl('https://someurl.com/trololo'),
restoredUrl = curtus.db.getCodeUrl(quickCode)
console.log('Code is', quickCode)
console.log('Restored URL is', restoredUrl)
// run this when you need to wipe out old records
curtus.db.removeOldUrls()
// you may run this on your app shutdown to keep things clean
curtus.db.dbShutdown()- Create
config.jsonfile with the full or partial structure ofconfig.dist.jsonif you need to change the default configuration. At least we recommend changing the salt. npm ito install the packages.npm run serverto start a local server.
If necessary shortening can be protected when used via a built-in server. Configure server.token value (see above) and
pass the token in a HTTP request header: Authorization: Bearer YOUR_TOKEN_HERE.
If you want to install Curtus to a completely new server feel free to use the installation script provided. Simply run:
docs/linux-install.sh- cover with tests
- add performance tests
- type annotations and perfect code
- extend with optional statistics collection