A personal relationship management app that helps you cultivate and strengthen your most meaningful connections. By providing a clear, visual guide to your social interactions, it helps you understand the emotional quality of your relationships and intentionally nurture the ones that truly matter.
Visit the app: https://inner-orbit-app-2024.web.app
- Focus on the people who are most important to you
- Limited to 15 close friends (based on Dunbar's number research)
- Manually add individuals to your network
- Add a name initially and fill in more details later
- Ensure you're tracking meaningful relationships rather than a cluttered contact list
- Effortless logging of social interactions
- Specify interaction type: messages, calls, FaceTime, or in-person meetings
- Rate energy levels on a 0-10 scale (very depleting to very energizing)
- Optional duration tracking (seconds, minutes, hours, days, weeks)
- Visual representation of your emotional experience over time
- Graph plots energy levels against timeline
- Spot patterns and emotional turbulence
- Identify what makes relationships flourish or disconnect
- Interactive dots for quick editing of past interactions
- Interactive network graph showing your relationship ecosystem
- Network Mode: All contacts positioned by recency and interaction frequency
- Location Mode: Separates local vs non-local contacts with visual boundary
- Smart positioning: closer contacts = more recent interactions + higher frequency
- Color-coded energy levels: green (energizing) to red (depleting)
- Hover tooltips with detailed contact information
- Location Mode Note: Currently optimized for California Bay Area users. If you live in another state, please request a feature update to customize the location detection for your region.
- Firebase Authentication with Google Sign-In
- User-specific data isolation
- Real-time synchronization
- Offline capability with localStorage fallback
- Frontend: React 18 with TypeScript
- Styling: Tailwind CSS with custom glass morphism effects
- Charts: Recharts for relationship timeline visualization
- Icons: Lucide React
- Date Handling: date-fns
- Backend: Firebase Firestore
- Authentication: Firebase Auth
- Hosting: Firebase Hosting
- Storage: Hybrid system (Firebase + localStorage fallback)
- Node.js (v18 or higher)
- npm or yarn
- Firebase account
-
Clone the repository
git clone <your-repo-url> cd networkproject
-
Install dependencies
npm install
-
Set up Firebase
- Create a new Firebase project at Firebase Console
- Enable Firestore Database
- Enable Authentication (Google Sign-In)
- Create a web app and get your configuration
-
Configure environment variables
cp .env.example .env
Fill in your Firebase configuration in
.env:REACT_APP_FIREBASE_API_KEY=your_api_key_here REACT_APP_FIREBASE_AUTH_DOMAIN=your_project_id.firebaseapp.com REACT_APP_FIREBASE_PROJECT_ID=your_project_id REACT_APP_FIREBASE_STORAGE_BUCKET=your_project_id.firebasestorage.app REACT_APP_FIREBASE_MESSAGING_SENDER_ID=your_messaging_sender_id REACT_APP_FIREBASE_APP_ID=your_app_id REACT_APP_FIREBASE_MEASUREMENT_ID=your_measurement_id_optional
-
Start development server
npm start
-
Build for production
npm run build
- Go to Firebase Console
- Click "Add project"
- Enter project name:
inner-orbit-app-2024 - Follow the setup wizard
- In Firebase Console, go to "Firestore Database"
- Click "Create database"
- Choose "Start in test mode" (we'll add security rules later)
- Select a location (us-central1 recommended)
- Go to "Authentication" in Firebase Console
- Click "Get started"
- Go to "Sign-in method" tab
- Enable "Google" provider
- Add your authorized domain
firebase deploy --only firestore:rules- Sign In: Use Google Sign-In to access your account
- Add Contacts: Click "Add Contact" to add people to your network
- Log Interactions: Click the "+" button on contact cards to log interactions
- View Timeline: Click on a contact to see your relationship timeline
- Edit Interactions: Click on timeline dots to edit past interactions
- All data is user-specific and isolated
- Firebase security rules ensure users can only access their own data
- API keys are stored in environment variables
- No sensitive data is committed to the repository
src/
├── components/ # React components
│ ├── AddContactModal.tsx
│ ├── AddInteractionModal.tsx
│ ├── ContactCard.tsx
│ ├── ContactDetail.tsx
│ ├── ContactList.tsx
│ ├── EditContactModal.tsx
│ ├── EditInteractionModal.tsx
│ ├── Header.tsx
│ ├── LoadingSpinner.tsx
│ ├── LoginPage.tsx
│ └── StorageStatus.tsx
├── config/
│ └── firebase.ts # Firebase configuration
├── services/
│ ├── authService.ts # Authentication service
│ ├── firebaseService.ts # Firebase operations
│ ├── hybridStorage.ts # Hybrid storage system
│ └── storage.ts # Local storage operations
├── types/
│ └── index.ts # TypeScript interfaces
├── App.tsx # Main app component
└── index.tsx # App entry point
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with React and Firebase
- Icons from Lucide React
- Charts powered by Recharts
- Styled with Tailwind CSS
Inner Orbit - Nurturing meaningful relationships, one interaction at a time. 🌟