Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Sprint 6 Challenge

Open
#8 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
25/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Quiet
Tech stack
java
Domain
backend, cli, database

Research direction

Start by defining the models and the entry point in the main method, then plan the access class, service layer interfaces, and in-memory database described in the requirements. Unit-test the service layer and verify that the borrowing, return, search, availability, and late-fine acceptance criteria are met.

Written by the indexing model from the issue text.

Description

🎯 Topic Programming Fundamentals 🏕 Priority Mandatory 📅 Sprint 6 🦑 Size Large Core

Sprint Challenge

The code you write for this challenge is mandatory homework and should be completed and sent in a PR for review before class.

Requirements

Overview

Create a library system for managing book borrowing and returns.

Acceptance Criteria

Ability to:

  • Save new books
    • Validate against duplicates
    • New book saved to database (in memory or text file)
  • Borrow a book
    • Validate if it's available to borrow
    • Start with a fixed borrow period (maybe 1 month) and optionally refactor later to be variable
    • Update database record to set that the book is now borrowed and hence not available for someone else to borrow
      • Should include a borrow / return date
  • List the books currently borrowed by a user
    • Actively borrowed books only, not ones that have been returned
  • Return a book
    • If it's being returned late report that the borrower should be fined £1 per day late
    • Update database record to set that the book has been returned and hence can now be borrowed again
  • Search for a book by title or author to see if it's available to borrow or not
  • Present sensible responses for the cases:
    • Book exists and can be borrowed
    • Book exists but is already borrowed by someone else
    • Book does not exist
Code Quality
  • Tiered architecture used with an in memory database (or you can write to a text file, your choice!) and console used as the presentation layer
  • Interfaces used in service layer and DI used throughout
  • Code clearly documented and unit tested!
Developer Guidance (deliberately limited!)
  • Think about the models you'll want first, and what data you'll need to store in order to meet the above criteria
  • Think about how to save the data in a format (using appropriate data structures) that you'll be able to read and write to → the internet can help here!
  • Create an access class responsible for reading and writing to the 'database'
  • Create a suitable service layer using interfaces that you call from a main method to perform the library operations detailed in the acceptance criteria
  • Make sure the service layer is unit tested
Submission & Review

Fork the coursework repo to your own GitHub account.
Make regular small commits with clear messages.
When you are ready, open a Pull Request to the CYF repo. Make sure you fill in the PR template provided.
A volunteer will review your submission and send you feedback.

Dominant language
No language data
Stars
1
Forks
11
PR merge metrics
No merged PRs in 30d

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from CodeYourFuture/Module-Java

All issues in CodeYourFuture/Module-Java

Similar issues

More Backend & API Design issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.