BookFlix is a web-based book browsing and review platform that provides users with a Netflix-style interface for discovery, viewing, and reviewing books. Built as a comprehensive digital library, the system allows users to explore various genres, read and submit reviews with star ratings, manage their personal saved book collections, and discover new authors and reading material.
The platform provides a rich set of features focusing on discovery, personalization, and community feedback:
Book Discovery & Browsing: Browse books organized by genres in horizontal scrollable rows, utilize a powerful search function across books and authors, and view a featured book hero banner on the dashboard.
User Authentication & Personalization: Secure sign-in/sign-up, personalized dashboards, protected routes, and user session management.
Review System: Users can write and submit detailed reviews with 1-5 star ratings, view average community ratings, and see their own reviews visually distinguished.
Book Management: Easily save and unsave books to a personal collection, browse books filtered by author or genre, and receive similar book recommendations on the details page.
Author Profiles: Comprehensive author pages featuring biographies, all associated books, and aggregated author ratings/statistics.
This is a full-stack application built using a modern React frontend and a C#/.NET Core backend.
| Technology | Purpose |
|---|---|
| React | Core UI library for component-based development |
| TypeScript | Adds static typing for type safety and better IDE support |
| Tailwind CSS | Utility-first framework for rapid, responsive UI development |
| Vite | Modern build tool providing hot module replacement (HMR) |
| React Router DOM | Handles client-side navigation and protected routes |
| ASP.NET Core | Cross-platform framework for building the RESTful API and business logic (MVC pattern) |
| C# | Used for implementing controllers, models, and data access |
| SQL Server | Primary database for all book, user, and review data |
| Microsoft.Data.SqlClient | ADO.NET provider for connecting the backend to SQL Server |
560-Project/
├── README.md # This file
├── tables.sql # CREATE TABLE statements with all constraints
├── procedures.sql # All stored procedures supporting application functionality
├── aggregation.sql # Four aggregating queries for statistical insights
├── Data/ # Initial data population scripts
├── backend/ # ASP.NET Core Web API application
└── frontend/ # React + TypeScript web application
- tables.sql: Contains all CREATE TABLE statements with primary keys, foreign keys, unique constraints, and check constraints
- procedures.sql: All stored procedures with CREATE PROCEDURE statements, parameters, and comments explaining each procedure's purpose
- aggregation.sql: Four aggregating queries demonstrating GROUP BY, aggregate functions (AVG, COUNT, SUM), and JOINs
- Data/: Folder containing SQL and Python scripts to populate initial data (authors, books, genres, and their relationships)
- backend/: Complete ASP.NET Core application using ADO.NET (Microsoft.Data.SqlClient) - No ORM frameworks used
- frontend/: Complete React application with TypeScript, Tailwind CSS, and React Router
- Execute
tables.sqlto create all tables - Execute scripts in
Data/folder to populate initial data - Execute
procedures.sqlto create stored procedures - Update connection string in
backend/appsettings.json
cd backend
dotnet restore
dotnet runcd frontend
npm install
npm run dev- No ORM Used: This application exclusively uses ADO.NET with SqlConnection, SqlCommand, and SqlDataReader for all database operations, as required by course guidelines
- All database interactions are through raw SQL and stored procedures
- Tables match the Database Design provided in the accompanying Project Report