Skip to content

holypeachy/BookCat

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 

Repository files navigation

😺 BookCat

BookCat is a full-stack ASP.NET Core MVC web application for discovering, reviewing, and cataloging books. It integrates server-side rendering, clean REST-style endpoints, and responsive front-end design.

  • Create an account and browse the catalog.
  • Add books from local or external sources (Google Books API).
  • Write and edit reviews, rate titles, and view other users’ profiles.

🧩 Future Improvements

This project was built under a tight timeline, but here are some things I’d like to revisit:

  • Refine the repository pattern (consider leaner abstractions or direct DbContext queries).
  • Implement true pagination in the repos to avoid unnecessarily loading navigation properties into memory.
  • Add moderation tools leveraging existing role flags.
  • Improve CSS naming and modularity for more reusable components.

🧪 Testing

Special thanks to my buddy JK_Bizcuits:

I shit talked my friend's project until he fixed it.

🧰 Tech Stack (Summary)

Layer Technologies
Backend ASP.NET Core 9, C#, Entity Framework Core
Database SQL Server Express
Frontend Razor Views, HTML5, CSS3, JavaScript
Auth ASP.NET Identity
External APIs Google Books API
Image Handling ImageSharp

🧱 Architecture

  • ASP.NET Core MVC for the presentation and controller layer.
  • Entity Framework Core as ORM for database interaction (SQL Server).
  • Repository pattern to abstract data access.
  • Identity for user authentication, authorization, and account management.
  • Dependency Injection for service and repository registration.
  • DTOs and ViewModels to cleanly separate domain and UI data models.

🗄️ Database & Data

  • SQL Server Express, managed through Entity Framework Migrations.
  • Relational structure: Users ↔ Reviews ↔ Books.
  • Book data integrated with the Google Books API to support search and cataloging of new titles.
  • Each user can add books, write reviews, and maintain personalized profile data.

🧩 Front-End

  • Server-rendered Razor Views with custom HTML/CSS (No Bootstrap).
  • Responsive layout built with Flexbox and media queries for adaptive design.
  • Client-side interactivity using vanilla JavaScript (e.g., star-rating system).
  • Validation via Unobtrusive jQuery Validation.

🔒 Security & Sessions

  • Cookie-based authentication managed through ASP.NET Identity.
  • CSRF protection with [ValidateAntiForgeryToken].
  • Custom Middleware that validates user existence and automatically signs out deleted accounts.

🖼️ Media & Storage

  • User profile images uploaded via form and resized on the server using ImageSharp before storage.
  • Optimized storage structure with unique filenames for automatic cache busting.

⚙️ Core Features

  • Account registration, login, and profile management.
  • Book catalog browsing and search integration with external API.
  • User-generated reviews and ratings.
  • Responsive UI with mobile support.

🚀 Getting Started

Prerequisites: .NET 9 SDK, SQL Server Express, and a Google Books API key.

git clone git@github.com:holypeachy/BookCat.git

cd BookCat/BookCat.Site/

dotnet user-secrets set GoogleBooks:ApiKey YOUR_API_KEY_HERE

dotnet user-secrets set Db:ConnectionString YOUR_CONNECTION_STRING_HERE

dotnet run

Credentials for admin:

Email: testadmin@gmail.com
Password: Admin123!

📤 Output Example:

Landing

image

Catalog

image

Book Details

image

User Dash

image

Search (Query: Music)

image

After clicking "Add" it does an external search

image

Pagination

image

Registration

image

Write and Edit Review. If you scroll up you can see the book's information.

image

About

A Book Catalogue Web App written in C# using ASP.NET.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published