{"id":31592936,"url":"https://github.com/chhex/spring-boot-react-crud-revisited","last_synced_at":"2026-04-12T00:10:58.064Z","repository":{"id":318216154,"uuid":"1070373455","full_name":"chhex/spring-boot-react-crud-revisited","owner":"chhex","description":"Pinned-versions of Baeldung's Spring Boot + React CRUD tutorial (React 18, Router v5, Bootstrap 5)","archived":false,"fork":false,"pushed_at":"2025-10-05T21:00:50.000Z","size":196,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-05T22:06:50.599Z","etag":null,"topics":["baeldung","bootstrap-5","crud","java","maven","react","react-18","react-router-dom","reactstrap","spring-boot"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chhex.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-05T19:45:49.000Z","updated_at":"2025-10-05T21:33:17.000Z","dependencies_parsed_at":"2025-10-05T22:06:53.929Z","dependency_job_id":"796f058b-052c-4331-987c-d37d74143a7b","html_url":"https://github.com/chhex/spring-boot-react-crud-revisited","commit_stats":null,"previous_names":["chhex/reactboot"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/chhex/spring-boot-react-crud-revisited","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chhex%2Fspring-boot-react-crud-revisited","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chhex%2Fspring-boot-react-crud-revisited/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chhex%2Fspring-boot-react-crud-revisited/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chhex%2Fspring-boot-react-crud-revisited/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chhex","download_url":"https://codeload.github.com/chhex/spring-boot-react-crud-revisited/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chhex%2Fspring-boot-react-crud-revisited/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278556224,"owners_count":26006079,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-06T02:00:05.630Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["baeldung","bootstrap-5","crud","java","maven","react","react-18","react-router-dom","reactstrap","spring-boot"],"created_at":"2025-10-06T03:35:49.355Z","updated_at":"2026-04-12T00:10:58.051Z","avatar_url":"https://github.com/chhex.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"![build](https://github.com/chhex/spring-boot-react-crud-revisited/actions/workflows/build.yml/badge.svg?branch=main)\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n![PRs welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)\n\n# Revisited Baeldung Tutorial – React \u0026 Spring Boot CRUD\n\nRevisited Baeldung Tutorial CRUD Application with React and Spring Boot — see https://www.baeldung.com/spring-boot-react-crud — **with versions pinned** so it actually works with today’s ecosystem.\n\n## Why pin versions?\n\nThe original article is ~4 years old and mixes libraries whose majors changed since. I locked a combo that i think is stable with the tutorial code:\n\n- **React**: `18.3.1`\n- **react-dom**: `18.3.1`\n- **react-router-dom**: `5.3.4` (v5 API used in the tutorial)\n- **reactstrap**: `^9` (required for Bootstrap 5)\n- **bootstrap**: `^5` (CSS only; load in `index.js`)\n- **@popperjs/core**: `^2` (Bootstrap’s dependency)\n- **react-cookie**: `4.1.1` (as in tutorial)\n\n\u003e Key upgrade I made vs the article: **reactstrap v9** (not v8) to match **Bootstrap 5**.\n\u003e Also recommended, i found out **React 18** (not 19) for max compatibility with Router v5. Otherwise the Navigation will not work reliable.\n\n## Project layout\n\n```\nreactboot/               # Maven Spring Boot backend\n└── frontend/            # React app (npm)\n```\n\n## Dev setup\n\nBackend (port 8080):\n\n```bash\ncd reactboot\nmvn spring-boot:run\n```\n\nFrontend (port 3000, proxies to 8080):\n\n```bash\ncd reactboot/frontend\nnpm ci\nnpm start\n```\n\nOpen: http://localhost:3000\n\n\u003e **Note:** In development, `package.json` may contain `\"proxy\": \"http://localhost:8080\"`.\n\n## Fresh install (freezing the working versions)\n\nThe following helped me to get around the version \"mess\" i encountered. Full disclosure: i am a newbie to the Javascript Eco culture.\n\nFrom `reactboot/frontend`:\n\n```bash\n# Clean any previous installs\nrm -rf node_modules package-lock.json\n\n# Install exact React + Router v5\nnpm i --save-exact react@18.3.1 react-dom@18.3.1 react-router-dom@5.3.4\n\n# Install Bootstrap 5 compatible UI stack\nnpm i reactstrap@^9 bootstrap@^5 @popperjs/core@^2 react-cookie@4.1.1\n\n# Create a fresh lockfile reflecting the above\nnpm install\n\n# (In src/index.js or main.jsx) load Bootstrap CSS once:\n# import 'bootstrap/dist/css/bootstrap.min.css';\n```\n\n**Commit both** `package.json` **and** `package-lock.json`.\nOn CI/fresh clones use `npm ci` for reproducible installs.\n\n---\n\n## TODO\n\n- **Build Packaging with Maven**\n  \n  - As in Tutorial\n- **Router v6 upgrade** (while staying on React 18)\n  \n  - `npm i react-router-dom@6`\n  - Migrate `Switch` → `Routes`, `component` → `element`\n- **React 19** (after Router v6 is clean)\n  \n  - `npm i --save-exact react@19 react-dom@19`\n  - Fix any peer-dep warnings\n- **Convert classes → function components + hooks**\n  \n  - `useState`, `useEffect`, `useNavigate` (v6)\n  - \n- **Testing (Optional)**\n  \n  - Unit/UI: Jest + React Testing Library\n  - Backend: Spring Boot Test\n  - \n- **CI**\n  \n  - GitHub Actions: `frontend (npm ci \u0026\u0026 npm run build)` then `mvn -B package`\n  - Or only via Maven \n- **Infra (Optional)**\n  \n  - Env vars for API base (`REACT_APP_API_BASE=/api`)\n  - NGINX/Ingress with `/api` proxy, SPA fallback\n\n## Credits\n\nBased on: Baeldung “Spring Boot + React: CRUD” (linked above), adapted to a compatible dependency set and with notes for upgrade paths.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchhex%2Fspring-boot-react-crud-revisited","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchhex%2Fspring-boot-react-crud-revisited","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchhex%2Fspring-boot-react-crud-revisited/lists"}