Personal portfolio website showcasing coding projects and photography. Features semantic search for projects, an interactive photo gallery with location-based filtering, and a custom admin interface.
- Framework - Next.js 15 (App Router)
- Styling - Tailwind CSS
- Search - Custom BM25 implementation for semantic project search
- Data - JSON-based storage with pre-computed embeddings
Install dependencies:
npm installRun the development server:
npm run devOpen http://localhost:3000 to view the site.
/src/app- Next.js app router pages/code- Projects page with search/photography- Photo gallery/admin- Admin panel for photo management
/src/components- React components/src/utils- Search algorithms and utilities/scripts- Data processing scripts/public/data- JSON data files and embeddings
- Browse coding projects with detailed information
- Semantic search using BM25 ranking algorithm
- Filter by technologies and categories
- Modal view with project details and links
- Interactive photo grid with lightbox
- Location-based filtering with visual map
- Photo metadata and captions
- Country-based organization
- Edit photo captions and descriptions
- Save changes directly to data files
- Preview photos before publishing
Process and generate data:
node scripts/process-photos.js- Process photo metadata and generate embeddingsnode scripts/process-projects.js- Generate project search embeddingsnode scripts/regenerate-captions.js- Regenerate photo captionsnode scripts/view-descriptions.js- View current photo descriptions
The site uses JSON files in /public/data for content management:
projects.json- Project information and metadataphotos.json- Photo metadata and locationsproject-embeddings.json- Pre-computed search embeddingstechStack.json- Technology badges and information