HomeProjectsAbout Contact PT
Personal Project
APP

5 Minutos
Com Deus

A personal devotional app: every day it shows the same Bible verse to everyone, chosen deterministically by date, with email/password or Google login, saved personal reflections per verse, and a Duolingo-style access streak.

01
// About the project
What was built

5 Minutos Com Deus ("5 Minutes With God") is a personal devotional app built from scratch. The core idea is simple: every day, the app shows the same Bible verse to everyone, chosen deterministically from the date, creating a shared point of reflection across all users.

Users can sign in with email and password or Google login, save personal reflections per verse, and track a daily access streak, Duolingo-style, to encourage the habit.

All persistence runs on PostgreSQL with raw SQL, no ORM, and the project has a real integration test suite with Jest, running against a Postgres instance in Docker.

02
// Challenges
What made the project difficult
// Determinism
The same verse for everyone
Picking the day's verse deterministically from the date, with no saved state, so every user sees exactly the same text on the same day.
// Auth
Custom login + Google
Building custom authentication with cookie sessions and bcrypt, and integrating Google OAuth as an alternative login path, without relying on an external auth provider.
// Persistence
PostgreSQL without an ORM
Modeling and migrating the database with raw SQL and node-pg-migrate, without an ORM's abstraction layer, requires more manual care with every query.
// Testing
Real integration with Postgres
Writing integration tests that run against a real Postgres database via Docker, instead of mocks, to guarantee tested behavior matches production.
03
// Tools
Technical stack
Next.js 14
React 18
PostgreSQL
Tailwind CSS
SWR
Jest
Google OAuth
04
// Outcome
What I learned
01
Authentication from scratch: building cookie sessions, bcrypt password hashing, and Google OAuth in the same project teaches far more than reaching for a ready-made auth library.
02
Raw SQL has value: writing queries by hand, without an ORM, deepens understanding of how the database actually executes each operation.
03
Real integration tests are worth it: running against a real Postgres via Docker costs more setup, but catches issues a mock would never reveal.
04
Personal projects as a practice space: without a client deadline, I could explore architecture decisions more deliberately than on a commercial project.
← Previous Project
GeoMesh
Next Project →
Job Tracker