GRT Mobile
Attendance app for contractors at the gatehouse, with offline use, PIN and QR Code. The V2 was rebuilt in 14 days.
Context
At the gatehouse of client companies, the app records the attendance of contractors according to each person’s compliance status. I built the V1 in Bubble Mobile, under contract with Camada, the contract owner. The V2, in custom code, is a proof of concept I built on my own.
What I built
- V1 (Bubble): sign-in with an email code, PIN for offline use, lookup by CPF, list or QR Code, terms acceptance with logging, and sync with the client’s API.
- V2 (custom code): the same product rebuilt from scratch in 14 days, part-time, working offline.
Technical decisions
- Works without internet. Data lives in a local SQLite database and sync never loses or duplicates records.
- Security treated as a requirement. Credentials encrypted with AES-256, passwords and PINs strongly hashed, and a limit on sign-in attempts.
- Cheap infrastructure. From about US$ 40 a month, with Fly.io and PostgreSQL on Neon.
- Tests as a contract. More than 1,300 automated tests running in CI.
Results
- 20,000 workers loaded in under 10 seconds on a mid-range Android.
- Sync with no loss and no duplicates.
- The whole V2 was rebuilt by one person in 14 days, part-time.
- 14 days
- to rebuild the V2, part-time
- 1,300+
- automated tests in CI
- 20k
- workers loaded in under 10 s on a mid-range Android
Stack
- Expo (React Native)
- TypeScript
- SQLite
- Node.js
- Fastify
- PostgreSQL (Neon)
- pg-boss
- Zod
- Fly.io
- Sentry
- GitHub Actions