Skip to content

Latest commit

 

History

124 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🩸👦🏼 Bloodboy

Track and visualize your blood test results over time with AI-powered data extraction

Upload your reports, extract biomarkers, and track changes over time — right in your browser.

License: AGPL-3.0 TypeScript React Open Source

💎 Core Values

  • Open Source - Free and open source software under AGPL-3.0
  • Privacy First - Everything stays on your device
  • No Subscriptions - Free for personal use, forever
  • You Own Your Data - Export and backup anytime
  • Any Biomarkers - Supports extracting and tracking any biomarkers with any units

✨ Features

  • PDF Upload - Drag & drop blood test PDFs for automatic data extraction
  • Built-in PDF Viewer - View uploaded documents directly in the app
  • File Organization - Organize your files and keep them in one place near to extracted values
  • AI-Powered - OpenAI integration for intelligent biomarker extraction
  • Unit Converter - Automatic unit conversion
  • Data Visualization - Interactive charts and trend analysis
  • Anomaly Detection - Filter biomarkers with strong fluctuations between tests
  • Local Storage - All data stored locally using IndexedDB
  • Google Drive Backups - Optional browser-based two-way backup sync with a latest file and dated history
  • Professional Tables - Sorting, filtering, and inline editing with AG-Grid
  • Saved Filters - Save and quickly apply custom filter combinations
  • Modern UI - Clean interface built with AntDesign and Tailwind CSS
  • Import/Export - Backup and restore your data anytime

🖼️ Screenshots

Upload

Upload

Dashboard

Dashboard

Charts

Charts

🚀 Getting Started

Prerequisites

  • Node.js 18+ and npm

Installation

npm install

Development

npm run dev

Build

npm run build

Scripts

Command Description
npm run dev Start development server
npm run build Build for production
npm run preview Preview production build
npm run typecheck Run TypeScript type checking
npm run lint Run ESLint
npm run lint:fix Fix ESLint issues

🛠️ Tech Stack

  • React 19 - UI library
  • TypeScript 5 - Type safety
  • Vite 6 - Build tool
  • Tailwind CSS 3 - Styling
  • AntDesign 5 - UI components
  • AG-Grid 32 - Data tables
  • Dexie - IndexedDB wrapper
  • OpenAI - PDF parsing

📁 Project Structure

src/
├── components/    # Reusable UI components
├── pages/        # Page components
├── db/           # Database models and services
│   ├── models/   # Data models
│   ├── services/ # Dexie instance
│   └── hooks/    # Database hooks
├── constants/    # App constants
├── types/        # TypeScript types
├── utils/        # Helper functions
├── openai/       # OpenAI integration
└── App.tsx       # Root component

🔧 Configuration

See .env.example for optional environment variables. The app works fully offline without any configuration.

To enable Google Drive backups, create a Google OAuth web client and set VITE_PUBLIC_GOOGLE_CLIENT_ID. Google Drive sync is two-way: newer Drive backups are restored into the browser, and newer local data is uploaded back to Drive. Backups are stored in Google Drive as:

Bloodboy Backups/
├── latest/
│   └── bloodboy_db_backup_latest.json
├── history/
│   └── YYYY/
│       └── MM/
│           └── bloodboy_db_backup_<timestamp>.json
└── bloodboy_backup_manifest.json

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request or open an issue.

📧 Contact

For questions or feedback, reach out at yashugaev@gmail.com

📄 License

Licensed under AGPL-3.0 - free and open source software.


Made with ❤️ and 🩸 for better health tracking