Skip to content

Pranav-Harad/Famnavi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

8 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

FamNavi 🌍

A real-time family tracker & communication app

FamNavi is a web application designed to keep families connected through real-time location tracking and group communication. Users can create or join family groups, monitor members' locations on an interactive Google Map, and communicate via real-time group chat.

With a modern, animated interface and a dark-themed starry background, FamNavi ensures the safety and connectivity of your loved ones in a fun and engaging way. πŸ‘¨β€πŸ‘©β€πŸ‘§β€πŸ‘¦βœ¨


✨ Dynamic Features ✨

FamNavi comes packed with powerful features to keep you connected and secure:

πŸ” User Authentication

  • Secure signup and login using bcrypt for robust password hashing.
  • Seamless session management via local storage.

🀝 Group Management

  • Effortlessly create family groups, each with a unique 6-digit join code.
  • Join existing groups or leave/delete groups with ease.

πŸ“ Real-Time Location Tracking

  • Location updates every 60 seconds using the browser's geolocation API.
  • Visualize all group members on an interactive Google Map with labeled markers.

πŸ’¬ Instant Group Chat

  • Real-time messaging powered by Socket.IO.
  • All messages are securely stored in MySQL for persistence.

🎨 Interactive & Responsive UI

  • Smooth, delightful animations with Framer Motion and Lottie.
  • A captivating starry, dark-themed background with a radial gradient.
  • Fully responsive design ensures a consistent experience on any device, thanks to Tailwind CSS.

πŸ“΄ Smart Offline Support

  • Locations are intelligently stored in local storage and automatically synced once connectivity is restored.

πŸš€ Tech Stack Under the Hood πŸš€

FamNavi is built with a robust and modern technology stack:

Frontend 🌐 (Client-Side Magic)

  • React βš›οΈ: Building dynamic and reactive user interfaces.
  • React Router πŸ›£οΈ: Navigating through the application with intuitive client-side routing.
  • Framer Motion 🎬: Bringing the UI to life with smooth, declarative animations (e.g., typing effects, robot movements).
  • Lottie πŸ€–: Integrating beautiful, lightweight animated robot graphics.
  • Tailwind CSS 🎨: Rapidly styling the application with utility-first CSS for a stunning, responsive design.
  • Google Maps API πŸ—ΊοΈ: Powering interactive maps for real-time location visualization.
  • Socket.IO Client πŸ’¬: Enabling instant, bidirectional communication for real-time chat.
  • Axios πŸ”„: Making efficient HTTP requests to the backend.

Backend πŸ–₯️ (Server-Side Power)

  • Express.js ⚑: The fast, unopinionated, minimalist web framework for building robust APIs.
  • MySQL πŸ—„οΈ: The reliable relational database storing all users, groups, locations, and messages.
  • Socket.IO πŸ“¨: Facilitating real-time, event-based communication for group chat.
  • bcrypt πŸ›‘οΈ: Securely hashing passwords to protect user credentials.
  • jsonwebtoken πŸ”‘: (Potential) Implementing secure, stateless authentication for API requests.
  • cors 🌐: Handling Cross-Origin Resource Sharing for seamless frontend-backend interaction.
  • dotenv βš™οΈ: Managing environment variables for sensitive configurations.

Database πŸ—ƒοΈ (Data at a Glance)

Database Name: family_tracker

Table Purpose
users Stores essential user information (id, email, password, fullname)
groups Manages group data (id, join_code, group_name, created_by)
group_members Links users to groups (group_id, user_id, joined_at)
locations Records user geographical data (user_id, latitude, longitude, updated_at)
messages Stores all group chat messages (id, group_id, user_id, content, sent_at)

πŸƒβ€β™€οΈ How to Use FamNavi πŸƒβ€β™‚οΈ

Getting started with FamNavi is simple and intuitive:

1. Sign Up / Log In πŸ”

Navigate to the landing page and either create a new account or log in with your existing credentials.

2. Create or Join a Group 🀝

  • Create: Give your group a name, and FamNavi will auto-generate a unique 6-digit join code for you.
  • Join: Use a friend's or family member's join code to instantly become part of their group.

3. Track Locations πŸ“

Grant browser geolocation permissions to securely share your location. Then, watch your family members appear on the interactive Google Map.

4. Chat Away! πŸ’¬

Open the chat modal within your group to send and receive real-time messages with everyone.


🌳 Project Structure 🌳

A clear overview of the FamNavi repository:

famnavi/
β”œβ”€β”€ client/ # Frontend 🌐
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ pages/
β”‚   β”‚   β”‚   β”œβ”€β”€ Landing.jsx     # Landing page 🏠
β”‚   β”‚   β”‚   └── Joinfamily.jsx  # Group management & map πŸ—ΊοΈ
β”‚   β”‚   β”œβ”€β”€ assets/           # Lottie animations πŸ€–
β”‚   β”‚   β”œβ”€β”€ App.js            # Main app with routes πŸ›€οΈ
β”‚   β”‚   β”œβ”€β”€ App.css           # App-specific styles 🎨
β”‚   β”‚   β”œβ”€β”€ index.js          # React entry point βš›οΈ
β”‚   β”‚   └── index.css         # Global styles with Tailwind 🎨
β”œβ”€β”€ server/ # Backend πŸ–₯️
β”‚   β”œβ”€β”€ routes/
β”‚   β”‚   β”œβ”€β”€ auth.js         # Auth routes πŸ”
β”‚   β”‚   β”œβ”€β”€ groups.js       # Group routes πŸ‘₯
β”‚   β”‚   β”œβ”€β”€ locations.js    # Location updates πŸ“
β”‚   β”‚   └── chat.js         # Chat routes πŸ’¬
β”‚   β”œβ”€β”€ db.js             # MySQL connection πŸ—„οΈ
β”‚   β”œβ”€β”€ index.js          # Backend entry point & Socket.IO πŸ“‘
β”‚   β”œβ”€β”€ .env              # Environment variables πŸ”§
β”‚   └── package.json      # Backend dependencies πŸ“¦
└── README.md             # Project documentation πŸ“œ

Potential Improvements πŸ’‘

Security πŸ”’

  • Implement JWT authentication for API requests.
  • Secure .env secrets using a secrets manager.
  • Add input validation & sanitization to prevent injection attacks.

Google Maps πŸ—ΊοΈ

  • Secure API key using environment variables.

Scalability πŸ“ˆ

  • Optimize Socket.IO for large groups.
  • Introduce Redis caching for frequent queries.

UX 🎨

  • Geofencing alerts for location-based events.
  • Improved mobile responsiveness.
  • Enhanced accessibility (ARIA labels).

Offline Support πŸ“΄

  • Queue multiple location updates for syncing.
  • Use service workers for better offline experience.

Contributing 🀝

  1. Fork the repository.
  2. Create a feature branch:
    git checkout -b feature/your-feature
  3. Commit your changes:
    git commit -m 'Add your feature'
  4. Push to the branch:
    git push origin feature/your-feature
  5. Open a pull request.


Author πŸ‘¨β€πŸ’»

Made with ❀️ by Pranav
πŸ“§ Email: pranavharad64@gmail.com
πŸ”— LinkedIn: www.linkedin.com/in/pranav-harad-667070268

Keep your family safe and connected with FamNavi! 🌟

About

FamNavi: A family-oriented web app for real-time location tracking and group communication. Create/join family groups, track members on a Google Map, and chat in real-time using React, Express.js, MySQL, and Socket.IO. Features a modern, animated UI with a starry background and Tailwind CSS styling. πŸŒπŸ‘¨β€πŸ‘©β€πŸ‘§β€πŸ‘¦πŸ’¬

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors