IntelliHub AI is a full-stack agentic AI SaaS workspace for discovering AI tools, holding context-aware conversations, generating content, understanding documents, and receiving explainable recommendations. It uses a separate Next.js client and Express API, MongoDB persistence, secure cookie-based JWT sessions, and a modular AI provider service with WalkAI and direct Gemini support.
- Premium responsive landing page, reusable design system, navigation, footer, loading, empty, error, toast, modal, table, and pagination states
- Backend-powered tool search, filtering, sorting, price/rating filters, and URL-persisted exploration state
- Public tool details, gallery, related tools, ratings, reviews, and authenticated favorites
- Registration, email/password login, Google identity verification, demo login, access/refresh JWT rotation, roles, and ownership checks
- Authenticated tool creation, live preview, editing, deletion confirmation, publishing, and responsive management views
- MongoDB-backed dashboard with usage charts, category distribution, most-used tools, recent activity, and summary metrics
- Context-aware Gemini chat with separate conversations, limited recent history, secure internal tool context, copy, regenerate, stop, rename, and delete controls
- Explainable recommendation engine using goals, preferences, pricing, favorites, activity, refinement, and saved feedback
- Content generator for blog posts, product descriptions, social posts, email, and documentation with templates, length/tone controls, save, copy, regenerate, and TXT export
- Memory-only PDF, DOCX, and TXT processing with type/size validation, structured analysis, and downloadable reports
- Blog, contact, profile, about, help, privacy, and terms pages
- Helmet, scoped CORS, rate limiting, input validation, unsafe-key blocking, file validation, centralized errors, password hashing, and production-safe error responses
Client: Next.js App Router, React, TypeScript, Tailwind CSS, TanStack Query, React Hook Form, Zod, Recharts, Lucide, Framer Motion, Sonner.
Server: Node.js, Express, TypeScript, MongoDB, Mongoose, JWT, bcrypt, Zod, Helmet, CORS, Morgan, express-rate-limit, Multer, pdf-parse, Mammoth, Google Auth Library, Gemini SDK.
intellihub-ai/
├── client/
│ ├── public/images/
│ ├── src/app/
│ ├── src/components/
│ ├── src/lib/
│ ├── src/providers/
│ ├── src/services/
│ └── src/types/
├── server/
│ └── src/
│ ├── config/
│ ├── controllers/
│ ├── middlewares/
│ ├── models/
│ ├── prompts/
│ ├── routes/
│ ├── services/
│ ├── types/
│ └── utils/
├── package.json
└── README.md
Requirements: Node.js 20+, npm 10+, and MongoDB 7+ locally or a MongoDB Atlas connection.
npm install
copy client\.env.example client\.env.local
copy server\.env.example server\.env
npm run seed
npm run devOn macOS/Linux, use cp instead of copy. The client runs at http://localhost:3000 and the API at http://localhost:5000. API health is available at GET /health.
Client (client/.env.local):
NEXT_PUBLIC_API_URL=http://localhost:5000/api
NEXT_PUBLIC_GOOGLE_CLIENT_ID=Server (server/.env):
PORT=5000
NODE_ENV=development
MONGODB_URI=mongodb://127.0.0.1:27017/intellihub-ai
JWT_ACCESS_SECRET=replace-with-at-least-32-random-characters
JWT_REFRESH_SECRET=replace-with-another-32-random-characters
JWT_ACCESS_EXPIRES_IN=15m
JWT_REFRESH_EXPIRES_IN=7d
AI_PROVIDER=walkai
WALKAI_API_KEY=
WALKAI_BASE_URL=https://walkai.top/v1
WALKAI_MODEL=gemini-2.5-flash
GEMINI_API_KEY=
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
CLIENT_URL=http://localhost:3000
MAX_FILE_SIZE_MB=10Never commit actual secrets. In production, use long random JWT secrets, HTTPS, a restricted CORS origin, and a managed secret store.
WalkAI is the default provider. Add the key shown in your WalkAI dashboard only to server/.env:
AI_PROVIDER=walkai
WALKAI_API_KEY=sk-your-private-key
WALKAI_BASE_URL=https://walkai.top/v1
WALKAI_MODEL=gemini-2.5-flashWalkAI controls which model names are available for each key group. If its Use Key instructions show a different model, replace only WALKAI_MODEL.
For direct Google Gemini instead:
- Create a Gemini API key in Google AI Studio.
- Set
AI_PROVIDER=geminiandGEMINI_API_KEYonly inserver/.env. - Restart the Express server.
The provider boundary lives in server/src/services/ai.service.ts. Add another provider by implementing the same text-generation behavior there; browser code never receives provider credentials.
Create a Google OAuth web client, add http://localhost:3000 as an authorized JavaScript origin, then place the same client ID in the client and server environment files. The browser sends the Google identity credential to Express, where it is verified against the configured audience before a local session is issued.
Run npm run seed, then use:
Email: demo@intellihub.ai
Password: Demo12345!
The idempotent seed adds eight meaningful AI tools and three complete blog articles. Run it again safely after resetting a development database.
All JSON responses follow { success, message, data?, error? }.
/api/auth registration, login, Google, refresh, logout, current user
/api/users profile and admin user listing
/api/tools search, filter, sort, CRUD, ownership
/api/reviews per-user ratings and comments
/api/favorites saved tools
/api/conversations conversation CRUD and context-aware messages
/api/recommendations ranking, refinement, and interaction feedback
/api/content generation and saved outputs
/api/documents secure multipart analysis
/api/dashboard MongoDB-derived workspace metrics
/api/contact contact and newsletter submissions
/api/blogs articles and article details
npm run typecheck
npm run buildFor production, set NODE_ENV=production, use HTTPS so secure cookies are enabled, configure MongoDB backups and indexes, limit Gemini quota, and place the API behind a reverse proxy with request logging and monitoring.
The responsive landing experience includes an animated three-slide hero, clear workflow CTAs, a floating assistant, and direct access to two free image generations.
- Live website: intellihub-ai-client.vercel.app
- GitHub monorepo: GalibDev/intellihub-ai
- Frontend source:
client/ - Backend source:
server/
The frontend and backend live in one production monorepo with independent Vercel and Render deployments.

