A beautiful, modern documentation site built with React 18 and TailwindCSS 3.3 for Cost Katana - the world's first AI-powered cost optimization platform.
- ⚡ Lightning Fast: Built with Vite for instant HMR and optimized builds
- 🎨 Beautiful UI: Modern design with TailwindCSS 3.3
- 🌙 Dark Mode: Automatic dark mode support with system preference detection
- 📱 Responsive: Mobile-first design that works on all devices
- 🔍 Smart Search: Fuzzy search powered by Fuse.js with keyboard shortcuts
- 📝 Markdown Support: Full markdown rendering with syntax highlighting
- ✨ Animations: Smooth transitions with Framer Motion
- 🎯 SEO Optimized: React Helmet for meta tags and SEO
- 📊 Code Highlighting: Beautiful code blocks with copy functionality
- 🔥 Hot Toast: Elegant notifications with react-hot-toast
- React 18: Latest React with concurrent features
- TypeScript: Type-safe development
- TailwindCSS 3.3: Utility-first CSS framework
- Vite: Next generation frontend tooling
- React Router v6: Client-side routing
- Framer Motion: Production-ready animations
- React Markdown: Markdown rendering with plugins
- Fuse.js: Lightweight fuzzy-search library
# Install dependencies
npm install
# Start development server
npm run dev
# Build for production
npm run build
# Preview production build
npm run previewdocs/
├── src/
│ ├── components/ # Reusable components
│ │ ├── Layout.tsx # Main layout with sidebar
│ │ ├── SearchModal.tsx # Global search functionality
│ │ ├── MarkdownContent.tsx # Markdown renderer
│ │ └── ...
│ ├── pages/ # Documentation pages
│ │ ├── HomePage.tsx # Landing page
│ │ ├── getting-started/ # Getting started section
│ │ ├── features/ # Features documentation
│ │ ├── api/ # API documentation
│ │ └── ...
│ ├── utils/ # Utility functions
│ ├── App.tsx # Main app component
│ ├── main.tsx # Entry point
│ └── index.css # Global styles with Tailwind
├── public/ # Static assets
├── tailwind.config.js # Tailwind configuration
├── vite.config.ts # Vite configuration
└── package.json # Dependencies and scripts
Edit tailwind.config.js to customize the color scheme:
theme: {
extend: {
colors: {
primary: {
// Your custom primary colors
}
}
}
}- Create a new component in
src/pages/ - Add the route in
src/App.tsx - Update navigation in
src/components/Layout.tsx
Pages can use embedded markdown or load from external files:
import MarkdownContent from '../components/MarkdownContent';
const MyPage = () => {
const content = `# My Documentation`;
return <MarkdownContent content={content} />;
};- Automatic system preference detection
- Manual toggle in header
- Persisted in localStorage
- Global fuzzy search
- Keyboard navigation
- Instant results
- Categories and filtering
- Syntax highlighting for multiple languages
- One-click copy functionality
- Dark theme for better readability
- Mobile-first approach
- Collapsible sidebar on mobile
- Touch-friendly navigation
- Optimized for all screen sizes
- Hamburger menu for navigation
- Swipe gestures support
- Optimized touch targets
- Fast loading on mobile networks
- Code splitting with React.lazy
- Route-based chunking
- Optimized images
- Minimal bundle size
- Fast initial load
# Run development server
npm run dev
# Type checking
npm run type-check
# Linting
npm run lint
# Format code
npm run formatEach page includes:
- Custom title and description
- Open Graph tags
- Twitter cards
- Canonical URLs
- Structured data
vercelnetlify deploy --prodFROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
CMD ["npm", "run", "preview"]- Fork the repository
- Create your feature branch
- Commit your changes
- Push to the branch
- Open a pull request
MIT License - see LICENSE file for details
Built with ❤️ by the Cost Katana team
- Website: costkatana.com
- GitHub: github.com/Hypothesize-Tech/cost-katana
- Support: support@costkatana.com