A modern, static web application for CiliaMiner - an integrated database for ciliopathy genes and ciliopathies. Built with Next.js, TypeScript, and Tailwind CSS.
- Gene Search: Search for ciliopathy-related genes with autocomplete
- Ciliopathy Search: Find diseases and their associated genes
- Interactive Visualizations: Charts and graphs for data analysis
- Data Export: Download search results in CSV or JSON format
- Responsive Design: Mobile-first approach with modern UI
- Static Generation: Perfect for GitHub Pages deployment
- Framework: Next.js 14 with App Router
- Language: TypeScript
- Styling: Tailwind CSS
- Charts: Recharts
- Icons: Lucide React
- Search: Fuse.js for fuzzy searching
- Data Processing: Client-side CSV/JSON handling
- Node.js 18+
- npm or yarn
- Clone the repository:
git clone <your-repo-url>
cd ciliaminer-nextjs- Install dependencies:
npm install
# or
yarn install- Run the development server:
npm run dev
# or
yarn dev- Open http://localhost:3000 in your browser.
ciliaminer-nextjs/
├── src/
│ ├── app/ # Next.js app router pages
│ │ ├── page.tsx # Homepage
│ │ ├── layout.tsx # Root layout
│ │ └── globals.css # Global styles
│ ├── components/ # React components
│ │ ├── Layout.tsx # Main layout with navigation
│ │ ├── SearchComponents.tsx # Search inputs and results
│ │ └── ChartComponents.tsx # Charts and visualizations
│ ├── lib/ # Utility functions
│ │ ├── utils.ts # General utilities
│ │ └── search.ts # Search functionality
│ ├── types/ # TypeScript type definitions
│ │ └── index.ts # Main type definitions
│ └── data/ # Data files (CSV/JSON)
├── public/ # Static assets
├── package.json # Dependencies and scripts
├── tailwind.config.js # Tailwind CSS configuration
├── next.config.js # Next.js configuration
└── tsconfig.json # TypeScript configuration
npm run dev- Start development servernpm run build- Build for productionnpm run start- Start production servernpm run lint- Run ESLintnpm run export- Export static site
- Create a new file in
src/app/(e.g.,ciliopathy-classification/page.tsx) - Export a default React component
- Use the
Layoutcomponent for consistent styling
- Create a new file in
src/components/ - Export your component
- Import and use in your pages
To integrate your actual CSV data:
- Convert CSV files to JSON format
- Place in
src/data/directory - Import and use in components
- Replace mock data with real data
- Build the project:
npm run build- The static files will be in the
out/directory - Push to GitHub and enable GitHub Pages
- Set source to the
out/directory
- Build the project:
npm run build- Deploy the
out/directory to your hosting provider
Update colors in tailwind.config.js:
theme: {
extend: {
colors: {
primary: '#FF4500', // Main brand color
secondary: '#74b3ce', // Secondary color
accent: '#bd552e', // Accent color
},
},
},- Global styles:
src/app/globals.css - Component-specific styles: Use Tailwind classes
- Custom CSS: Add to
globals.csswith@layerdirectives
- Static Generation: All pages are pre-rendered at build time
- Code Splitting: Automatic code splitting for optimal loading
- Image Optimization: Built-in Next.js image optimization
- Bundle Analysis: Use
@next/bundle-analyzerfor optimization
- Modern browsers (Chrome, Firefox, Safari, Edge)
- IE11+ (with polyfills if needed)
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
This project is licensed under the same license as the original CiliaMiner project.
For questions and support, please contact the Kaplan Lab or create an issue in the repository.
- Original CiliaMiner team
- Next.js team for the excellent framework
- Tailwind CSS for the utility-first CSS framework
- Recharts for the charting library