Skip to content

rinsdoc/angular-book-app

Repository files navigation

BookTracker Logo

A modern application to manage your book collection, developed with Angular 21.0.2. BookTracker allows you to discover new titles, track your reading progress, and organize your digital library efficiently. It offers advanced features such as genre search, personalized reading statistics, and reading goal management. Built with Angular, TailwindCSS, and RxJS, it presents an elegant interface with light/dark theme support, subtle animations, and a fully responsive design that ensures an optimal experience on any device.

BookTracker Screenshot

Table of Contents

Key Features

  • Discover Books: Explore a wide collection of books with search and filtering by genre
  • Reading Tracking: Record your reading progress and set goals
  • Adaptive Interface: Responsive design with light/dark theme support
  • Smooth Animations: Enhanced user experience with subtle animations

Development Environment Setup

Prerequisites

  • Node.js (v18 or higher)
  • npm (v9 or higher)
  • Angular CLI (v21.0.2)

Installation

  1. Clone the repository:

    git clone https://github.com/rinsdoc/angular-book-app
  2. Install dependencies:

    npm install
  3. Start the development server:

    ng serve
  4. Navigate to http://localhost:4200/ in your browser

Project Structure

The project follows a Hexagonal Architecture (Ports & Adapters) pattern, organizing code into clear layers:

src/
β”œβ”€β”€ app/
β”‚   β”œβ”€β”€ components/           # UI Components
β”‚   β”‚   β”œβ”€β”€ book-detail/      # Book detail view
β”‚   β”‚   β”œβ”€β”€ book-list/        # Books catalog with filters
β”‚   β”‚   β”œβ”€β”€ book-review/      # Reviews display
β”‚   β”‚   β”œβ”€β”€ reading-stats/    # Reading statistics
β”‚   β”‚   └── user-library/     # User's personal library
β”‚   β”œβ”€β”€ domain/               # Domain Layer (Business Logic)
β”‚   β”‚   β”œβ”€β”€ book.ts           # Book entity
β”‚   β”‚   β”œβ”€β”€ user-book.ts      # User-Book relationship
β”‚   β”‚   β”œβ”€β”€ reading-session.ts # Reading session entity
β”‚   β”‚   β”œβ”€β”€ book-repository.port.ts
β”‚   β”‚   β”œβ”€β”€ user-book-repository.port.ts
β”‚   β”‚   └── reading-session-repository.port.ts
β”‚   β”œβ”€β”€ infrastructure/       # Infrastructure Layer (Adapters)
β”‚   β”‚   β”œβ”€β”€ book-repository.adapter.ts
β”‚   β”‚   β”œβ”€β”€ user-book-repository.adapter.ts
β”‚   β”‚   └── reading-session-repository.adapter.ts
β”‚   β”œβ”€β”€ application/          # Application Layer (Use Cases)
β”‚   β”‚   └── book.service.ts   # Book management service
β”‚   β”œβ”€β”€ services/             # Additional Services
β”‚   β”‚   β”œβ”€β”€ book.service.ts
β”‚   β”‚   β”œβ”€β”€ reading-session.service.ts
β”‚   β”‚   └── theme.service.ts  # Theme management
β”‚   β”œβ”€β”€ app-routing.module.ts # Routing configuration
β”‚   β”œβ”€β”€ app.component.*       # Root component
β”‚   └── app.module.ts         # Main module
β”œβ”€β”€ assets/                   # Static resources
β”‚   β”œβ”€β”€ books.json           # Books data
β”‚   β”œβ”€β”€ user-books.json      # User library data
β”‚   β”œβ”€β”€ reading-sessions.json # Reading sessions data
β”‚   β”œβ”€β”€ reviews.json         # Reviews data
β”‚   └── *.png                # Images
└── styles.css               # Global styles with TailwindCSS

Architecture Layers

  • Domain: Contains business entities and repository ports (interfaces)
  • Infrastructure: Implements repository adapters that handle data persistence
  • Application: Contains services that orchestrate business logic
  • Components: Presentation layer with Angular components

Additional Resources

These resources will help you better understand the technologies used in BookTracker:

About

Angular Book App for the Project subject.

Resources

Stars

Watchers

Forks

Contributors