Slug
🌱 An open-source URL shortener built with T3 Stack.
Install / Use
/learn @pheralb/SlugREADME
<a href="https://slug.vercel.app/dashboard">Dashboard</a> <span> ❖ </span> <a href="#-roadmap">Roadmap</a> <span> ❖ </span> <a href="#-getting-started">Contribute</a> <span> ❖ </span> <a href="https://github.com/pheralb/slug/issues/new/choose">Create issue</a> <span> ❖ </span> <a href="https://twitter.com/pheralb_">X/Twitter</a>
<div align="center"> <a href="https://slug.vercel.app"> <img src="public/images/screenshot_png.png"> </a> <p></p> </div>
👨🚀 Introduction
Slug is a service that offers to shorten urls in a simple, fast and secure way. It's built with T3 Stack, a web development stack made by Theo focused on simplicity, modularity, and full-stack typesafety.
This project uses the following technologies:
- create-t3-app - The best way to start a full-stack, typesafe Next.js app.
- Next.js 14 App Router - The React Framework for the Web.
- Auth.js v5 - Authentication for the Web.
- Prisma - A next-generation Node.js and TypeScript ORM.
- Turso (SQLite) + libSQL - SQLite for Production.
- Next.js Server Actions - Asynchronous functions that are executed on the server.
- TailwindCSS + shadcn/ui & Radix Primitives - Design System.
- Prettier with prettier-plugin-tailwindcss - Code Formatter.
- Lucide Icons + svgl - Beautiful SVG icons & logos for the web.
⚠️ This is a community project, not associated with Vercel.
🚀 Getting Started
Requirements:
- [x] Node.js (+v18.x) installed.
- [x] pnpm (v8+) installed.
- [x] Turso CLI installed (for Windows users, it's necessary to activate WSL 2).
- [x] Visual Studio Code with the recommended extensions installed (ESLint, Prettier, Tailwind CSS IntelliSense).
Steps:
- Fork this project:
- Clone the repository:
git clone git@github.com:YOU_USER/slug.git
- Install dependencies:
# Install pnpm globally if you don't have it:
npm install -g pnpm
# and install dependencies:
pnpm install
- Create a .env file with the following content:
🚧 The environment variables must match the following schema.
# Database:
DATABASE_URL= # "file:./dev.db"
TURSO_DATABASE_URL=
TURSO_AUTH_TOKEN=
# Auth.js =>
AUTH_SECRET=
# Github Provider =>
GITHUB_ID=
GITHUB_CLIENT_SECRET=
# Google Provider =>
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
Database:
Auth.js:
- Get Auth.js Secret.
AUTH_URLis the URL of your Auth.js API, for example,/api/auth. You can change it in theauth.tsfile.
Github Credentials:
Google Credentials:
- Generate a new migration file with Prisma:
pnpm db:migrate
- Insert the migration data into the Turso database. To do this, go to
package.json, modify thedb:pushcommand with the name of the migration folder (2024xxxxxxxxxx_init) and run it in your terminal:
pnpm db:push
- Run:
- Development server:
pnpm dev
and open http://localhost:3000 with your browser 🚀
- Prisma Studio:
pnpm db:studio
and open http://localhost:5555 with your browser ✨
🔭 Roadmap
This is the roadmap I will be following for the complete migration to v3:
- ✅ = Stable, completed.
- 🔔 = Stable, but unexpected errors may appear.
- ⚙️ = In progress.
⬆️ Known issues:
- ⚙️ Fix issue when logging in with different provider but with the same email. Redirect to an existing route in the app (authjs error).
⬆️ Dependencies:
- ✅ Update
@prisma/adapter-libsql,@prisma/client&prismato the stable version when it's released. - ⚙️ Update
authjsto the stable version (v5) when it's released.
⬆️ Auth:
- ✅ Sign In with Github.
- 🔔 Sign In with Google.
🔔 Only for users who have not previously logged in with an existing email address in their Github account. This is an issue that will be worked on soon.
⬆️ Middleware:
- ✅ Redirect with
/*and/s/*. - ✅ Separate public, protected & authentication routes.
⬆️ Dashboard (main):
- ✅ Create a new short URL.
- ✅ List all shorted URLs.
- ✅ Delete a shorted URL.
- ✅ Update a shorted URL.`
⬆️ Dashboard (tags):
- ✅ Add search links by tags in the dashboard.
- 🔔 Create a new tag.
- ✅ Delete a tag.
- ⚙️ Update the tags of a link.
🔔 Add option to change tag color.
⬆️ Dashboard (settings):
- ✅ Change name.
- ✅ Change email.
- ✅ Delete account.
- ✅ Download all links data.
✌️ Contributing
<a href="https://github.com/pheralb/slug/graphs/contributors"> <img src="https://contrib.rocks/image?repo=pheralb/slug" /> </a> <p></p>☁️ Deploy on Vercel
🔑 License
Related Skills
Writing Hookify Rules
82.0kThis skill should be used when the user asks to "create a hookify rule", "write a hook rule", "configure hookify", "add a hookify rule", or needs guidance on hookify rule syntax and patterns.
feishu-drive
333.3k|
things-mac
333.3kManage Things 3 via the `things` CLI on macOS (add/update projects+todos via URL scheme; read/search/list from the local Things database)
clawhub
333.3kUse the ClawHub CLI to search, install, update, and publish agent skills from clawhub.com
