7 ms·
Kutt – a modern, open-source URL shortener
- surround 7y agoSee also: Polr https://github.com/cydrobolt/polr https://github.com/cydrobolt/polr
- petesaia 7y agoJust to add to the list - Go/Redis/gRPC: https://github.com/LevInteractive/dwarf https://github.com/LevInteractive/dwarf And a js/ts client to interface with it: https://github.com/LevInteractive/dwarf-client-ts https://github.com/LevInteractive/dwarf-client-ts Edit: Fix url.
- strict9 7y agoI feel better about this than a commercial service I suppose. But links should be what they are—the address of a page and not the product of a cloaking and tracking service that takes you to a page with added delay.
- petesaia 7y agoAgreed. FWIW, our reason for implementation is to reduce character count for SMS. Not for tracking/cloaking.
- joegahona 7y agoIs there a better solution for what to do when space is at a premium? The choices are: - Don't post the link - Post the link and let it get lopped off in the middle - Post the link without adequate context surrounding it - Create a shortened link that points to the original
- mathnmusic 7y agoIs space really at a premium though? Tweets and SMS can allow full-sized links while retaining character limits for UX reasons. It's almost 2020. Our networks can handle a few more bytes. When presenting visually (such as outdoor advertising), users should be able to simply scan the link - either as text or QR code.
- earenndil 7y agoThere's a limit to the length of an SMS, built into the protocol. 160 characters iirc.
- ThalesX 7y agoRecently set up a system, the limit was preventable by concatenating multiple messages, with the end-user not knowing this was done. By the way, we were going just a few characters into the next message so for pricing / logging issues we decided on shortening our own URL.
- codingslave 7y agoI've been through this source code, really clean and well written modern javascript (as far as I can tell). I was completely new to this whole webstack, learned a ton about javascript and building front ends from this. I think an underrated way to get good at coding or even to learn whole new methods is to extend well written open source code. I find myself regularly working with high quality code off github, learning more from the developers on there than the developers I interact with at work.
- poeti8 7y agoHey, creator of Kutt here! Wanted you to know that I'm refactoring client side as well to use TypeScript and new React features like hooks to ditch Redux, and I'm really really excited to push this code into production, so much cleaner now. You check the progress here: https://github.com/thedevs-network/kutt/tree/feature/refactor-client https://github.com/thedevs-network/kutt/tree/feature/refacto...
- bisby 7y agoFor hosting this myself, the major 2 things I am seeing: this requires captcha it seems for link creation? I'm getting captcha errors. Would much prefer requires being signed in to work. And on that note, no easy ENV var type way to disable sign ups. I really like the concept, but would love it as private only.
- poeti8 7y agoIt's on my list and will implement it soon.
- antihero 7y agoWhy do you need to "ditch redux"? Redux is excellent. People aren't "overusing" it as we did previously, but it is still a very good way to manage data and state, and sagas etc are a great way to approach building clients for traditional APIs. There isn't really anything in pure hooks that can really replace it, performance wise. If you for some reason really dislike it, mobx-state-tree is probably the best contender to replace it.
- cosmotic 7y agoWhat makes it modern?
- mesaframe 7y ago¯\_(ツ)_/¯ I skimmed the repo and myself couldn't find anything special tbh.
- dstroot 7y agoExpress server, React client, Typescript. Not exactly modern (expressjs came out in 2010) but a good "all js" simple architecture.
- jlgaddis 7y agoIt uses the latest tech buzzwords, it seems.
- joegahona 7y agoIs its open-source-ness what makes it unique?
- robbyoconnor 7y agonothing really does.
- robbyoconnor 7y agoIt's not incredibly hard to make a URL shortener...so yeah.
- aspaviento 7y agoThere's a link in the official Microsoft documentation (for office-js if I remember it right) that uses bitly or a similar service. I don't what happened to that link but now, when clicked, it tries first to load some random porn site and then redirects to a YouTube video (about a car or something like that). I wanted to report it, but didn't find an easy way of doing so, so there must be still there trying to add malware or who knows what to the poor people reading official Microsoft documentation.
- technion 7y agoI can pick up a few here: https://github.com/MicrosoftDocs/azure-docs/search?q=bit.ly&unscoped_q=bit.ly https://github.com/MicrosoftDocs/azure-docs/search?q=bit.ly&... Edit: All those seem "legit", but do point to a pattern
- xwowsersx 7y agoWhat makes a project "modern"? Seriously curious, as it seems to often be used to describe projects/tools. Is it that the tools and languages used to build it are new? If so, should I care? I suppose if the point is to showcase a useful project in some new language/framework, then I'd care. But otherwise, do I? Like, what if this were built in some really old language and with ancient tools? Feel free to ignore this ramble, just curious what people think.
- nine_k 7y agoHmm, TypeScript + deployed as a container? Not cutting-edge, but definitely not obsolete, and does have obvious benefits over e.g. a traditional plain Python-based app which you need to package and host yourself.
- xwowsersx 7y agoWhat are the obvious benefits? I don't follow your example... you can run a Python app on AWS, directly on an EC2 instance or in a container, using Lambda, whatever.
- nine_k 7y agoInstalling Python code and having all dependencies correctly resolved is a common source of problems and complaints. OTOH URL shortener run as a Lambda looks like a good idea in many cases.
- xwowsersx 7y agoI hear ya, but still...I think I feel that you're overstating things. You can use pipenv or poetry or whatever to minimize issues with dependencies, bake into an image and run as a container. I've nothing against typescript or any other techniques/practices you might be alluding to, but choosing those languages/tools based on the kinds of benefits you're pointing to seems rather off to me. It's a bit of work (just a bit) to get deployments working correctly, but once you do, it's there and you can rely on it as part of your infrastructure. I think the decision of which language or framework is going to be used should be informed by something more than the benefits you stated (assuming you meant those are the primary ones) because those seem a bit weak tbh.
- deleted 7y ago[deleted]
- Meph504 7y agoTo me at this point I question the wisdom of even using URL shorteners. They almost all get abused by spammers and malware, they end up getting blacklisted, and as a best practice they are generally advocated for end users not to click on them. In a Corp business environment I haven't found the pains that come with using them worth the shorter URL. What places are they still widely used outsider of social media?
- flafla2 7y agoThey're useful when you need to get people (especially large groups) to type in a URL. For example, I use them when teaching classes to e.g. fill out attendance sheets because I can simply write the url on the board. I'd agree that if the method of delivery is a link, there is no valid reason to use a shortener.
- mgoblu3 7y agoWe at least use one internally at my big corp. It's nice because instead of routing to some non-vanity URL that looks more like a raw Azure host, we can register x.company.com/whatever to redirect to it. Can only access the links and shortener from inside the firewall.
- kbumsik 7y agoAFAIK Microsoft use their own URL shortener all over the place including their blog, project, and docs https://aka.ms https://aka.ms . Instead of using random characters, they use a name that clearly shows what it is about for a URL, https://aka.ms/terminal-video https://aka.ms/terminal-video as an example. I think it is the best usage of a URL shortener so far. https://techcommunity.microsoft.com/t5/Exchange-Team-Blog/Navigating-Exchange-Content-Like-A-Pro-Using-Short-URLs/ba-p/603520 https://techcommunity.microsoft.com/t5/Exchange-Team-Blog/Na...
- Meph504 7y agoYes, and it's a parade of randomly dead links, I really hope they stop using it soon. Or at least stop deadlinking their own content.
- 7y ago
- whermans 7y agoYou may want to think twice before marketing this to anyone who speaks Dutch.
- yborg 7y agoReminds me of how the Zune amused French-Canadians.
- beagle3 7y agoWhat does it mean in French-Canadian? In Hebrew it is the modern noun for "fuck" (as in, the act of coitus) - perhaps you mean that? (And to add insult to injury, you used to "squirt" songs)
- ekianjo 7y agothe Dutch equivalent of the c-word in English.
- teekert 7y agoWritten with a single t, but a word we use to describe poor quality, annoying people, the sensation of hitting one's toe against furniture, that moment when you realize you forgot something important, female reproductive organs (though this is not a very respectful word.) A very versatile word indeed, more the equivalent of the F word I think.
- wokkel 7y agoAnd now we can add k*link to it to mean a dead link. Fittingly I'd say.
- LeonM 7y agoI guess the same was true for Flickr. But trying to find a brand name that doesn't offend in any language, while also not having to pay $10k to some domain squatter is basically impossible nowadays.
- ekianjo 7y ago> we moved from Neo4j Strange, why even use graph databases for this kind of service? It does not seem like it would be needed for this use case.
- bszupnick 7y agoI started my project (https://onefiftyone.run https://onefiftyone.run) using Mongo. It wasn't intentional, that was simply my stack. We quite quickly outgrew it, and had to rip out that plumbing for Postgres. It wasn't fun, but in retrospect I realise I was using the new, cool, hip technologies instead of actually evaluating things on their merits. Maybe this project fell into the same trap?
- mikl 7y agoA full-scale database server (Neo4j or PostgreSQL), a heavy frontend React app with Redux. A little over-engineered for a URL shortener, I think. That’s a lot of spinning wheels to maintain for a relatively simple service.
- uj8efdkjfdshf 7y agoIf anyone is interested, I made a single page URL shortener some while back (technically 2 if you count the required .htaccess file). [0] https://g.sia.nz/public-html/shortener/tree/master https://g.sia.nz/public-html/shortener/tree/master