Link shortener/redirects with analytics
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
TZGyn d0a460b60c
fixed unable to set visitor columns to not null due to null value (convert the null values to empty string before the migration)
1 year ago
.github/ISSUE_TEMPLATE Update issue templates 1 year ago
docs moved preview images to docs folder 1 year ago
frontend fixed unable to set visitor columns to not null due to null value (convert the null values to empty string before the migration) 1 year ago
redirect rewrite redirect backend with go to do all redirect and geo data in one app 1 year ago
README.md remove geolite2 server from readme 1 year ago
project.excalidraw.png update project design overview 1 year ago

README.md

logo

Kon.sh

Kon.sh is an open source URL shortener with analytics. Made with SvelteKit and shadcn-svelte.

Note >
Please read the breaking changes section for self-hosted builds before 23 July 2024
Feel free to contribute by creating pull requests, issues and discussions.

Preview

links_preview qr_preview analytics_preview

One Click Deploy on Railway

Deploy on Railway

Development

Frontend

bun install
bun --bun run dev

Redirect

bun install
bun --bun run dev

Deployment

Frontend

bun install
bun run build
bun --bun run build

Redirect

bun install
bun run src/index.ts

Breaking Changes (For builds before this date)

23 July 2024

Transition from using ipbase to using geoipupdate for geolocation.

Please add the following environment variables to your .env file

GEOIPUPDATE_ACCOUNT_ID=
GEOIPUPDATE_LICENSE_KEY=

16 June 2024

(WARNING) Please backup your database before attempting

A change is made to auto migrate the database on build using drizzle-kit migrate. If you wish to continue manual migration you may delete this line from the Dockerfile

RUN bun run db:migrate

If you are running a build before 16 June 2024 and planning to update the project, please run the following sql command in your database.

Command to run:

CREATE SCHEMA drizzle;

CREATE TABLE drizzle.__drizzle_migrations (
    id serial PRIMARY key,
    hash text NOT NULL,
    created_at bigint
);

INSERT INTO drizzle."__drizzle_migrations" (hash,created_at) VALUES
	 ('dc4a942d4d0a7a90611888a9d3b4e39065cc7930f57a9f8082911b682bffe59a',1699851315914),
	 ('39813033df939e2ff70dfde789b915a527bd332918e647b30cdb325bcd7f9f31',1700134783172),
	 ('92e2f3d605903cffbac434f53049b9c28e597b759c9356833578f79270052840',1700882455122),
	 ('f5925084d194592b01f7899e5c76a67f6b711b0d1a83623c2c922a38da70503e',1701590526323),
	 ('d3b8bbbd3ab40d337036c3049fa752ed9fb193f94cc4935670f5f7fec742b72d',1704723435338),
	 ('613e79d9eaec544795abd5a616c5cb3c3fac95fa7570ca0522bd8f063e97afed',1704837856450),
	 ('9b6cbf2d2b0eafc41ae6ef490439f246287aa6c2c984b430abeb469279edbc54',1710268627832),
	 ('aac3ec22a701ad950c73294b569737bbd4a92630d0812affcceb8a3ff620f41a',1712463213571),
	 ('401271104970a10e610ffc0426d2d02c9e3a2c108ac314969703eec94c3613d1',1713678115996),
	 ('d3465de1d47d507b8d0f4546f83ff4bbb827acac22f2665e7ae1550fef884339',1713800868341);
INSERT INTO drizzle."__drizzle_migrations" (hash,created_at) VALUES
	 ('ddf6b0134407cacee74734efdd67d2403d92a6b347e31fa039f4b0d64c0680f6',1714395864654);