A personal assistant application that tracks and analyzes your digital activities across GitHub, YouTube, and local projects using AI-powered insights.
- 📊 Activity Tracking: Automatically sync activities from GitHub, YouTube playlists, and local Claude Code projects
- 🤖 AI-Powered Summaries: Daily activity analysis with priorities and insights using GPT-4
- 📱 Cross-Platform: React Native app for iOS, Android, and web
- 🔒 Secure: JWT authentication, encrypted credentials, and sandboxed file access
- 🎬 YouTube Integration: Track watched videos via playlist API (browser extension included)
- 📈 Activity Dashboard: Visualize your digital footprint with detailed statistics
- Node.js 18+
- Docker and Docker Compose
- Expo CLI (
npm install -g expo-cli
) - iOS Simulator (Mac only) or Android Emulator
# Navigate to backend directory
cd PersonalAssistant/backend
# Install dependencies
npm install
# Start PostgreSQL database
docker-compose up -d
# Create .env file
cp .env.example .env
# Edit .env with your configuration
# Initialize database
npm run db:push
# Start development server
npm run dev
# Navigate to frontend directory
cd PersonalAssistant
# Install dependencies
npm install
# Create .env file
echo "EXPO_PUBLIC_API_URL=http://localhost:3000" > .env
# Start Expo development server
npm start
- iOS: Press
i
in the Expo CLI or runnpm run ios
- Android: Press
a
in the Expo CLI or runnpm run android
- Web: Press
w
in the Expo CLI or runnpm run web
memory-bank/
├── PersonalAssistant/ # React Native frontend
│ ├── app/ # Expo Router screens
│ ├── components/ # Reusable components
│ ├── contexts/ # React contexts (Auth, Toast)
│ ├── lib/ # API client
│ └── stores/ # Zustand state management
├── PersonalAssistant/backend/ # Node.js backend
│ ├── src/
│ │ ├── controllers/ # Route handlers
│ │ ├── services/ # Business logic
│ │ ├── db/ # Database schema
│ │ └── middleware/ # Auth middleware
│ └── docker-compose.yml # PostgreSQL setup
└── PersonalAssistant/browser-extension/ # Chrome extension
- React Native + Expo
- TypeScript
- NativeWind (Tailwind CSS)
- Zustand (State Management)
- Expo Router (Navigation)
- Node.js + Express
- TypeScript
- PostgreSQL + Drizzle ORM
- JWT Authentication
- Azure OpenAI API
- Playwright (E2E)
- Jest (Unit)
# Run E2E tests
cd PersonalAssistant
npm run test:e2e
# Run E2E tests with UI
npm run test:e2e:ui
# Run unit tests
npm test
DATABASE_URL=postgresql://membank:membank123@localhost:5432/memory_bank
JWT_SECRET=your-secret-key
JWT_REFRESH_SECRET=your-refresh-secret
AZURE_OPENAI_API_KEY=your-key
AZURE_OPENAI_ENDPOINT=https://your-endpoint.openai.azure.com
AZURE_OPENAI_DEPLOYMENT_NAME=your-deployment
EXPO_PUBLIC_API_URL=http://localhost:3000
Due to YouTube API limitations, the app uses a playlist-based tracking approach:
- Install the browser extension from
/PersonalAssistant/browser-extension/
- Create a dedicated playlist for tracking (e.g., "Watch History Tracker")
- The extension automatically adds watched videos to your playlist
- The app syncs from this playlist to track your viewing history
# Modify schema in backend/src/db/schema.ts
cd PersonalAssistant/backend
npm run db:push # Push changes to database
npm run db:studio # Open database GUI
- Controllers:
backend/src/controllers/
- Services:
backend/src/services/
- Middleware:
backend/src/middleware/
- Screens:
app/
- Components:
components/
- API Client:
lib/api.ts
- State:
stores/
cd PersonalAssistant
docker-compose -f docker-compose.yml up -d
- JWT authentication with refresh tokens
- Rate limiting (100 requests/15 min)
- File system sandboxing
- Encrypted credential storage
- CORS protection
- Input validation and sanitization
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'feat: 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 Expo and React Native
- AI summaries powered by Azure OpenAI
- YouTube tracking inspired by privacy-conscious design