Shawty is a URL shortener built using Golang, Turso and HTMX. It provides a simple web interface for shortening URLs, tracking their usage, and offering statistics about shortened URLs.
Web UI with Golang's html/template
:
A minimalistic web interface built using Go's standard html/template
package and Tailwind.
URL Click Statistics: Keep track of how many times each shortened URL is accessed.
Caching: Using go-cache for faster redirections and fewer database calls, by caching the results of redirecting requests.
Input Validation:
Checks if the URL is a valid URL schema. It only allows https://
URLs. And
also checks if the URL contains a valid
TLD.
git clone https://github.com/wavly/shawty.git
cd shawty
Set ENV Variables:
Get the database URL and Token from: Turso Docs.
Only needed if you're going to run the server in prod
mode else the server
would create a temporary sqlite3
database in the project directory
cp .env .env.local
go mod tidy
go run .
1920
:
xdg-open http://localhost:1920
Use the make
command to run/build the web server.
[!NOTE] Make sure the
ENVIROMENT
variable in.evn.local
is set todev
in order run the server in development mode.
Tools you'll be needing for development:
npm
,pmpm
) for JavaScript dependencies.make server
to start the server in watch modemake tailwind
to watch for tailwind classesmake tailmini
to minify the generated tailwind CSS filemake sqlc
to generate type safe SQL Go-code.We welcome any contributions to this project! For major changes, please open an issue first to discuss what you would like to change.