πŸ©ΈπŸ‘¦πŸΌ Bloodboy

July 9, 2026 Β· View on GitHub

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

πŸ‘‰ Try it live at bloodboy.report πŸ‘ˆ

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

CommandDescription
npm run devStart development server
npm run buildBuild for production
npm run previewPreview production build
npm run typecheckRun TypeScript type checking
npm run lintRun ESLint
npm run lint:fixFix 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