Case / delad utgiftsapp

Kvitt

Laravel / Vue 3 / PostgreSQL

Kvitt låter en grupp dela utlägg, se vem som är skyldig vem, och göra upp med så få betalningar som möjligt — istället för att alla ska hålla reda på det själva.

Problem

Att dela utlägg i grupp slutar ofta i ett virrvarr av småskulder korsvis mellan alla. Utan ett sätt att förenkla skulderna behöver varje person göra upp med varje annan person, även när nettoresultatet hade räckt med några få betalningar.

Lösning

Jag byggde en Laravel + Inertia + Vue-app med grupper, utlägg med jämn eller anpassad delning, och en girig skuldförenklingsalgoritm som matchar den största fordran mot den största skulden om och om igen tills hela gruppen är uppgjord.

Tekniska beslut
Skuldförenklingsalgoritmen räknar i heltalscent, inte flyttal, för att undvika avrundningsfel som annars smyger sig in vid upprepade delningar.Påminnelsers nedkylning kontrolleras med en atomär villkorad UPDATE (WHERE last_reminded_at IS NULL OR < cutoff) istället för läs-sedan-skriv, för att undvika dubbla notiser vid samtidiga förfrågningar.Inertia.js för SPA-känsla utan att bygga och underhålla ett separat API-lager.Laravel Wayfinder för typade routes delade mellan backend och frontend.Pest, Larastan och Pint i CI via GitHub Actions, pinnade till commit-SHA:n istället för flyttbara taggar.
Vad det visar

Projektet visar att jag kan lösa ett riktigt algoritmproblem (skuldförenkling) och hantera race conditions korrekt, inte bara bygga formulär och tabeller.

Teknik
Laravel 13PHP 8.3Inertia.jsVue 3PostgreSQLPestLarastanTailwind v4Render