An open-source URL shortener.
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.
Requirements:
- Node.js (+v18.x) installed.
- pnpm (v8+) installed.
- Turso CLI installed (for Windows users, it's necessary to activate WSL 2).
- 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_URL
is the URL of your Auth.js API, for example,/api/auth
. You can change it in theauth.ts
file.
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:push
command 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 ✨
from https://github.com/pheralb/slug
示例:https://slug.vercel.app/bmbs
No comments:
Post a Comment