Skip to content

Mxkyp/BadReads

Repository files navigation

License: MIT



An open-source book recommendation site.


View On the web · Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Usage
  4. Roadmap
  5. Contributing
  6. License
  7. Contact

About The Project

BadReads is a self-hosted fullstack microservice based book-recommendation app.
GoodReads but better/Pinterest for books with better recommendations (That's the plan).

Purpose

The purpose of this project is learning:

  1. Kubernetes and Docker.
  2. Self-hosting, administrator duties.
  3. Developing great REST API's.
  4. Web/System/container security.
  5. Building fully functional web-services.
  6. Infrastructure/IaC.
  7. Making production grade SaaS products.
  8. Scalable application architecture.

And provide a easily reproducible, complete full-stack application.
For others trying to learn how to build applications for the web.

Architecture

Architecture

Built With

React NodeJS Vite Spring Nginx GitHub Actions Postgres Docker

Getting Started

Make sure ports 80 and 443 are free.

Clone the repository:

   git clone https://github.com/Mxkyp/BadReads.git && cd BadReads

Run it:

    docker compose up 

You can now see the website at localhost

Prerequisites

  • git
  • docker

Usage

The project is to be used for educational purposes.
It's very early in development, but as it grows i will try to make it as pristine example of a fullstack app as i can.
So newcomers can have a reference production ready-app as i think there are not so many spring-based examples.

Roadmap

General

  • Add Changelog
  • General refactoring
  • Website logo and info

infrastructure

  • Proper secret handling (HashiCorpVault)
  • Tests in pipeline
  • Monitoring
  • Limit resource usage
  • Rollbacks, seamless delivery

Backend

  • Add Spring security, OAuth2
  • Add user, comment services
  • Add integration tests
  • Consider adding lombok and migrating from maven to gradle

Frontend

  • Simple searchbar with logo
  • Simplify the file structure

Database

  • external data storage ex. Google Cloud
  • find a better book data set

See the open issues for a full list of proposed features (and known issues).

Contributing

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement".

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

Distributed under the MIT License. See LICENSE.txt for more information.

(back to top)

Contact

Mikołaj Pawłoś - Linkedin