En lättviktig URL-förkortningstjänst byggd med Go och Gin, med klickanalys och flexibelt databasstöd för självhostad drift-sättning.
Problem
Publika URL-förkortare som bit.ly kommer med integritetsproblem, användningsbegränsningar och beroende av tredjepartstjänster. För de som vill självhosta sina egna korta länkar—oavsett om det gäller integritet, varumärke eller kontroll—fanns det ett behov av en enkel, konfigurerbar lösning som kunde köra på blygsam hårdvara samtidigt som den tillhandahöll användbar analys.
Tillvägagångssätt
Jag valde Go med Gin webbramverk för dess enkelhet och effektiva resursanvändning. Arkitekturen följer en ren separation: handlers för HTTP-routing, services för affärslogik och models för datastrukturer. GORM fungerar som ORM-lager och abstraherar databasskillnader så att användare kan välja mellan SQLite för snabba installationer eller PostgreSQL för produktionsanvändning. Den dynamiska kortkodsgenereringen implementerades för att hålla URL:er korta initialt samtidigt som de expanderar automatiskt när kollisioner blir mer sannolika. För geografisk spårning integrerade jag DB-IP-databasen som en valfri funktion som kan aktiveras eller inaktiveras via konfiguration. Jag använde även go för att det verkar som ett intressant språk som jag vill lära mig.
Funktioner
- Skapa korta länkar: Generera korta koder med automatisk kollisionsundvikning
- Omdirigeringstjänst: Snabb URL-omdirigering med klickspårning
- Klickanalys: Spåra klick med tidsstämplar, dagliga tidslinjer och nationsuppdelningar
- Token-autentisering: Unika tokens för varje URL för att komma åt statistik och ta bort länkar
- Dubbla databasstöd: SQLite för enkelhet, PostgreSQL för produktionsskalbarhet
- GeoIP-integration: Valfri geografisk spårning med DB-IP-databas
- REST API: Programmatisk åtkomst för att skapa länkar och hämta statistik
- Konfigurerbar loggning: Justera utdatavorositet (silent, warn, error, info)
Vad den erbjuder
Denna tjänst ger dig full kontroll över dina korta länkar med detaljerad analys för att förstå klickmönster. Det flexibla databasstödet innebär att du kan börja med SQLite på en liten VPS eller Raspberry Pi, och sedan migrera till PostgreSQL vid behov. GeoIP-spårning (när den är aktiverad) ger insikter om var dina länkar klickas, användbart för att förstå din publik.
Teknisk stack:
- Språk: Go (1.25+)
- Ramverk: Gin webbramverk
- ORM: GORM (SQLite/PostgreSQL)
- Valfritt: GeoIP via DB-IP-databas