A modern, interactive web application for browsing and analyzing fly behavioral experiment data from split-GAL4 fly lines. Built with Next.js, TypeScript, and Tailwind CSS.
- Home Page: Overview of all fly lines with experiment counts and key metrics
- Fly Line Details: Detailed view of experiments for each GAL4 driver line
- Experiment View: Interactive plots, videos, and comprehensive behavioral data
- Data Browser: Searchable table of behavioral metrics across experiments
- Comparison Tool: Side-by-side experiment comparisons
- Glossary: Comprehensive definitions of behavioral terms and metrics
- Framework: Next.js 15 with App Router
- Styling: Tailwind CSS + shadcn/ui components
- Language: TypeScript
- Charts: Recharts for data visualization
- Icons: Lucide React
-
Install Dependencies
npm install
-
Development Server
npm run dev
-
Build for Production
npm run build npm start
The application expects data in the following structure:
public/data/disco_data/
├── Metadata.xml # Experiment metadata
├── QuickStats.txt # Behavioral statistics
└── disco_public/
├── plots/ # Analysis plots (PNG)
├── videos/ # Tracking videos (MP4)
├── gifs/ # Activation GIFs
└── Fly_Bowl_Glossary.txt # Term definitions
-
Prepare Data Directory
mkdir -p public/data/[experiment_name]
-
Required Files
Metadata.xml: Experiment metadataQuickStats.txt: Behavioral statisticsdisco_public/plots/: Analysis plotsdisco_public/videos/: Tracking videosdisco_public/gifs/: Activation period GIFs
-
Update Data Loader Modify
src/lib/data-loader.tsto include new experiment directories
-
Connect Repository
- Import project to Vercel
- Deploy automatically on push
-
Manual Deployment
npm run build # Deploy .next directory
- Build Settings
- Build command:
npm run build - Publish directory:
.next
- Build command:
-
Enable Static Export Uncomment lines in
next.config.ts:output: 'export', trailingSlash: true, distDir: 'out',
-
Build and Deploy
npm run build # Deploy contents of 'out' directory
src/
├── app/ # Next.js app router pages
│ ├── page.tsx # Home page
│ ├── fly-lines/ # Fly line pages
│ ├── data-browser/ # Data browser
│ ├── compare/ # Comparison tool
│ └── glossary/ # Glossary page
├── components/ # Reusable components
│ ├── ui/ # shadcn/ui components
│ ├── navigation.tsx # Main navigation
│ └── fly-line-card.tsx # Fly line display card
└── lib/ # Utilities and data processing
├── types.ts # TypeScript interfaces
├── data-parser.ts # XML and data parsing
└── data-loader.ts # Data loading logic
- Create page in
src/app/[page-name]/page.tsx - Add to navigation in
src/components/navigation.tsx
- Modify
src/app/globals.cssfor global styles - Use Tailwind classes for component styling
- Customize theme with shadcn/ui
- Update
src/lib/data-loader.tsfor new data sources - Modify
src/lib/types.tsfor new data structures - Extend
src/lib/data-parser.tsfor new file formats
- Chrome/Edge 90+
- Firefox 90+
- Safari 14+
MIT License
For questions or issues, create a GitHub issue or check the documentation.
- andy and claude for Branson lab mock-up