Libibi is a modern web application designed for book enthusiasts to track their reading journey and discover new books. The idea originated from the fact that both contributors are passionate readers who couldn't find a convenient, user-friendly solution with a modern design on the market to keep track of their read books and discover new ones.
This web application was born as a university project for an Internet Technologies course. After successfully completing two previous website projects, we decided to increase the challenge by giving ourselves a two-week deadline to develop a fully functional book management platform.
A monolithic architecture was chosen for this project due to:
- The relatively small size of the application
- Full support from the chosen frameworks (Next.js and Prisma)
- Simplified deployment and maintenance for a project of this scale
The monolithic approach allowed us to rapidly develop and iterate on the application while maintaining code cohesion and simplicity.
- 📖 Book Tracking: Keep track of books you've read, are currently reading, or want to read
- 🔍 Book Discovery: Search and discover new books from the Open Library API
- ⭐ Reviews: Write and read reviews for books
- 👤 User Profiles: Personalized reading profiles
- 🤖 AI Recommendations: Get personalized book recommendations based on your reading history
- 📚 Personal Library: Organize your books into custom shelves
- Next.js 15 - React framework with App Router
- TypeScript - Type-safe development
- React - UI components
- Prisma - Next-generation ORM
- PostgreSQL/SQLite - Database (configurable)
- Tailwind CSS - Utility-first CSS framework
- PostCSS - CSS processing
- Open Library API - Book data and metadata
- AI Services - For personalized recommendations
- Node.js 18+
- npm or yarn
- Database (PostgreSQL or SQLite)
- Clone the repository
git clone https://github.com/Fedefilice/Libibi.git
cd Libibi/libibi- Install dependencies
npm install- Set up environment variables
Create a
.env.localfile in the root directory:
DATABASE_URL="your_database_url"
# Add other required environment variables- Run database migrations
npx prisma migrate dev- Generate Prisma Client
npx prisma generate- Start the development server
npm run devThe application will be available at http://localhost:3000
libibi/
├── lib/ # Utility functions and shared logic
├── prisma/ # Database schema and migrations
├── public/ # Static assets
├── src/
│ ├── app/ # Next.js App Router pages and layouts
│ │ ├── (data)/ # Data-focused routes (books, authors)
│ │ ├── (user)/ # User-focused routes (profile, login)
│ │ └── api/ # API routes
│ ├── components/ # Reusable React components
│ ├── hooks/ # Custom React hooks
│ ├── services/ # Business logic and external services
│ └── types/ # TypeScript type definitions
└── ...config files
The application uses Prisma as an ORM with the following main entities:
- Users - User accounts and authentication
- Books - Book information and metadata
- Reviews - User reviews and ratings
- Shelves - Custom book collections
- Authors - Author information
/api/users/*- User management and authentication/api/book/*- Book operations and details/api/author/*- Author information/api/review/*- Review management/api/search/*- Book search functionality/api/recommended/*- AI-powered recommendations
npm testnpm run lintnpm run buildThis project was developed by:
- Fedefilice
- [Asta22403] (https://github.com/Asta22403)
As this is a university project, contributions are currently limited to the original team members.
This project is part of a university course and is intended for educational purposes.
- Open Library API for providing comprehensive book data
- University of Parma - Internet Technologies Course
- All the open-source libraries and tools that made this project possible
Developed with ❤️ by passionate readers, for passionate readers.