Giter VIP home page Giter VIP logo

slash's Introduction

Slash

Slash is an open source, self-hosted links shortener and sharing platform. It allows you to organize your links with tags, and share them with custom shortened URLs. Slash also supports team sharing of link libraries for easy collaboration.

🧩 Browser extension(v1.0.0) now available! - Chrome Web Store, Firefox Add-on

Getting started with Slash's Shortcuts and Collections.

👉 Join our Discord 💬

Docker pull Discord

demo

Background

In today's workplace, essential information is often scattered across the cloud in the form of links. We understand the frustration of endlessly searching through emails, messages, and websites just to find the right link. Links are notorious for being unwieldy, complex, and easily lost in the shuffle. Remembering and sharing them can be a challenge.

That's why we developed Slash, a solution that transforms these links into easily accessible, discoverable, and shareable shortcuts(e.g., s/shortcut). Say goodbye to link chaos and welcome the organizational ease of Slash into your daily online workflow.

Features

  • Create customizable s/ short links for any URL.
  • Share short links public or only with your teammates.
  • View analytics on link traffic and sources.
  • Easy access to your shortcuts with browser extension.
  • Share your shortcuts with Collection to anyone, on any browser.
  • Open source self-hosted solution.

Deploy with Docker in seconds

docker run -d --name slash -p 5231:5231 -v ~/.slash/:/var/opt/slash yourselfhosted/slash:latest

Learn more in Self-hosting Slash with Docker.

Browser Extension

Slash provides a browser extension to help you use your shortcuts in the search bar to go to the corresponding URL.

browser-extension-example

Learn more in The Browser Extension of Slash.

Chromium based browsers

For Chromium based browsers(Chrome, Edge, Arc, ...), you can install the extension from the Chrome Web Store.

Firefox

For Firefox, you can install the extension from the Firefox Add-ons.

slash's People

Contributors

boojack avatar dependabot[bot] avatar gitoffthelawn avatar monlor avatar realfascinated avatar xwjdsh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

slash's Issues

support uppercase letters in the name

Is your feature request related to a problem?

for some special case, I need a case-sensitive name for my shortcut.

Describe the solution you'd like

support uppercase letters in the name

Additional context

No response

disable the registration of new users

Describe the bug

It is not possible to disable the registration of new users.

Performed git:
git clone https://github.com/boojack/slash.git

Created local docker image:
docker build -t yourselfhosted/slash:local_v0.4.3 .

After installing version v0.4.3 in docker (local image), it is not possible to view the option in settings to disable new user registration.

Any variable (Docker ENV) or database modification (Sqlite) to disable new users?

Steps to reproduce

settings

Expected behavior

Any variable (Docker ENV) or database modification (Sqlite) to disable new users?

Screenshots or additional context

image

Favicon provider/upload

Is your feature request related to a problem?

No

Describe the solution you'd like

  • Support for favicon provider to download self-hosted icon from private hosts, or;
  • Upload custom icon in (ico/png)

Additional context

Allow better use in dashboards or another places that use favicon.ico provided by the link:

image

Default to Public

Is your feature request related to a problem?

We won't have private URLs by default (people may use it, but not by default). Would be great if we could specify a flag saying what the default behavior should be.

Describe the solution you'd like

Add an env var DEFAULT_URL_VISIBILITY with private, workspace or public as allowed values. Use that as default in the UI.

Additional context

No response

Option to not have the /s/ in the url

Is your feature request related to a problem?

This is a great idea, thank you for creating this.

If I am dedicating a domain/subdomain to this service, ideally I'd want the url to be as short as functionally possible. The /s/ seems like 2 potentially unnecessary characters.

Describe the solution you'd like

If technically feasible an option to not have the /s/ in the url.

Additional context

I do independent technical support, and this could help me when directing someone to a url over the phone, in a situation where a url is being communicated verbally, the fewer characters, the better

Create shortcuts with browser extension

Is your feature request related to a problem?

Public links can be aggregated without logging in at the front end.
And it's great to add browser plug-ins.
I hope I can add the above related functions.

Describe the solution you'd like

If you can achieve the above functions, I will be happy to use, and can reward you!

Additional context

20230723162634

Mobile mode

Is your feature request related to a problem?

no, not a real problem, but a useful convenience

Describe the solution you'd like

automatically apply a graphical style that allows Slash to be used via a smartphone browser without messing up the interface

Additional context

No response

I'm using Slash right now on my home server and it's great.

Browser extension for Safari

Is your feature request related to a problem?

can you develop extension for safari? very need for it.

Describe the solution you'd like

collect web in Safari

Additional context

No response

Change Logo and background color

Is your feature request related to a problem?

I would like to customize slash a bit.

Describe the solution you'd like

Would love to see an option to change the default logo and background/text color.

Additional context

This container/app runs flawlessly, is easy to set-up and use, and does all the basic things. love it!

All links go to 404 page

Describe the bug

All of my public links only work if I am logged into slash. Once I log out, they all give 404 error page.

Steps to reproduce

1: create a public link
2: test it works fine
3: log out
4: now the same link goes to a 404 error page.

Expected behavior

Public links should be accessible to the public, aka my friends, without the need to be logged in.

Screenshots or additional context

Screenshot 2024-02-06 225222
Screenshot 2024-02-06 225300

大佬有加入中文的考虑吗

Is your feature request related to a problem?

希望

Describe the solution you'd like

英文不好的同学用着就很不方便,希望大佬能加入中文,请问大佬有tg群吗

Additional context

No response

Settings Page does not have Access Token Section

Describe the bug

I tried with both regular and admin account, extension doesn't have the ability to create an access token.

Steps to reproduce

Click on name upper right hand corner
Choose Settings
Edit and Change Password are only options - Access Token does not exist.
I'm using the Unraid install using "stevenlgtm/slash:latest" repository.

Expected behavior

Should be able to click on create - access token.

Screenshots or additional context

No response

Store bookmarks as JSON

Is your feature request related to a problem?

HI, loving your bookmark app, but it would be nice if there is an option to store the bookmarks in a flat file format rather than a database. This would make it easier to import bookmarks and would be recoverable should this project be archived.

Describe the solution you'd like

Ideally I'd like the bookmarks to be stored as a simple extension to one of the browser formats. Chromium base browsers such as Edge and Chrome uses a simple JSON format for example. I added an additional tags collection to one of my bookmark files and restarted the browser without any issues.

Databases are fine, but they're not very portable and require backup strategies that can be troublesome. A simple file backup would be far easier.

Additional context

image

please add option to disable sign up.

Is your feature request related to a problem?

no.

Describe the solution you'd like

please add option to disable sign up.

Additional context

No response

Share public shortcuts to the internet

Is your feature request related to a problem?

收藏的这些网页希望能支持自定义链接,展示内容就是所有public属性的书签,这样可以作为书签页,很适合导航,用途更多。

Describe the solution you'd like

无需登录即可查看

Additional context

No response

XSS injections are allowed.

Describe the bug

Pay attention to your inputs!

Hey there! I had the pleasure of checking out this nice project, and I wanted to share something important with you. While exploring, I came across what seems to be a potential vulnerability. I thought it would be helpful to draw your attention to it.😊

The malicious script injection are allowed, specifically a cross-site scripting (XSS) attack, which is a common type of security vulnerability on websites.

Including a script tag like <script>alert('You are hacked');</script> in the Destination URL field can potentially harm users visiting the website where this input is being processed. When this URL is rendered on the page, it will execute the embedded script and show an alert with the message "You are hacked."

To ensure the security of your website or application, you should always validate and sanitize user inputs, especially for fields like URLs, to prevent such malicious scripts from being executed. To check if a URL is valid and safe, you should validate it server-side and in this case ensure it starts with "http://" or "https://".

Steps to reproduce

  1. Login
  2. ➕New
  3. Name: xss-injection
  4. Destination URL: <script>alert('You are hacked');</script>
  5. Save
  6. Click on xss-injection URL

Expected behavior

When I click on the Save button, check that all inputs are valid before continuing with the save.

Screenshots or additional context

Create/Edit Shortcut

slash-xss

click

click

xss

slash-alert

Extension unable to traverse Reverse proxy to Slash selfhosted instance

Describe the bug

  • Extension is unable to pull saved shortcuts from selfhosted instance
  • Refreshing the shortcuts does not work

Steps to reproduce

  1. Deploy Slash through docker and use a reverse proxy (traefik in my case) to route 443 HTTPS to container port
  2. Download and install extension
  3. Enter hostname into Slash Extension
  4. No shortcuts are pulled, refresh also does not pull any shortcuts

Expected behavior

Shortcuts are pulled to Slash Extension

Screenshots or additional context

Workaround discovered

  1. Only when keying in ":443" at the end of hostname are shortcuts pulled
  2. No problem pulling shortcuts from then onwards, even after changing hostname back without ":443"

Requset hash tag can be sorting

Is your feature request related to a problem?

Requset hash tag can be sorting

Describe the solution you'd like

Requset hash tag can be sorting

Additional context

HashTagAskingSorted

Option to disable metrics?

Is your feature request related to a problem?

Not really a problem, other than I personally don't need metrics sent out from my selfhosted instance.

Describe the solution you'd like

I'd like to see a configuration option to disable metrics so that when Slash is self-hosted, it doesn't call out in this manner.

Additional context

I notice various calls to https://app.posthog.com/batch/ from the instance, which on my network are blocked (due to network policies). So was wondering if it would be a good idea to simply allow one to opt-out.

API Shortlink creation

Is your feature request related to a problem?

Right now, the only way to create a shortlink is via the interface.

Describe the solution you'd like

An API to allow for easy shortlink creation.

Additional context

No response

few suggestions

Describe the solution you'd like

hey great tool, here a few Suggestions :-)

  • autofill out the Name Field, with the Title of the Webpage IF not filed out
  • Save Open Graph protocol Data, looks like there is a Option for that, but it issued used?
  • Show Screenshot of the Site as a Option (via Open Graph)
  • show the date of the last visit

Parameterized redirection

Is your feature request related to a problem?

Many times we want users to provide parameterized links, such as /s/google/something redirecting to https://www.google.com/search?q=test. This allows the redirection service to be that more powerful, since it becomes more flexible.

Describe the solution you'd like

Ideally slash would allow users to provide two URLs, one for no parameters, other with parameters. One of them must be filled. These could work like:

Memorable Name: google/(.+)
URL: https://www.google.com/search?q=\1

Memorable Name: my-api/(^/+)/(\d+)
URL: https://myapi.mycompany.com/\1?pageSize=\2

Additional context

No response

Max number of users

Describe the bug

It won't allow more than 5 users to register and nowhere in the docs it says it is a paid product. It says explicitly it's an open source self-hosted product. What should I do?

Steps to reproduce

Register more than 5 people.

Expected behavior

Register the user, but instead we get a message saying that user limit has been reached.

Screenshots or additional context

image

Extension: Auto populate or do not require "name"

Is your feature request related to a problem?

Its a usability question regarding the browser extension.

Describe the solution you'd like

I'd like to make adding bookmarks as quick as possible. Requiring me to manually fill out a "name" when adding one is a bit troublesome. I'd like to see this somehow be optional, or auto populated & editable. I'm not 100% sure what/where it is used from a technical perspective, but hopefully I've conveyed my ask well enough for one to determine if it is appropriate/doable or not.

Additional context

No response

visualization by column

Is your feature request related to a problem?

Currently, each bookmark takes up the entire width of the screen, which makes it difficult to view all the favorites as they are presented on a long page

Describe the solution you'd like

I'd like to have an option to set the display to 2 or 3 columns, which would make it possible to view favorites more quickly.

Additional context

No response

Automatic name as random short string

Is your feature request related to a problem?

no

Describe the solution you'd like

Name become not required and when not provided create a random short string

Additional context

No response

missing access token ?

I start a slash container by using my docker-compose.yml

version: '2'
services:
  slash:
    container_name: 'slash'
    image: 'stevenlgtm/slash:latest'
      #volumes:
      #- ./slash:/var/opt/slash
    restart: unless-stopped
    ports:
      - '5231:5231'

after running up the container , I can see the slash login page , but I find no default account/password info in README, so I choose up sign up a new account .
after I fill out the form and click apply , it just redirect to create your account page again.
and I saw some log in docker

{"time":"2023-07-24T08:23:09Z","method":"GET","uri":"/auth/signup?","status":200,"error":""}
{"time":"2023-07-24T08:23:10Z","method":"GET","uri":"/api/v1/workspace/profile","status":200,"error":""}
{"time":"2023-07-24T08:23:11Z","method":"GET","uri":"/api/v1/user/me","status":401,"error":"code=401, message=Missing access token"}

I'm wondering if there is any default account/password ? or somehow to solve the register new account problem ??

Delete User in UI

Is your feature request related to a problem?

How to delete users?

Describe the solution you'd like

Is there a current method for the web-app admin to delete users? Is there a database workaround to delete users on the backend?

Additional context

No response

Failed to delete user

Describe the bug

When I delete a user from the admin panel, I get the error:

Failed to delete user `xxx`: failed to delete user: SQL logic error: no such table: memo (1)

Steps to reproduce

  1. add a user
  2. delete it

Expected behavior

user successfully deleted

Screenshots or additional context

No response

Database Storage of URLs

Is your feature request related to a problem?

I really want to use this at my company for everyone to use together, but we need to store the links in a database such that we can run this in Kubernetes and not depend on the filesystem. Any chance this has come up already? If it is something you would consider adding as a feature I'd be happy to contribute.

Describe the solution you'd like

Provide the capability to abstract url storage and retrieval to allow filesystem and other storage options such as relational or document databases.

Additional context

No response

Question : Folder management

Is your feature request related to a problem?

i dont have the possibility to arrange my URL in folders .

Is it planned to have folders ? or do we have to use the tags ?

ty

Describe the solution you'd like

As a user i wish to arrange my urls by folders

Additional context

No response

Custom Icon Feature

Is your feature request related to a problem?

Appreciate your efforts in creating this excellent tool.
I've deployed this tool on my local NAS (using docker), and unfortunately, due to CORS reasons, my icons are not displaying correctly, as depicted in the image below.
image

image

Looking forward to the possibility of a custom icon feature being introduced in the future.
Thank you!

Describe the solution you'd like

It would be fantastic if there's an option to upload a custom icon when creating a new shortcut.

Additional context

No response

Add entry instead of 404

Is your feature request related to a problem?

If record doesn't exist using /s, popup form to add entry instead of showing 404 screen.

Describe the solution you'd like

Show new entry form

Additional context

No response

Search

Is your feature request related to a problem?

Thanks for a nice project, looks marvellous

Describe the solution you'd like

If there are a lot of links, filtering may not help. I think that the ability to search by title or other fields could speed up this process.

Additional context

No response

Additional fields Name is Darked in Dark Mode

Describe the bug

if I add an additional field name and I use a dark mode theme the field name is dark (black) almost impossible to read if you use the dark mode theme.

Steps to reproduce

if I add an additional field name and I use a dark mode theme the field name is dark (black) almost impossible to read if you use the dark mode theme.

Expected behavior

should be another color for title if you use dark mode.

Screenshots or additional context

dark

Suggest tags when typing

Is your feature request related to a problem?

Feature

Describe the solution you'd like

Suggest tags when typing in tags to auto complete.

Additional context

No response

Buttons to change display

Is your feature request related to a problem?

To facilitate quick reviews of all my entries, a button to change view from detail to summary is preferred over having to click thru screens via search. Currently I have to click 3 times to change to compact/full. This should ideally be one click.

Describe the solution you'd like

Add button(s) on the main screen to allow switching display to full/compact.

Additional context

No response

Ability to configure the default (initial) "Visibility" method when creating new Shortcuts

Is your feature request related to a problem?

Add ability to configure the default (initial) "Visibility" method when creating new Shortcuts (to be able to override the hardcoded default mode, per Slash instance). It would be great if the instance owner (admin), could specify a flag saying what the default create new shortcut behavior should be, for the Visibility method, so that the default method can be predefined in either an .env file per Slash instance, or in a UI setting. In earlier versions the default (initial) "Visibility" method was "Private" and then starting in v0.5.2 the default (initial) mode was changed to "Public"; however that setting is not configurable by the instance owner/admin in v0.5.2 latest public release, and this request is to make it configurable.

Describe the solution you'd like

At least (easiest to implement in the code) add an .env variable named something like "DEFAULT_URL_VISIBILITY" with private, workspace or public as allowed values. And once the instance is reloaded then use that as the default (initial) "Visibility" method for the entire instance for the "Create Shortcut" function in the UI. If there is extra time then add a global UI setting for the admin user to be able to change the default (initial) "Visibility" method, which would mean the .env flag is not needed or if it exists then one of those two settings would supercede (override) the other.

Note: I don't know if it would be worth having a configuration setting per user in the UI, like in the user's profile, but that could also be an idea for later. At least if a setting were enabled in the .env file, as a new variable flag, that would be easiest to implement by the instance owner in Linux, one time, instance wide.

Additional context

Screenshot_20240131-221402

Screenshot_20240131-221715

The .env content could look like this for instance, as mentioned in the screenshot above:

root@pi4:~/docker-slash$ cat .env DEFAULT_URL_VISIBILITY=private root@pi4:~/docker-slash$ docker-compose restart

Support i18n with Chinese

Is your feature request related to a problem?

全英文会有些麻烦

Describe the solution you'd like

这是个很好的项目,请问有考虑加入中文支持吗?

Additional context

No response

Dark Mode

Is your feature request related to a problem?

Awesome project. Please add Dark Mode!

Describe the solution you'd like

Dark Mode option to switch from Day to Night.

Additional context

No response

Chrome extension not working

Describe the bug

  • unable to save shortcut to my private hosted instance. i can create the shortcut directly in the site page.
  • unable to open the popup dialog after the first save of shortcut
  • unable to open the option page

Steps to reproduce

  1. install and setup the extension
  2. create save a new shortcut
  3. click on the pinned extension icon, just a little box without any content opened
  4. select 'options' from the context menu of the extension, a blank page opened, press f12, and reopen the options page again to see console log

Expected behavior

save the shortcut as expected

Screenshots or additional context

2023-10-26_08:22:48

Issue on firefox

Describe the bug

Cant create an account or log on firefox /and chrome

Have to use Edge to create an account and log into it .

I use docker to host Slash

method=GET uri=/api/v1/user/me status=401 error=code=401, message=Missing access token

Steps to reproduce

N/A

Expected behavior

N/A

Screenshots or additional context

No response

Healthcheck Support

Is your feature request related to a problem?

Running slash in K8s requires a healthcheck route. While it is possible to just use / it would be great to have something like /status or /health. If that exists I was not able to find it.

Describe the solution you'd like

Just a route that returns OK or something :) Could be a route that also queries Postgres to make sure everything is alright.

Additional context

No response

PWA + share_target

Is your feature request related to a problem?

Hello!

I've just started using this app and it's great. I would like (and could implement) a feature where you can "share" from your phone to Slash. I.e. have Slash appear on this screen: https://i.stack.imgur.com/N4kOo.png

My question is, would this be of interest to have built into this project or should I create another project that's just a small PWA with a share_target?

Cheers
Max

Describe the solution you'd like

My idea is to add some PWA capabilities to the web app and then use share_target to the end user (if they have installed the app as a PWA)

https://developer.mozilla.org/en-US/docs/Web/Manifest/share_target

Additional context

No response

Default Behavior on 404

Is your feature request related to a problem?

Whenever I want to create a new shortcut I have to type s/slash (my shortcut to slash itself), then click the Create button, then start filling the details. It would be a great experience if whenever I get a 404, it could drop me in the new shortcut form with the name I used in the shortcut filled in the link name already.

Describe the solution you'd like

Let's say I type s/my-404-link, a link that does not exist yet in Slash. What I want is for Slash to take me directly to the create shortcut form and have my-404-link already pre-filled in the shortcut name input. That would make for an incredible UX!

Additional context

No response

API documents

Is your feature request related to a problem?

方便自定义收藏的快捷方式。比如在iOS上用快捷指令来收藏网页

Describe the solution you'd like

把token用起来

Additional context

No response

Usage as internal link manager for company

Is your feature request related to a problem?

slash is GREAT! I just have a few minor requests that may be added as configuration that would make it even better for my use case.

  1. We want users to provide a memorable name for urls all the time. No use for the auto-generated url since the goal is not to share outside the company. This will be used in the VPN.
  2. We want this tool to be as lean as possible for our users, so the less they have to fill the better. Ideally they'd fill the URL and memorable name. That's it.

Describe the solution you'd like

  1. Would it be possible to have a config (flag? env var?) that changes the UI behavior from defaulting to auto-generated to defaulting to an empty input? That would be enough for our use case.
  2. I think there's a two phase approach here:
    a. First we can have a config just to disable the title being required. That is already good enough for us since we don't really care about the title or the other metadata.
    b. Second I think a good addition to slash would be to query the URL provided for the link and get the metadata from the page and automatically fill the metadata for me (og:title, og:description and such). That would be amazing!

Additional context

We are adopting slash as our internal go links tool and these changes would make it easier on our end. Thanks so much for the amazing work!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.