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. π¨βπ©βπ§βπ¦β¨
FamNavi comes packed with powerful features to keep you connected and secure:
- Secure signup and login using bcrypt for robust password hashing.
- Seamless session management via local storage.
- Effortlessly create family groups, each with a unique 6-digit join code.
- Join existing groups or leave/delete groups with ease.
- Location updates every 60 seconds using the browser's geolocation API.
- Visualize all group members on an interactive Google Map with labeled markers.
- Real-time messaging powered by Socket.IO.
- All messages are securely stored in MySQL for persistence.
- 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.
- Locations are intelligently stored in local storage and automatically synced once connectivity is restored.
FamNavi is built with a robust and modern technology stack:
- 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.
- 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 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) |
Getting started with FamNavi is simple and intuitive:
Navigate to the landing page and either create a new account or log in with your existing credentials.
- 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.
Grant browser geolocation permissions to securely share your location. Then, watch your family members appear on the interactive Google Map.
Open the chat modal within your group to send and receive real-time messages with everyone.
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 π
- Implement JWT authentication for API requests.
- Secure
.envsecrets using a secrets manager. - Add input validation & sanitization to prevent injection attacks.
- Secure API key using environment variables.
- Optimize Socket.IO for large groups.
- Introduce Redis caching for frequent queries.
- Geofencing alerts for location-based events.
- Improved mobile responsiveness.
- Enhanced accessibility (ARIA labels).
- Queue multiple location updates for syncing.
- Use service workers for better offline experience.
- Fork the repository.
- Create a feature branch:
git checkout -b feature/your-feature - Commit your changes:
git commit -m 'Add your feature' - Push to the branch:
git push origin feature/your-feature - Open a pull request.
Made with β€οΈ by Pranav
π§ Email: pranavharad64@gmail.com
π LinkedIn: www.linkedin.com/in/pranav-harad-667070268
Keep your family safe and connected with FamNavi! π