A comprehensive Rails 8 application for managing, analyzing, and providing AI-accessible APIs for all your personal data. This self-hosted platform gives you complete control over your financial records, health data, communications, and more.
Personal Data Server is designed to be your central hub for all personal data management. It provides:
- Secure Data Storage: SQLite-based storage with full privacy control
- Rich Web Interface: Modern, responsive UI with dark/light mode support
- Comprehensive APIs: RESTful JSON endpoints designed for AI model integration
- Data Import Tools: Support for major export formats from popular services
- Analytics & Insights: Built-in visualization and analysis tools
- Framework: Ruby on Rails 8.0+ with modern conventions
- Database: SQLite (development/small deployments), PostgreSQL (production)
- Frontend: Tailwind CSS with Turbo for enhanced UX
- Authentication: Devise with custom user management
- Background Jobs: Solid Queue for data processing
- Deployment: Docker-ready with Kamal configuration
- Bank Statements: Transaction history with categorization and account summaries
- Investment Portfolios: Fidelity, Principal 401k, and other investment tracking
- Social Security Earnings: Complete SSA earnings history and projections
- Amazon Orders: Purchase history with trend analysis
- Duplicate Detection: Smart duplicate transaction identification and removal
- Medical Records: HL7 CCD/CCDA XML import and parsing
- Medications: Current and historical medication tracking
- Allergies: Comprehensive allergy management
- Vital Signs: Weight, blood pressure, and other health metrics
- Medical Problems: Condition tracking and history
- Immunizations: Vaccination records and scheduling
- Healthcare Encounters: Visit history and provider information
- Email Archives: MBOX import with full message history
- LinkedIn Messages: Professional networking communication history
- Contacts: VCard import and contact management
- Calendar Events: ICS import and event tracking
- Digital Purchases: App store, digital content tracking
- Reading History: Goodreads integration (planned)
- Media Consumption: YouTube, streaming service history (planned)
- Dashboard: Unified overview of all data categories
- Responsive Design: Mobile-friendly with Tailwind CSS
- Dark/Light Mode: Full theme support
- Advanced Filtering: Smart search and filtering across all data types
- Data Visualization: Charts and graphs for financial and health trends
- Import Wizards: Step-by-step data import processes
- RESTful Design: Clean, consistent API endpoints
- AI-Optimized: Structured for LLM and AI model consumption
- Comprehensive Coverage: Access to all data categories
- Error Handling: Robust error responses and validation
- Authentication: Secure access control
- Smart Imports: Automatic duplicate detection and data validation
- Format Support: CSV, XML, MBOX, VCard, ICS, and more
- Data Integrity: Comprehensive validation and error handling
- Privacy First: All data remains on your server
- Ruby 3.4+
- Rails 8.0+
- SQLite 3+ (or PostgreSQL for production)
- Node.js (for asset compilation)
# Clone the repository
git clone https://github.com/jacebenson/personal-data-server.git
cd personal-data-server
# you may need to install ruby on rails... # for me that's just mise install# Install dependencies
bundle install
npm install # if using npm for frontend assets# Setup database
rails db:create db:migrate db:seed
# Start the development server
bin/dev # Starts Rails server with asset compilation# Using Docker with Kamal
kamal setup
# Or traditional deployment
RAILS_ENV=production rails db:migrate
RAILS_ENV=production rails assets:precompile
RAILS_ENV=production rails serverBank Statements:
- Export CSV from your bank (Ally Bank format supported)
- Visit
/financial/bank_statementsand upload - Automatic duplicate detection and categorization
Investment Data:
- Fidelity: Export portfolio data as CSV
- Principal 401k: Download transaction history
- Upload at
/financial/fidelity_uploador/financial/principal_upload
Social Security:
- Download XML from SSA.gov
- Import at
/personal/social_security_upload
- Medical Records:
- Request HL7 CCD/CCDA files from healthcare providers
- Upload at
/health/import - Automatic parsing of medications, allergies, problems, etc.
Email Archives:
- Export MBOX files from Gmail, Outlook, etc.
- Import at
/personal/emails_upload
Contacts:
- Export VCard files from phone/email provider
- Import at
/personal/contacts_upload
Calendar:
- Export ICS files or add calendar URLs
- Import at
/personal/calendar_upload
http://localhost:3000/api/v1
Include authentication headers as required by your Rails authentication system.
GET /api/v1/overview # Complete data summary
GET /api/v1/financial # Financial overview
GET /api/v1/financial/bank_statements # All transactions
GET /api/v1/financial/investments # Investment portfolio
GET /api/v1/financial/social_security_earnings # SSA data
GET /api/v1/financial/amazon_orders # Purchase history
GET /api/v1/health # Health overview
GET /api/v1/health/medications # Medication history
GET /api/v1/health/allergies # Allergy information
GET /api/v1/health/vital_signs # Health metrics
GET /api/v1/health/problems # Medical conditions
GET /api/v1/personal # Personal data overview
GET /api/v1/personal/communications # Messages and emails
GET /api/v1/personal/contacts # Contact directory
GET /api/v1/personal/calendar_events # Calendar data
{
"success": true,
"data": {
"summary": "...",
"records": [...],
"metadata": {...}
},
"message": "Optional message"
}# Run full test suite
rails test# Run specific test categories
rails test test/controllers/
rails test test/models/
rails test test/integration/# Development
RAILS_ENV=development
DATABASE_URL=sqlite3:storage/development.sqlite3
# Production
RAILS_ENV=production
DATABASE_URL=postgresql://user:pass@localhost/personal_data_server
SECRET_KEY_BASE=your_secret_key- Modify
config/application.rbfor Rails configuration - Update
config/routes.rbfor custom routing - Configure authentication in
config/initializers/devise.rb
- Local First: All data stored locally on your server
- No Third-Party Access: No data sharing with external services
- Encrypted Storage: Database encryption options available
- Access Control: User authentication and authorization
- Data Validation: Comprehensive input validation and sanitization
- 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
- Financial: Ally Bank CSV, Fidelity CSV, Principal CSV, SSA XML
- Health: HL7 CCD/CCDA XML, custom health data formats
- Communications: MBOX (Gmail, Outlook), LinkedIn exports
- Contacts: VCard from iPhone, Google, Outlook
- Calendar: ICS files, calendar URLs
- Shopping: Amazon order history CSV
- Google/Gmail: Google Takeout
- LinkedIn: Account Settings > Privacy > Getting a copy of your data
- Amazon: Your Account > Download order reports
- Healthcare: Request from providers (usually Patient Portal)
- Social Security: SSA.gov > my Social Security account
- Enhanced data visualization dashboards
- Machine learning insights and predictions
- Additional data source integrations
- Mobile app companion
- Advanced search and query capabilities
- Data export and backup tools
- Multi-user support for families
For detailed development guidelines, architecture documentation, and additional resources:
- Development Guidelines - Comprehensive development standards and conventions
- Documentation - Additional project documentation including MCP integration guides
- API Documentation - Available via the built-in API explorer at
/api/docs
This project is licensed under the MIT License - see the LICENSE file for details.
- Documentation: Check the wiki for detailed guides
- Issues: Report bugs via GitHub Issues
- Discussions: Join GitHub Discussions for questions and ideas
Personal Data Server - Take control of your data, enhance your privacy, and build a comprehensive view of your digital life.