Skip to content

Morshedul-developer/keen-keeper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

56 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Keen Keeper 🌱

A friendship-tracking web app that helps you keep in touch with the people who matter β€” see who's overdue for a check-in, log calls/texts/video chats, and visualize your interaction habits over time.

πŸ“„ Description

Keen Keeper is a personal relationship-management dashboard built with React. It lists your friends with a "days since last contact" status (on-track, almost due, or overdue) based on a custom contact goal for each person. From a friend's profile you can log a quick check-in (Call / Text / Video), see the interaction show up on a live Timeline, and track overall communication habits on an analytics page with a pie chart breakdown.

πŸ”— Live Project Link

https://keen-keeper-xi-five.vercel.app

πŸ› οΈ Main Technologies Used

  • React 19 – component-based UI
  • Vite – dev server & build tool
  • React Router v7 – client-side routing (createBrowserRouter)
  • Tailwind CSS v4 + DaisyUI – styling & UI components
  • Recharts – pie chart for interaction analytics
  • React Context API – global friends/interaction state
  • React Toastify – toast notifications on check-ins
  • React Spinners – loading states
  • React Icons – icon set throughout the UI

✨ Core Features

  • Friends dashboard (Home) – summary cards (total friends, on-track, need attention, interactions this month) plus a grid of all friends fetched from friends.json
  • Friend detail page – shows bio, tags, days since contact, goal (in days), next due date, and relationship status badge
  • Quick check-in – log a Call, Text, or Video interaction with one click; each logs a success toast and adds an entry to the timeline
  • Timeline page – chronological feed of all logged interactions, filterable by type (All / Call / Text / Video)
  • Friendship Analytics (Stats page) – donut/pie chart breaking down interactions by type using Recharts
  • Snooze / Archive / Delete controls on the friend detail view
  • Responsive navigation with a mobile hamburger menu
  • Custom 404 / error page for unmatched routes or unknown friend IDs

πŸ“¦ Dependencies

Production:

Package Version Purpose
react ^19.2.6 Core UI library
react-dom ^19.2.6 React DOM rendering
react-router ^7.17.0 Routing (createBrowserRouter)
@tailwindcss/vite ^4.3.0 Tailwind CSS Vite plugin
tailwindcss ^4.3.0 Utility-first CSS
daisyui ^5.5.23 Tailwind component library
react-icons ^5.6.0 Icon library
react-spinners ^0.17.0 Loading spinners
react-toastify ^11.1.0 Toast notifications
recharts ^3.8.1 Pie chart on the Stats page

Development:

Package Version Purpose
vite ^8.0.12 Build tool & dev server
@vitejs/plugin-react ^6.0.1 Vite React plugin
eslint ^10.3.0 Code linting
@eslint/js ^10.0.1 ESLint JS config
eslint-plugin-react-hooks ^7.1.1 React hooks lint rules
eslint-plugin-react-refresh ^0.5.2 React refresh lint rules
globals ^17.6.0 Global variables for ESLint
@types/react ^19.2.14 React type definitions
@types/react-dom ^19.2.3 React DOM type definitions

πŸš€ Getting Started (Run Locally)

Prerequisites

  • Node.js v18+
  • npm (comes with Node.js)

Steps

  1. Clone the repository

    git clone https://github.com/Morshedul-developer/keen-keeper.git
  2. Navigate into the project folder

    cd keen-keeper
  3. Install dependencies

    npm install
  4. Run the development server

    npm run dev
  5. Open in browser Vite will print a local URL in the terminal (usually http://localhost:5173) β€” open it there.

Other available scripts

Command Description
npm run dev Start the development server
npm run build Build the app for production
npm run preview Preview the production build locally
npm run lint Run ESLint checks

πŸ—‚οΈ Project Structure (high level)

src/
β”œβ”€β”€ assets/            # images (hero, logos)
β”œβ”€β”€ components/
β”‚   β”œβ”€β”€ footer/        # Footer
β”‚   β”œβ”€β”€ homePage/      # Banner, YourFriends
β”‚   β”œβ”€β”€ myNavLink/      # active NavLink wrapper
β”‚   β”œβ”€β”€ navBar/         # NavBar
β”‚   └── ui/             # FriendCard, SummaryCard, TimelineCard
β”œβ”€β”€ context/            # FriendsContext + Provider (global check-in state)
β”œβ”€β”€ hooks/              # useFriends (fetches /public/friends.json)
β”œβ”€β”€ layout/             # RootLayout
β”œβ”€β”€ pages/              # HomePage, TimeLine, Stats, FriendDetails, ErrorPage
β”œβ”€β”€ router/             # Routes.jsx (createBrowserRouter)
└── main.jsx
public/
β”œβ”€β”€ friends.json        # mock friends dataset
β”œβ”€β”€ call.png / text.png / video.png  # timeline event icons

πŸ”— Resources & Links

About

🀝 A personal relationship management app to track, log & analyze your meaningful connections β€” with timeline, interaction history & friendship analytics dashboard.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages