pheralb / slug

🌱 An open-source URL shortener built with T3 Stack.
https://slug.vercel.app
GNU General Public License v3.0
595 stars 59 forks source link
hacktoberfest next-auth nextjs prisma shadcn-ui sqlite t3 t3-stack tailwindcss turso typescript vercel
Slug Logo

An open-source URL shortener built with T3 Stack.

Dashboard   ❖   Roadmap   ❖   Contribute   ❖   Create issue   ❖   X/Twitter

![Next.js Badge](https://img.shields.io/badge/Next.js 14-000?logo=nextdotjs&logoColor=fff&style=flat) ![Turso Badge](https://img.shields.io/badge/Turso-4FF8D2?logo=turso&logoColor=000&style=flat) ![Check workflow](https://github.com/pheralb/slug/actions/workflows/ci.yml/badge.svg) ![GitHub stars](https://img.shields.io/github/stars/pheralb/slug) ![GitHub releases](https://img.shields.io/github/release/pheralb/slug) ![GitHub issues](https://img.shields.io/github/issues/pheralb/slug) ![GitHub license](https://img.shields.io/github/license/pheralb/slug)

👨‍🚀 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:

⚠️ This is a community project, not associated with Vercel.

🚀 Getting Started

Requirements:

Steps:

  1. Fork this project:
  1. Clone the repository:
git clone git@github.com:YOU_USER/slug.git
  1. Install dependencies:
# Install pnpm globally if you don't have it:
npm install -g pnpm

# and install dependencies:
pnpm install
  1. 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:

Github Credentials:

Google Credentials:

  1. Generate a new migration file with Prisma:
pnpm db:migrate
  1. Insert the migration data into the Turso database. To do this, go to package.json, modify the db:push command with the name of the migration folder (2024xxxxxxxxxx_init) and run it in your terminal:
pnpm db:push
  1. Run:
pnpm dev

and open http://localhost:3000 with your browser 🚀

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:

⬆️ Dependencies:

⬆️ Auth:

🔔 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:

⬆️ Dashboard (main):

⬆️ Dashboard (tags):

🔔 Add option to change tag color.

⬆️ Dashboard (settings):

✌️ Contributing

☁️ Deploy on Vercel

🔑 License