A modern job board demo showcasing real-time filtering, searching, and state management using MegaMap and Nuxt 3.
- 🚀 Built with Nuxt 3 and TypeScript
- 💾 State management using MegaMap with automated caching
- 🔍 Real-time search across job titles, companies, and skills
- 🎯 Advanced filtering by status, job type, and experience level
- 🎨 Dark mode UI with Nuxt UI components
- 🔄 Related jobs recommendations
- ⚡️ Automatic cache invalidation
- 🎯 Company-specific job listings
- 📱 Fully responsive design
- Nuxt 3 - Vue.js Framework
- MegaMap - State Management
- Nuxt UI - UI Components
- TypeScript - Type Safety
- Tailwind CSS - Styling
- Node.js 16.x or later
- npm or pnpm
- Clone the repository
git clone https://github.com/l422y/megamap-demo
cd megamap-demo
- Install dependencies
npm install
# or
pnpm install
- Start the development server
npm run dev
# or
pnpm dev
- Visit
http://localhost:3000
job-board-demo/
├── components/ # Reusable Vue components
│ └── RelatedJobs.vue
├── pages/ # Application pages
│ ├── index.vue # Job listings page
│ └── jobs/
│ └── [id].vue # Job detail page
├── server/ # Server API routes
│ └── api/
│ └── jobs.ts # Jobs API endpoint
├── stores/ # Pinia stores
│ └── useJobStore.ts
├── types/ # TypeScript types
└── app.vue # Root component
const jobStore = new ReactiveMegaMap<string, JobT>({
loadOne: (id) => $fetch(`/api/jobs?id=${id}`),
loadAll: () => $fetch("/api/jobs"),
searchableFields: ["title", "company", "location", "requiredSkills"],
subListFilters: {
active: (job) => job.status === "active",
draft: (job) => job.status === "draft",
closed: (job) => job.status === "closed",
},
expiryInterval: 5 * 60 * 1000, // 5 minutes cache
})
- Status filtering (Active, Draft, Closed)
- Job type filtering (Full-time, Part-time, Remote)
- Experience level filtering
- Skill-based filtering
- Location-based filtering
Jobs are related based on:
- Matching skills
- Same company
- Similar experience level requirements
- Matching job type
Returns all jobs with optional filtering
Query Parameters:
id
: Get specific job by IDstatus
: Filter by job statustype
: Filter by job typeexperienceLevel
: Filter by experience levelsearch
: Search jobs by title, company, or skills
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Anthropic - For assistance in development
- MegaMap - For the excellent state management library
- Nuxt - For the amazing framework
- Nuxt UI - For the beautiful components
If you have any questions or run into issues, please open an issue in the repository.