Skip to content

βš™οΈπŸ”© Bike Parts Management | βš›οΈ React.js & β˜• Java Spring Boot | πŸ§‘β€πŸ’» Full Stack Case Study, Full-stack SPA for managing a catalog of bike parts with advanced sorting, filtering, and pagination. Uses Spring Boot REST API, JPA/PostgreSQL, React Hooks, Zustand, Vite, Tailwind CSS, Jest & JUnit testing. πŸš€

Notifications You must be signed in to change notification settings

fussek/BikePartsApp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

13 Commits
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸš΄β€β™‚οΈ Bike Parts Management - Full Stack Case Study


🚨 Important Note on Backend Availability (Railway Free Tier)

πŸ’€ Heads-up!
The backend is hosted on Railway's free tier, which puts the server to sleep after periods of inactivity. This causes the first request to take few seconds to spin the service back up.

πŸ› οΈ To test the app without issues, please follow these steps:

  1. Open the backend link first to wake up the server:
    πŸ‘‰ https://bikepartsapibackend-production.up.railway.app/api/v1/bikeparts/

  2. Wait for the backend to finish loading (it may show a blank or JSON response β€” that’s okay).

  3. Once the backend is awake, open the frontend app:
    πŸ‘‰ https://case-study-app.netlify.app/

βœ… You’ll now be able to use the full application with a responsive backend.



⚠️⚠️⚠️ Important Note on Versions ⚠️⚠️⚠️

πŸ’» Disclaimer:
⚠️ BIG APOLOGIES :( ⚠️ Due to the limitations of my PC (i work on corporate laptop where i do not have root access) this project runs on older software versions for compatibility. I realize this is not compliant with the requirements of the case study to use latest features of most up to date software, but i working on the case study over weekend gave me no control over my environment.

Tool Version
Java OpenJDK 1.8.0 (Java 8)
Node.js v14.15.4

All configurations are tailored to these versions. Using others may cause errors.


πŸ“Œ Project Overview

A full-stack application for managing bicycle parts, built as part of a developer case study. It includes:

  • A Java Spring Boot REST API backend
  • A React (Vite + Zustand + Tailwind) frontend

πŸ”— Live Deployments


πŸš€ Core Features

  • βœ… Full CRUD Operations β€” Create, Read, Update, Delete articles
  • 🧾 Modal-Based Forms β€” Seamlessly add/edit articles with automatic article number generation
  • ↕️ List Sorting β€” Ascending / Descending / None for Article Number and Name
  • πŸ” Multi-Select Filtering β€” By Article Category, Bicycle Category, and Material
  • πŸ“„ Client-Side Pagination β€” 10 items per page

πŸ› οΈ Tech Stack

πŸ“¦ Monorepo: Decoupled Frontend & Backend

πŸ”™ Backend

  • Language: Java 8 (OpenJDK 1.8.0)
  • Framework: Spring Boot
  • API: RESTful
  • Database: PostgreSQL (Production) / H2 (Local)
  • ORM & DAO: Spring Data JPA, Hibernate
  • Build Tool: Maven
  • Testing: JUnit 5, Mockito

🌐 Frontend

  • Framework: React 17
  • Build Tool: Vite
  • Styling: Tailwind CSS
  • State Management: Zustand
  • API: Axios (with global interceptors)
  • Routing: React Router DOM
  • Testing: Jest, React Testing Library

πŸ§‘β€πŸ’» Local Setup

πŸ”§ Prerequisites

  • Java JDK 8
  • Node.js v14.15.4
  • npm

πŸ”™ Backend

cd backend
mvn spring-boot:run

Runs on http://localhost:8080

🌐 Frontend

cd frontend/bike-parts-ui
npm install
npm run start

Runs on http://localhost:3000

βœ… Running Tests Backend

cd backend
mvn test

Frontend

cd frontend/bike-parts-ui
npm test

πŸ’‘ Advanced Concepts & Highlights

🌐 Global Error Handling

  • Axios interceptors for API failures
  • React Error Boundaries for rendering issues
  • Popup notifications for user feedback

🧠 Centralized State Management

  • Zustand store separates state logic from UI
  • Improves scalability and maintainability

⚑ Performance Optimizations

  • Lazy Loading: Form modal is dynamically imported using React.lazy and Suspense
  • Efficient Rendering: React.memo prevents unnecessary re-renders of pure components

πŸš€ Monorepo Deployment

Deployed from a single repository:

  • Frontend: Deployed on Netlify
  • Backend: Deployed on Railway

About

βš™οΈπŸ”© Bike Parts Management | βš›οΈ React.js & β˜• Java Spring Boot | πŸ§‘β€πŸ’» Full Stack Case Study, Full-stack SPA for managing a catalog of bike parts with advanced sorting, filtering, and pagination. Uses Spring Boot REST API, JPA/PostgreSQL, React Hooks, Zustand, Vite, Tailwind CSS, Jest & JUnit testing. πŸš€

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages