BOOP Web is a React-based user interface for the BOOP puzzle generator API. It transforms the original CLI tool into an accessible web experience, allowing users to configure and generate customizable word search puzzle books easily and conveniently.
- Features
- Demo
- Prerequisites
- Installation
- Development
- Production Build
- Configuration
- Project Structure
- API Integration
- Testing
- Contributing
- License
- Intuitive form to select number of levels, modes, topics, words, and more.
- Upload custom word lists, covers, and backgrounds
- Download generated PDF puzzle books
- Download progress indicator follows around all pages
- Responsive design for desktop and mobile
- Client-side routing with React Router v6
- File uploads handled with Axios
- Node.js >= 16.x
- npm >= 8.x or yarn >= 1.x
- Backend API running at
http://localhost:8000(default proxy)
- Clone the repository:
git clone https://github.com/Muneer320/BOOP-web.git cd BOOP-web/frontend - Install dependencies:
npm install # or yarn install
Run the development server with hot reloading:
npm start
# or
yarn start- The app will be available at
http://localhost:3000. - API requests under
/apiare proxied tohttp://localhost:8000.
Create an optimized production build:
npm run build
# or
yarn buildThe output will be in the build/ directory. Serve it with any static file server.
- Proxy target: defined in
package.json(proxyfield). - To change API URL, set the
REACT_APP_API_URLenvironment variable before build or override insrc/config.js.
frontend/
├── public/
│ ├── index.html
│ └── favicon.ico
├── src/
│ ├── components/ # Reusable UI components
│ ├── contexts/ # React contexts
│ ├── hooks/ # Custom React hooks
│ ├── services/ # API client (Axios)
│ ├── App.js # Root component and routes
│ ├── index.js # Entry point
│ └── setupTests.js # Jest setup
├── README.md # This file
└── package.json # Dependencies & scripts
The frontend consumes the BOOP Web API endpoints:
| Endpoint | Method | Description |
|---|---|---|
/api/status |
GET | Health check |
/api/settings |
GET | Fetch available difficulty, bonuses, masks, grid sizes |
/api/templates |
GET | List built-in templates |
/api/upload |
POST | Upload custom assets (multipart/form-data) |
/api/generate-puzzle |
POST | Generate and download puzzle book PDF |
Refer to the Backend README for full API documentation.
Run unit tests with React Testing Library:
npm test
# or
yarn testContributions are welcome! Please follow these steps:
- Fork the repo and create a new branch (
git checkout -b feature/YourFeature). - Install dependencies and run tests.
- Commit your changes (
git commit -m "feat: add ..."). - Push to the branch (
git push origin feature/YourFeature). - Open a pull request against
main.
See FUTURE_REQUIREMENTS.md for roadmap and ideas.
This project is licensed under the MIT License. See LICENSE for details.
