Gå til indhold
cutty.dev
All posts

cutty.dev teknologistak — bevidste valg

Hvad ligger under cutty.dev og hvorfor. Uden evangelisering — filosofi: kedelig, stabil stack, hosting i EU og privatliv indbygget i en arkitektur, som én person er i stand til at vedligeholde.

De fleste "mit tech stack"-indlæg er en stolt liste over nyheder. Se, jeg har det her, jeg har det der, og her er endda et helt frisk bibliotek fra sidste uge. Dette bliver anderledes.

For sandheden er, at når du driver et projekt alene, leder du ikke efter det mest trendy. Du leder efter noget, der ikke vækker dig klokken tre om natten. Og det er præcis det, hele denne teknologiske stack fra cutty.dev handler om: kedeligt i stedet for trendy, europæisk i stedet for amerikansk, privat helt fra fundamentet, og så simpelt, at et par hænder kan overskue det.

Jeg gennemgår det punkt for punkt, som om jeg forklarede det til dig over en kop kaffe.

Astro server-renderet (og hvorfor ikke noget "federe")

cutty.dev er Astro med server-side rendering. Hver anmodning går gennem serveren, samler siden og sender færdig HTML tilbage. Kedeligt? Det er præcis det, der er pointen.

Jeg ønskede tre ting: server-side rendering uden tungt maskineri, ordentlig understøttelse af flere sprog med det samme, og hastighed uden overhead. Astro giver alt dette, og koden forbliver læselig. Når jeg vender tilbage til det efter en pause på to måneder, ved jeg, hvad der foregår derinde. Ved et solo-projekt er det mere værd end ethvert trendy plugin, som ingen understøtter efter et år.

Én fil i stedet for en database med fyrværkeri

SQLite. Én database, én fil på disken. Hertil kommer et query-lag, der taler med TypeScript, så når jeg ændrer datastrukturen, dukker fejlen op i editoren og ikke i produktion ved midnat.

Hvorfor lige præcis dette? cutty er "read-heavy". Nogen klikker på et forkortet link, vi laver en læsning og øger tælleren. Det er det. SQLite håndterer sagtens denne trafik, selv op til virkelig høje daglige tal. Og backup? Du kopierer filen. Færdig. Uden replikeringsceremonier, uden scripts som ingen kan huske, hvordan fungerer.

Her skal du være opmærksom på én ting, for det er en almindelig fælde: folk hører "SQLite" og tænker "et legetøj til et skoleprojekt". Det passer ikke. Færre bevægelige dele betyder færre ting, der kan gå i stykker. Det er ikke at spare på kvaliteten, det er en bevidst beslutning.

Serveren står i Europa, og det er ikke en tilfældighed

Dedikeret server i EU. Egen TLS, reverse proxy med automatisk HTTPS, applikation i containere.

Dette er fundamentet for, hvordan cutty håndterer data. Jeg ved præcis, hvor de fysisk befinder sig (hos EU-klienter og GDPR er dette ikke en detalje, men et krav), jeg er ikke bundet til én enkelt leverandør, intet lækker automatisk til den anden side af oceanet, og regningen er forudsigelig i stedet for at svinge med trafikken.

Ja, bekvemme platforme fra Vesten ville have givet en hurtigere start. Du klikker, deployer, det virker. Det er bare det, at du betaler for det med, hvor dine brugeres data lander. For mig var det en dårlig handel.

Oversættelser laver sin egen model, hos sig selv

cutty taler 25 sprog. Det oversættes af en lokal, åben AI-model, der kører på min infrastruktur. Jeg sender ikke tekst fra interfacet til nogen ekstern udbyder.

Fordelene er praktiske. En enkelt oversættelse koster nul. Jeg har fuld kontrol over kvaliteten og kan opdatere dem, når jeg vil. Og maskinen har altid brug for et menneskeligt øje, så hvert af disse 25 sprog er blevet gennemgået. Men det faktum, at jeg gør det selv, betyder, at privatliv ikke er en post på prislisten. Det er en egenskab ved, hvordan helheden er opbygget.

Tailwind, containere og nogle mindre beslutninger

Style? Utility-first, hvilket betyder Tailwind. Ingen CSS-in-JS, ingen separate stilfiler, alt direkte i skabelonerne. Jeg spilder ikke tid på at udtænke klassenavne, ubrugte stilarter ender alligevel ikke på den endelige side, og designet hænger sammen, fordi selve systemet tvinger det til det. For én person tæller hvert minut, der ikke bliver spildt på ligegyldigheder.

Implementeringen er Docker. Det samme miljø lokalt og i produktion, slut med "det virkede på min maskine". Og hvis det nogensinde blev nødvendigt, flytter jeg det hele til en anden server på omkring en halv time. Portabilitet er en stille form for uafhængighed.

Hvad jeg lærte af dette

En kedelig stack vinder. Astro, SQLite, Tailwind, containere. Alt er modent, gennemtestet og dokumenteret. Intet går i stykker på det tidspunkt, hvor du har mindst brug for det.

Hosting i EU er klar til produktion, virkelig. Det er en myte, at "du skal bruge den store amerikanske cloud for at være seriøs", det er en myte. Lokal AI er også realistisk; man behøver ikke afgive data til et eksternt API for at få ordentlige oversættelser. Og den sidste ting: én person kan udgive noget, der ligner arbejdet fra et helt team. Man skal bare huske, at tid er dyrere end penge, og vælge hver eneste brik derefter.

Når du bygger noget eget, så stil dig selv ét spørgsmål ved hver teknologi: vil jeg kunne vedligeholde det selv om et år? Hvis ikke, så har du nok svaret.

Det hele fungerer her: cutty.dev. Og hvis du vil tale om en af disse beslutninger, så skriv til [email protected], jeg svarer samme dag.