Skip to content
andesvelPublic

About

πŸ”— An URL shortener with in-app browser detection & escape powered by Cloudflare Workers.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Latest commit

Β 

History

388 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

nuto-banner

πŸ”— Nuto is a smart URL shortener designed to escape in-app browsers and open links where they belong: in the user's native browser or the corresponding native application.

The name "Nuto" comes from the Spanish word "diminuto" (tiny), reflecting its purpose of making long URLs tiny.

🀝🏻 This project's UI was highly influenced by Pheralb's slug. πŸ—Ώ

React Router Cloudflare shadcn/ui Check workflow Deploy workflow GitHub issues License: GPL v3

nuto-dashboard-desktop

πŸ“š Table of Contents

✨ Key Features

  • In-App Browser Escape: Detects when a link is opened inside an in-app browser (like Instagram) and redirects to the native system browser.
  • Deep Linking: Opens YouTube, Spotify, and other supported links in their native apps instead of the in-app browser.
  • Password Protection: Secure your links with a password.
  • Link Expiration: Set an expiration date for temporary links.
  • Custom Short Codes: Users can customize the short code for their links.
  • Click Analytics: Basic, privacy-friendly click tracking (no IP addresses are stored).
  • User Authentication: Managed with Clerk for secure sign-in and user management.

πŸ› οΈ Tech Stack

πŸš€ Getting Started

Prerequisites

You will need the following to run Nuto locally:

1. Installation

git clone https://github.com/andesvel/nuto.git
cd nuto
pnpm install

2. Environment Setup

Create the required environment files.

.env.local (Client-side variables):

VITE_CLERK_PUBLISHABLE_KEY=pk_...

.dev.vars (Worker/Server-side secrets):

CLERK_SECRET_KEY="sk_..."
PASSCODE_ENC_KEY="..."
CLERK_WEBHOOK_SECRET="whsec_..."

3. Development Server

Start the Vite development server with HMR:

pnpm dev

Your application will be available at http://localhost:5173.


☁️ Deployment

Cloudflare Workers handles both the SSR routing (via React Router) and the API.

1. Build

pnpm build

2. Provision Cloudflare Resources (First time only)

Login to Cloudflare:

wrangler login

Create the D1 database:

wrangler d1 create nuto-db

(Update wrangler.jsonc with the new database_id)

Create the KV namespace (for production and preview):

wrangler kv namespace create URL_STORE
wrangler kv namespace create URL_STORE --preview

(Update wrangler.jsonc with the corresponding id and preview_id)

3. Configure Secrets

wrangler secret put CLERK_SECRET_KEY
wrangler secret put PASSCODE_ENC_KEY
wrangler secret put CLERK_WEBHOOK_SECRET

4. Initialize Database

Execute the schema against your D1 instance:

wrangler d1 execute nuto-db --file=./schema.sql

5. Deploy

pnpm deploy

πŸ—ΊοΈ Roadmap

Here's a look at the current state and future plans for Nuto.

  • βœ… Stable
  • 🚧 In Development
  • πŸ€” To Be Decided (TBD)
Feature Status Details
Core Functionality βœ… URL shortening, redirection, and basic click tracking.
Link Management βœ… Create, view, edit, and delete links.
UI/UX βœ… Click-to-copy, status notifications, responsive design.
Security βœ… Password-protected links and expiration dates.
Authentication 🚧 GitHub login provider is currently in development.
Dashboard Analytics πŸ€” Advanced stats: total links/clicks, click graphs, top links.
QR Codes πŸ€” Generation and customization of QR codes for each link.

πŸ› Known Issues

  • PWA Layout: Some layout and styling issues may occur when the application is installed as a Progressive Web App (PWA), particularly around the header and safe areas on mobile devices.
  • GitHub Authentication: The sign-in flow for GitHub is not currently functional and is being worked on.

πŸ”— Related projects

  • slug - 🌱 An open-source URL shortener built with T3 Stack.
  • midu.link - Create shorten urls easily with Cloudfare Workers.
  • inapp-debugger - Test common in-app issues.
  • inapp-spy - Detect in-app browsers.
  • Bowser - A browser detector.
  • Sink - A Simple / Speedy / Secure Link Shortener with Analytics, 100% run on Cloudflare.
  • Kutt - Free Modern URL Shortener.
  • ZWS - Shorten URLs using invisible spaces.

βš–οΈ License

This project is licensed under the GNU General Public License v3.0

About

πŸ”— An URL shortener with in-app browser detection & escape powered by Cloudflare Workers.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Sponsor this project

Contributors

Languages