Case Study: 'Last Checked In' PRM App
Published on November 13, 2025
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
