Shrink long URLs – they exist only as long as you need and can be password protected.
- Shrink absurdly long URLs into small, sharable ones.
- Add a timed duration of when the URL can be accessed. Use cases:
- sharing a prototype with sponsor users
- showing website progress to a client
- Apply a passcode to protect access to the URL. Serves as an extra layer of privacy when sharing links.
- Redirect and frame links:
- Redirect link takes the user directly to the original link
- Frame link embeds the original link in an iframe to help hide the URL from the user
- Local history of created links with expiration status
Clone the repo and install dependencies.
git clone https://github.com/samrose3/shrink-link.git
cd shrink-link
npm install
You can run the app in development mode using the docker-compose.dev.yml
configuration. This will do the following in two docker containers:
- Run the Express server
- Spin up and link a MongoDB instance
docker-compose -f "docker-compose.dev.yml" up -d --build
The app should now be running on http://localhost:3000
.
You can stop the Docker containers with a Compose down
command.
docker-compose -f "docker-compose.dev.yml" down
You can also run the app without Docker, just make sure you provide a MongoDB URL as an environment variable. Copy the .env.sample
file, rename it to .env
, then replace the MONGO_URL
with your own URL.
Create a local or hosted MongoDB database before running the app. You can create a free sandbox database on mlab.com if you want an alternative to a local DB.
Create a .env
file in the root directory containing your MongoDB URL with credentials. Follow the .env.sample
file.
# .env
MONGO_URL=mongodb://<user>:<password>@<hostname>:<port>/shrink-link
Make sure your database is running, then start the app in development mode.
npm run dev
The app should now be running on http://localhost:3000
.
You can also use Docker Compose to run the app and the database. This uses the docker-compose.yml
configuration. Running the app production mode creates an optimized build and does not activate hot reloading.
Run a production build of the application locally.
docker-compose -f "docker-compose.yml" up -d --build