David Nana

David Nana

Digital Creator

Case Study: 'Last Checked In' PRM App

Published on November 13, 2025

ReactNode.jsPostgreSQLVercelRenderPWAJWTCSS Modules

Project Overview

1.1 Purpose & Vision

"Last Checked In" is a Personal Relationship Manager (PRM). Its core purpose is to be a private, intentional tool that empowers users to be more consistent and thoughtful in nurturing their personal and professional relationships. It provides each user with a secure, private account to manage their connections, combating the passive nature of social media by providing an active tool for connection.

1.2 Core Problem Solved

In a busy world, it's easy to lose touch with people we care about. This application solves that problem by providing a centralized, private dashboard for each user to:

  • Track the last time they connected with a specific person.
  • Set custom, flexible reminders for when to check in next.
  • Keep private, timestamped, and editable notes on conversations to remember important details.
  • Organize contacts with detailed information and a flexible tagging system.
  • Receive proactive push notifications for their own overdue check-ins.

1.3 Target User & Philosophy

The app is designed for individuals seeking a private tool to manage their social and professional connections. It operates on a philosophy of intentionality over passive engagement.

  • It is not a social network. All user data is sandboxed and for their eyes only.
  • It is proactive, not reactive. The app prompts the user to reach out.
  • It values quality over quantity, focusing on deepening existing relationships.

Feature Breakdown

2.1 User Accounts & Authentication

The application has been fundamentally re-architected into a full-featured, multi-user platform with a robust and secure account system.

  • Signup: Users can create a new, private account using an email and password. Passwords are salted and hashed using bcrypt.
  • Login: Registered users can log in to access their sandboxed data.
  • Session Management: The system uses JSON Web Tokens (JWTs) stored in the browser's localStorage to maintain user sessions.
  • Data Sandboxing: A user can only see and interact with the data they have created.
  • Logout: A logout button in the header allows users to securely terminate their session.

2.2 Core & Advanced Features (User-Specific)

  • Contact Management: Add, edit, and view contacts with their name and a custom check-in frequency.
  • Check-in System: Manually log a "check-in" to reset the reminder timer. Overdue contacts are visually highlighted.
  • Notes System: Add, edit, and view multiple, timestamped notes for each contact.
  • Expanded Contact Details: Store 'How We Met,' 'Key Facts,' and 'Birthday'.
  • Tagging System: A flexible, many-to-many tagging system.
  • Global Search: A search bar that filters contacts by name or note content.
  • Archive/Restore System: Archive contacts instead of permanently deleting them.
  • Multi-User Push Notifications: A daily scheduled backend job sends a single, dynamic summary push notification for each user's overdue contacts.
  • Agenda View with Recurring Events: A forward-looking summary of all upcoming check-ins for the next 30 days.
  • Granular & Intelligent Snooze: Granular options ("Tomorrow Morning", "3 Days", "1 Week") handled authoritatively on the backend.
  • First-Time User Onboarding: A one-time, two-page welcome modal introduces the app's core concepts and powerful organizational features.

Technical Architecture

3.1 Technology Stack

  • Frontend: React (Vite), React Router, JavaScript (ES6+), Axios, date-fns, Firebase SDK, react-hot-toast, vite-plugin-pwa, CSS Modules.
  • Backend: Node.js, Express.js, PostgreSQL, bcrypt, jsonwebtoken, node-mailjet, node-cron, Firebase Admin SDK, dotenv, express-rate-limit, zod.
  • Deployment:
    • Frontend: Vercel (as a Progressive Web App)
    • Backend: Render (Web Service)
    • Database: Render (PostgreSQL)
  • Development & Tooling:
    • IDE: Visual Studio Code with Prettier
    • Version Control: Git / GitHub
    • Database Management: DBeaver