A modern web application showcasing Earth's most fascinating and unusual creatures, built with React, Vite, and managed through Decap CMS.
- Node.js 20.19.0+ (use
nvmto manage versions) - npm or yarn package manager
-
Clone and install dependencies:
git clone <repository-url> cd bestiary npm install
-
Start development server:
npm run dev
Open http://localhost:5173 in your browser.
-
Access CMS for content management:
npm run serve:public
Then visit http://localhost:8080/admin to manage content.
This project uses Decap CMS for content management, allowing you to:
- ✅ Add/edit animal categories - Create new animal classifications
- ✅ Add/edit animals - Add detailed animal profiles with images
- ✅ Manage homepage content - Update site messaging
- ✅ Version control - All changes are tracked in Git
src/data/
├── categories/ # Animal category definitions
│ ├── mammals.json
│ ├── birds.json
│ └── ...
└── animals/ # Individual animal profiles
├── african-elephant.json
├── vampire-squid.json
└── ...
-
Via CMS (Recommended):
- Run
npm run serve:public - Go to
http://localhost:8080/admin - Use the intuitive interface to add/edit content
- Run
-
Via JSON files (Advanced):
- Create new JSON files following existing structure
- Files are automatically discovered by the application
npm run dev- Start Vite development servernpm run build- Build for productionnpm run preview- Preview production build locallynpm run serve:public- Serve public folder for CMS accessnpm run lint- Run ESLint
- Frontend: React 19 + TypeScript
- Build Tool: Vite 7.x
- Styling: Tailwind CSS 4.x
- Routing: React Router DOM
- CMS: Decap CMS (formerly Netlify CMS)
- Content: JSON-based data files
bestiary/
├── public/
│ └── admin/ # Decap CMS configuration
├── src/
│ ├── components/ # Reusable React components
│ ├── features/ # Feature-based modules
│ │ ├── Animal/ # Animal-related logic
│ │ └── AnimalCategory/ # Category-related logic
│ ├── data/ # Content JSON files
│ └── pages/ # Page components
└── tailwind.config.js # Styling configuration
- Dynamic Content Loading - Uses Vite's
import.meta.globfor automatic content discovery - Type-Safe - Full TypeScript support with proper interfaces
- Responsive Design - Mobile-first approach with Tailwind CSS
- SEO Ready - Structured data and semantic HTML
- Git-based CMS - All content changes are version controlled
- Create a new JSON file in
src/data/categories/ - Follow the
AnimalCategoryinterface structure - The filename becomes the category slug automatically
- Create a new JSON file in
src/data/animals/ - Follow the
Animalinterface structure - Reference existing category names exactly
- The filename becomes the animal slug automatically
Use these convenient imports:
~features/*→src/features/*@/*→src/*
-
Build the project:
npm run build
-
Deploy the
dist/folder to your hosting platform -
Configure CMS backend for your hosting provider (Netlify, GitHub, etc.)
Discover Earth's most extraordinary creatures! 🦅🐙🦎