A MERN stack interactive paleontological field map.
Bridging science and curiosity with an immersive digital field journal where fossils regain their place in the world.
Want to go further? Register to add your own finds and build your personal digital field log.
DinoLog is built for researchers, amateur paleontologists, and enthusiasts to explore and record fossil discoveries. Inspired by field notebooks and geological maps, it combines scientific accuracy with archival aesthetics.
It offers an immersive digital field journal where fossils are restored to their geographic context and every site reveals part of Earthβs ancient story.
π FrontβEnd
- πΊοΈ Interactive Map
Discover dinosaur localities with custom markers, expeditionβstyle textures, and popups showing specimen details. - π Add & Edit Discoveries
Floating action button and popup edit controls let loggedβin users add or update fossil records. - π Search & Filter
Clientβside search bar filters fossils by name, species, or description for instant results. - π€ User Authentication Modal
Glassβstyle overlay with login/register forms integrated with JWT authentication. - π‘οΈ Type Safe Data Model
Discovery shape enforced with TypeScript interfaces for predictable rendering and maintainability. - π± Responsive Design
Layout adapts seamlessly to mobile devices, ensuring the app is usable on phones and tablets. - π¨ Archival Aesthetics
CSS overlays, textures, and expeditionβstyle theming for immersive UI.
βοΈ Back-End
- π JWT Authentication with Passport
Secure login/register routes, tokenβbased session management, and protected endpoints. - ποΈ MongoDB + Mongoose Models
Schemaβbased fossil records with validation for coordinates, species, and metadata. - π Multer File Uploads
Handles fossil photo uploads, storing images in the uploads/ directory and serving them statically. - π RESTful API Routes
/api/authfor authentication and/api/discoveriesfor CRUD fossil operations. - π Logging & Middleware
Morgan for request logging, CORS for crossβorigin access, and bodyβparser/Express JSON for request handling. - π‘οΈ Ownership Enforcement
Edit and delete routes restricted to the user who created the discovery. - β‘ Error Handling
Consistent JSON responses with success/error keys for reliable frontend integration.
- React
- TypeScript
- CSS
- Leaflet / ReactβLeaflet
- React Router
- ReactβToastify
- Context API
- Node.js + Express
- MongoDB + Mongoose
- Passport (JWT strategy)
- Multer
- Morgan
- CORS
- Dotenv
assets/
client/
βββ public/
β βββ images/
β βββ index.html
βββ src/
β βββ assets/
β βββ components/
β β βββ AddDiscoveryForm.tsx
β β βββ AuthModal.tsx
β β βββ EditDiscoveryForm.tsx
β β βββ Footer.tsx
β β βββ Header.tsx
β β βββ HeroSection.tsx
β β βββ MapSection.tsx
β βββ context/
β β βββ AuthContext.tsx
β βββ pages/
β β βββ HomePage.tsx
β β βββ MyFossilsPage.tsx
β βββ App.tsx
β βββ index.tsx
β βββ App.css
β βββ index.css
config/
models/
routes/
uploads/
server.js- Wikipedia
- The Paleobiology Database
- Ancient Earth Globe
- Geological maps, expedition journals, and paleontology field notes
git clone https://github.com/Do0ky/DinoLog.git
cd DinoLog
npm install
npm start- π§ Advanced map filters (epoch, formation, location)
- π¦ Species Page Expansion (connect popup to profiles similar to DinoFinder)
- βΏ Accessibility audit and improvements (including more descriptive ARIA labels for screen readers)
- ποΈ Enhanced "My Fossils" Page with gallery view, miniβmap of personal discoveries, and quick edit/delete controls
Created by:
- Claire Peyre