Hexn is an open-source search project for building your own independent, privacy-focused search experience.
Hexn v1 deployed on Cloudflare : [hexnsearch.alihdtech.workers.dev].
Hexn v2 on Vercel : hexn.vercel.app.
- Nuxt 3, Vue 3, Tailwind CSS, DaisyUI
- Nuxt Content for topic pages with Custom weighted search from
content/search-data.json
- Node.js 18+
- pnpm (recommended) or npm
git clone https://github.com/alihd-tech/hexn.git
cd hexn
pnpm install
pnpm devOpen http://localhost:3000.
pnpm build
pnpm previewhexn/
├── app.vue
├── nuxt.config.ts
├── assets/css/main.css
├── components/
├── composables/useContentSearch.js
├── content/
│ ├── search-data.json
│ └── topics/
├── pages/
│ ├── index.vue
│ ├── search.vue
│ └── topics/[slug].vue
└── public/
- Routes are file-based from
pages/ - Topic content lives in
content/topics/*.md - Search results are loaded and scored on the client from
content/search-data.json
For larger datasets, move search to a Nitro API route under server/api/ and keep the UI unchanged.
flowchart LR
A[User enters query in pages/search.vue]
B[useContentSearch.js]
C[Load content/search-data.json]
D[Weighted scoring and filtering]
E[Sorted top results]
F[Search scope components render results]
A --> B --> C --> D --> E --> F
flowchart LR
A[User enters query in UI]
B[Client calls /api/search]
C[Nitro handler in server/api/search.ts]
D[(Search backend: DB / Elasticsearch / SaaS)]
E[Ranked and paginated response]
F[UI renders results + filters]
A --> B --> C --> D --> C --> E --> F
- Add new pages in
pages/ - Add new topic articles in
content/topics/ - Expand search records in
content/search-data.json - Add shared logic in
composables/ - Add reusable UI in
components/
This project is licensed under the MIT License.

