A modern, interactive website for exploring FLock.io's research papers in federated learning, decentralized AI, and privacy-preserving machine learning.
π Live Demo: Coming soon
π Papers: 15+ publications, 164+ citations
π Auto-Sync: Daily updates from Google Scholar
π€ AI Chat: Powered by FLock's LLM API
- π¨ Beautiful UI: Modern design with dark mode support, matching FLock.io's aesthetic
- π Interactive Visualizations:
- Force-directed citation network graph
- Semantic topic clustering and exploration
- Venue-based paper filtering
- π€ AI-Powered Chat: Ask questions about FLock research using retrieval-augmented generation
- π Auto-Sync: Automatically fetches ALL papers from Google Scholar profile (daily)
- π± Responsive: Works seamlessly on desktop, tablet, and mobile
- π Zero Maintenance: Update Google Scholar β Site updates automatically
- Framework: Next.js 15 (App Router) with TypeScript
- Styling: Tailwind CSS with custom design system
- Visualizations:
react-force-graph-2dfor citation networks- Custom SVG for semantic maps
- Data Pipeline:
- Google Scholar scraper (cheerio)
- Vercel KV for data storage
- Vercel Cron for scheduled updates
- LLM Integration: FLock API (OpenAI-compatible)
- Scraping: Vercel Cron triggers
/api/refresh-scholardaily at 2 AM UTC - Processing: Scholar profile is scraped (ALL papers, paginated), papers are normalized, citation graph is built
- Storage: Data is stored in Vercel KV
- Serving: API routes serve data with ISR (revalidate every hour)
- Frontend: Pages fetch data and render interactive visualizations
Note: The scraper fetches ALL papers from the Google Scholar profile, not just a subset. Currently finds 15+ FLock papers.
- Node.js 18+ and npm
- Vercel account (for deployment)
- FLock API credentials (for chat feature)
-
Clone the repository:
git clone <repository-url> cd vibe-research
-
Install dependencies:
npm install
-
Set up environment variables: Create a
.env.localfile (seeenv.example.txtfor reference):NEXT_PUBLIC_BASE_URL=http://localhost:3000 FLOCK_API_KEY=your_flock_api_key FLOCK_API_BASE_URL=https://api.flock.io/v1 FLOCK_MODEL=flock-llm-default CRON_SECRET=your_random_secret
-
Preview real papers from Google Scholar:
npm run fetch-papers
This shows what papers will be scraped (currently 15+ papers).
-
Run the development server:
npm run dev
-
Load real data (optional, in a new terminal):
curl -X GET http://localhost:3000/api/refresh-scholar \ -H "Authorization: Bearer local-dev-secret-change-in-production" -
Open http://localhost:3000 in your browser
-
Push to GitHub:
git add . git commit -m "Initial commit" git push origin main
-
Import to Vercel:
- Go to vercel.com
- Import your GitHub repository
- Vercel will auto-detect Next.js
-
Add Vercel KV:
- In your Vercel project, go to Storage β Create Database β KV
- Environment variables will be automatically added
-
Set environment variables:
- Add
FLOCK_API_KEY,FLOCK_API_BASE_URL,FLOCK_MODEL,CRON_SECRET NEXT_PUBLIC_BASE_URLwill be auto-set by Vercel
- Add
-
Deploy:
- Vercel will automatically deploy on every push to main
- Cron job is configured in
vercel.json
vibe-research/
βββ app/ # Next.js app directory
β βββ api/ # API routes
β β βββ chat/ # LLM chat endpoint
β β βββ data/ # Data serving endpoints
β β βββ refresh-scholar/ # Scholar scraping endpoint
β βββ about/ # About page
β βββ chat/ # Chat interface
β βββ graph/ # Citation network visualization
β βββ topics/ # Semantic topic exploration
β βββ venues/ # Venue-based paper listing
β βββ status/ # System status page
β βββ layout.tsx # Root layout with navigation
β βββ page.tsx # Homepage
βββ components/ # Reusable React components
β βββ navigation.tsx # Main navigation bar
β βββ theme-toggle.tsx # Dark mode toggle
β βββ footer.tsx # Site footer
βββ lib/ # Utility libraries
β βββ data/ # Stub data for development
β βββ scraper/ # Google Scholar scraper
β βββ storage/ # Vercel KV wrapper
β βββ llm/ # LLM API client
βββ types/ # TypeScript type definitions
βββ config/ # Site configuration
βββ public/ # Static assets
To add/update papers: Just update your Google Scholar profile!
- Add new papers β They appear on next sync
- Update paper details β Changes appear on next sync
- The scraper fetches ALL papers automatically (currently 15+)
Manual sync:
# Preview papers (no changes to site)
npm run fetch-papers
# Update live site
curl -X GET https://your-domain.vercel.app/api/refresh-scholar \
-H "Authorization: Bearer YOUR_CRON_SECRET"See PAPERS-SYNC.md for detailed synchronization guide.
Edit config/site.ts to update:
- Site name and description
- Navigation links
- Theme colors
- Scholar profile URL
Update the venueInfo object in app/venues/page.tsx to add metadata for new publication venues.
- Google Scholar integration
- Citation network visualization
- Semantic topic clustering
- LLM-powered chat
- Dark mode support
- Real-time embeddings computation
- Author collaboration network
- Export citations (BibTeX)
- Paper recommendations
- Advanced search filters
- Lighthouse Score: 95+ (Performance, Accessibility, Best Practices, SEO)
- First Contentful Paint: < 1.5s
- Time to Interactive: < 3s
- Bundle Size: < 200KB (gzipped)
This is a private research visualization tool for FLock.io. For questions or suggestions, contact the FLock team.
Proprietary - FLock.io
Beautiful landing page with stats, featured papers, and top venues.
Interactive force-directed graph showing paper relationships.
Explore research by keywords and semantic clustering.
Ask questions and get intelligent answers about FLock research.
This is a private research tool for FLock.io. For internal contributions:
- Create a feature branch
- Make your changes
- Test locally with
npm run build - Submit a pull request
- Built with Next.js
- Visualizations powered by react-force-graph
- Data sourced from Google Scholar
- LLM capabilities by FLock.io
- Deployed on Vercel
Maintained by: FLock.io Team
Last Updated: December 2024
Status: β
Production Ready