Upload a raw DNA data export from a consumer testing service and get a personalized report of health, trait, drug-response, and ancestry findings — matched against a curated local database of 10,600+ SNPs, with live SNPedia lookups for anything not already cached locally.
Everything runs locally: uploaded files are parsed, matched, and deleted immediately after analysis. Nothing is stored server-side.
- Drag-and-drop upload for raw DNA files (
.txt,.csv,.zip) - Multi-format parser — supports 23andMe, AncestryDNA, MyHeritage, and FamilyTreeDNA raw data exports
- Local SNP database — 10,600+ curated entries across health (9.5k), ancestry (400), trait (550), and drug-response (130) categories, merged from curated research data and SNPedia
- Live SNPedia fallback for SNPs not yet in the local database, with single and batch lookup
- Downloadable HTML report with Chart.js visualizations, generated client-side from your results — shareable as a standalone file
- Results sorted by significance (magnitude) within each category
- Frontend: Angular (standalone components), served on its own dev server
- Backend: Node.js / Express, with Multer for uploads and csv-parse for file parsing
- Data: Local JSON/JS SNP database + SNPedia API integration
npm run install:all # installs root, backend, and frontend dependencies
npm start # runs backend and frontend concurrentlyThis starts the Express API and the Angular dev server together. Open the frontend URL printed in the console and upload a raw DNA export to generate a report.
backend/
src/
routes/dna.js # /api/dna/analyze, /lookup, /batch-lookup, /database, /report
services/dnaParser.js # format detection + parsing (23andMe/Ancestry/MyHeritage/FTDNA)
services/snpediaService.js
services/reportGenerator.js # standalone HTML report generation
data/snpDatabase.js # curated local SNP database
frontend/
src/app/
components/upload/ # drag-and-drop file upload
components/results/ # findings display
services/dna.service.ts
This tool is for educational and informational purposes only. It is not a substitute for professional medical advice, diagnosis, or treatment. Consult a qualified healthcare provider or genetic counselor before making any health decisions based on these results.