A book recommendation application that allows users to vote on books, view community favorites, and get personalized recommendations. This project combines a modern Next.js frontend with Python-based data analysis and uses Supabase for data storage.
- 📊 Book Voting: Vote on your favorite books
- ❤️ Community Favorites: View the most popular books among ACSAIS members
- 🕸️ Recommendations: Get personalized book recommendations based on community data
- 📈 Data Analysis: Python-based analytics for book trends and user preferences
- 🎨 Modern UI: Built with Next.js, TypeScript, and Tailwind CSS
Book recommendations interface showing personalized suggestions based on class votes using vector dataset matching for users with similar tastes
- Next.js 14 - React framework for production
- TypeScript - Type-safe JavaScript
- Tailwind CSS - Utility-first CSS framework
- Nivo - Data visualization components
- Supabase - Backend-as-a-Service with PostgreSQL
- Python - Data analysis and processing
- R - Statistical analysis and visualization
@supabase/supabase-js- Supabase client for JavaScript@nivo/network- Network graph visualizationspython-dotenv- Environment variable managementvecs- Vector similarity searchpsycopg2-binary- PostgreSQL adapter for Python
- Node.js 18+ and npm/pnpm
- Python 3.8+
- R (for data analysis)
-
Clone the repository
git clone <repository-url> cd BookRecommendation
-
Install Node.js dependencies
npm install # or pnpm install -
Set up environment variables Create a
.env.localfile with your Supabase credentials:NEXT_PUBLIC_SUPABASE_URL=your-supabase-url NEXT_PUBLIC_SUPABASE_ANON_KEY=your-supabase-anon-key
-
Run the development server
npm run dev # or pnpm devOpen http://localhost:3000 to view the application.
-
Create a virtual environment
chmod +x setup_venv.sh ./setup_venv.sh
-
Install Python dependencies
pip install -r requirements.txt
BookRecommendation/
├── src/
│ ├── app/ # Next.js app directory
│ │ ├── vote/ # Book voting page
│ │ ├── favs/ # Community favorites page
│ │ └── recs/ # Recommendations page
│ └── components/ # Reusable React components
├── data_analysis/ # Python & R analysis scripts
│ ├── bipartite.py # Network analysis
│ ├── book_analysis.R # Statistical analysis
│ └── presentation.txt # Analysis results
├── utils/ # Utility functions
├── public/ # Static assets
├── plots/ # Generated visualizations
└── presentation/ # Project presentation files
- Vote on Books: Navigate to
/voteto rate and vote on books - View Favorites: Check out
/favsto see the community's most loved books - Get Recommendations: Visit
/recsfor personalized book suggestions based on community preferences
The project includes comprehensive data analysis capabilities:
- Network Analysis: Bipartite graph analysis of user-book relationships
- Statistical Analysis: R-based statistical modeling of reading preferences
- Visualization: Interactive charts and network graphs using Nivo
npm run dev- Start development servernpm run build- Build for productionnpm run start- Start production servernpm run lint- Run ESLint
- Run Python scripts in
data_analysis/for book recommendation algorithms - Execute R scripts for statistical analysis and visualization
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
