TripLog
A vehicle logbook that isn't a paper notebook. Drivers log a trip or a refuelling on their phone, and the company sees its vehicles, services and costs in one place. It started as my bachelor’s thesis and now runs in production.
- Year
- 2026
- Role
- Design, development, deployment
- Type
- Web application (PWA)
- Origin
- Bachelor’s thesis

What I did
Trips and travel orders
Business and private trips with the route and distance from Google Maps. Addresses complete themselves as you type.
Per diems by the Czech rules
The app works out per diems itself: bands by trip length, deductions for free meals and foreign rates for 16 countries.
Refuelling without signal
A refuelling can be logged offline. It is kept on the phone and sent as soon as there is a connection again.
Services and reminders
It watches service intervals by date and by mileage. When a service is due, an e‑mail and a phone notification go out.
Company, team and roles
An organisation with a team and five roles, from driver to owner. Plus drivers' medical check-ups and a log of every change.
Statistics and exports
Monthly charts of distance, costs, fuel consumption, cost per kilometre and per diems. Reports download as PDF.
Technology
- Frontend
- Next.js 15
- React 19
- TypeScript
- Tailwind CSS 4
- Recharts
- Backend and data
- Next.js API
- Prisma
- PostgreSQL
- Mobile
- PWA
- Service Worker
- Web Push
- Services
- Vercel
- Vercel Blob
- Resend
- Google Maps API
Under the hood
Tokens out of scripts' reach
Sign-in keeps its tokens in HttpOnly cookies only, so no script on the page can read them. Middleware checks the token before every request, and the session renews itself.
PDFs with Czech accents
jsPDF can't draw Czech accents out of the box. The exports load a font of their own, so trips, refuelling and services come out right.
Documents outside the database
Refuelling and service receipts and medical check-ups are stored in Vercel Blob. The database keeps only the link.
Want something similar?
Send me a few lines about what you need. I’ll get back to you and we’ll agree on next steps.
Get in touch