Previous
Previous Product Image

E-learning Platform

Next

snake game (web code)

Next Product Image

URL Shortener (JavaScript code)

[Download not found]

The project features a clean user interface, quick link generation, and responsive design for smooth performance across devices.

Add to Wishlist
Add to Wishlist
Category:

Description

A simple and fast URL Shortener built with JavaScript that converts long links into short, easy-to-share URLs 🔗. The project features a clean user interface, quick link generation, and responsive design for smooth performance across devices.

Key features

 

  • Created with self-host in mind:
    • Zero configuration needed
    • Easy setup with no build step
    • Supporting various databases (SQLite, Postgres, MySQL)
    • Ability to disable registration and anonymous links
    • OpenID Connect (OIDC) login
  • Custom domain support
  • Set custom URLs, password, description, and expiration time for links
  • View, edit, delete and manage your links
  • Private statistics for shortened URLs
  • Admin page to manage users and links
  • Customizability and themes
  • RESTful API

Configuration

 

The app is configured via environment variables. You can pass environment variables directly or create a .env file. View .example.env file for the list of configurations.

All variables are optional except JWT_SECRET which is required on production.

You can use files for each of the variables by appending _FILE to the name of the variable. Example: JWT_SECRET_FILE=/path/to/secret_file.

Variable Description Default Example
JWT_SECRET This is used to sign authentication tokens. Use a long random string.
PORT The port to start the app on 3000 8888
SITE_NAME Name of the website Kutt Your Site
DEFAULT_DOMAIN The domain address that this app runs on localhost:3000 yoursite.com
LINK_LENGTH The length of of shortened address 6 5
LINK_CUSTOM_ALPHABET Alphabet used to generate custom addresses. Default value omits o, O, 0, i, I, l, 1, and j to avoid confusion when reading the URL. (abcd..789) abcABC^&*()@
DISALLOW_REGISTRATION Disable registration. Note that if MAIL_ENABLED is set to false, then the registration would still be disabled since it relies on emails to sign up users. true false
DISALLOW_LOGIN_FORM Disable login with email and password. Only makes sense if OIDC is enabled. false true
DISALLOW_ANONYMOUS_LINKS Disable anonymous link creation true false
TRUST_PROXY If the app is running behind a proxy server like NGINX or Cloudflare and that it should get the IP address from that proxy server. If you’re not using a proxy server then set this to false, otherwise users can override their IP address. true false
DB_CLIENT Which database client to use. Supported clients: pg or pg-native for Postgres, mysql2 for MySQL or MariaDB, sqlite3 and better-sqlite3 for SQLite. NOTE: pg-native and sqlite3 are not installed by default, use npm to install them before use. better-sqlite3 pg
DB_FILENAME File path for the SQLite database. Only if you use SQLite. db/data /var/lib/data
DB_HOST Database connection host. Only if you use Postgres or MySQL. localhost your-db-host.com
DB_PORT Database port. Only if you use Postgres or MySQL. 5432 (Postgres) 3306 (MySQL)
DB_NAME Database name. Only if you use Postgres or MySQL. kutt mydb
DB_USER Database user. Only if you use Postgres or MySQL. postgres myuser
DB_PASSWORD Database password. Only if you use Postgres or MySQL. mypassword
DB_SSL Whether use SSL for the database connection. Only if you use Postgres or MySQL. false true
DB_POOL_MIN Minimum number of database connection pools. Only if you use Postgres or MySQL. 0 2
DB_POOL_MAX Maximum number of database connection pools. Only if you use Postgres or MySQL. 10 5
REDIS_ENABLED Whether to use Redis for cache false true
REDIS_HOST Redis connection host 127.0.0.1 your-redis-host.com
REDIS_PORT Redis port 6379 6379
REDIS_PASSWORD Redis password mypassword
REDIS_DB Redis database number, between 0 and 15. 0 1
SERVER_IP_ADDRESS The IP address shown to the user on the setting’s page. It’s only for display purposes and has no other use. 1.2.3.4
SERVER_CNAME_ADDRESS The subdomain shown to the user on the setting’s page. It’s only for display purposes and has no other use. custom.yoursite.com
CUSTOM_DOMAIN_USE_HTTPS Use https for links with custom domain. It’s on you to generate SSL certificates for those domains manually—at least on this version for now. false true
ENABLE_RATE_LIMIT Enable rate limiting for some API routes. If Redis is enabled uses Redis, otherwise, uses memory. false true
MAIL_ENABLED Enable emails, which are used for signup, verifying or changing email address, resetting password, and sending reports. If is disabled, all these functionalities will be disabled too. false true
MAIL_HOST Email server host your-mail-server.com
MAIL_PORT Email server port 587 465 (SSL)
MAIL_USER Email server user myuser
MAIL_PASSWORD Email server password for the user mypassword
MAIL_FROM Email address to send the user from example@yoursite.com
MAIL_SECURE Whether use SSL for the email server connection false true
OIDC_ENABLED Enable OpenID Connect false true
OIDC_ISSUER OIDC issuer URL https://example.com/some/path
OIDC_CLIENT_ID OIDC client id example-app
OIDC_CLIENT_SECRET OIDC client secret some-secret
OIDC_SCOPE OIDC Scope openid profile email openid email
OIDC_EMAIL_CLAIM Name of the field to get user’s email from email userEmail
REPORT_EMAIL The email address that will receive submitted reports example@yoursite.com
CONTACT_EMAIL The support email address to show on the app example@yoursite.com

Reviews

There are no reviews yet.

Be the first to review “URL Shortener (JavaScript code)”

Your email address will not be published. Required fields are marked *

Shopping cart

0
image/svg+xml

No products in the cart.

Continue Shopping