Some checks failed
Build and Publish Docker Image / build-and-push (push) Has been cancelled
217 lines
6.9 KiB
Markdown
217 lines
6.9 KiB
Markdown
# OSSM Configurator
|
|
|
|
A web-based configuration tool for the Open Source Sex Machine (OSSM) project. This application provides an intuitive wizard interface that guides users through selecting and customizing components for their OSSM build, generating a complete Bill of Materials (BOM) and configuration summary.
|
|
|
|
## Project Structure
|
|
|
|
```
|
|
OSSM-Configurator/
|
|
├── website/ # Main web application
|
|
│ ├── src/ # React source code
|
|
│ ├── public/ # Static assets (images, etc.)
|
|
│ ├── dist/ # Build output (generated)
|
|
│ ├── node_modules/ # Dependencies (generated)
|
|
│ └── ... # Configuration files
|
|
├── BOM.xlsx # Bill of Materials spreadsheet
|
|
├── Screen Shots/ # Application screenshots
|
|
└── README.md # This file
|
|
```
|
|
|
|
## Website Overview
|
|
|
|
The OSSM Configurator is a React-based single-page application built with Vite. It provides a step-by-step wizard interface that allows users to:
|
|
|
|
1. **Select Motor** - Choose from available motor options (42AIM30, 57AIM30, iHSV57)
|
|
2. **Choose Power Supply** - Select appropriate power supply (24V PSU, 24V USB-C PD)
|
|
3. **Customize Colors** - Pick primary and accent colors for 3D printed parts
|
|
4. **Configure Options** - Select mounting options, stands, toy mounts, actuators, and other components
|
|
5. **Review Summary** - View complete BOM with pricing, filament estimates, and export options
|
|
|
|
### Key Features
|
|
|
|
- **Interactive Wizard Interface**: Step-by-step configuration process with progress tracking
|
|
- **Component Compatibility**: Ensures selected components are compatible with each other
|
|
- **Real-time Pricing**: Calculates total cost including hardware and printed parts
|
|
- **Filament Estimates**: Provides 3D printing filament requirements for each component
|
|
- **BOM Export**: Generate and download a complete Bill of Materials
|
|
- **Visual Component Selection**: Image-based component selection for better user experience
|
|
|
|
### Technology Stack
|
|
|
|
- **React 18** - UI framework
|
|
- **Vite** - Build tool and dev server
|
|
- **Tailwind CSS** - Styling
|
|
- **JSZip** - For generating downloadable BOM packages
|
|
|
|
## TODO
|
|
- [X] Dark Mode [Completed]
|
|
- [ ] Finalize Actuator Components and mapping to BOM [In Progress]
|
|
- [ ] Finalize Stand Components and mapping to BOM
|
|
- [ ] Finalize PCB Components and mapping to BOM
|
|
- [ ] Finalize Toy Mounts Components and mapping to BOM
|
|
- [ ] Finalize Remote Control Components and mapping to BOM
|
|
- [ ] Finalize Mounting Components and mapping to BOM
|
|
- [ ] Finalize Other Components and mapping to BOM
|
|
- [ ] Finalize Colors and mapping to BOM
|
|
- [ ] Finalize Pricing and mapping to BOM
|
|
- [ ] Finalize BOM Export and mapping to BOM
|
|
- [ ] Finalize BOM Import and mapping to BOM
|
|
- [ ] Finalize Storage and sharing of BOMs
|
|
- [ ] Add references to original hardware files and designs
|
|
- [ ] Add Readme/assembly instructions for each component
|
|
- [ ] Add FAQ and troubleshooting guide
|
|
- [ ] Add support for multiple languages
|
|
- [ ] Add support for multiple currencies
|
|
- [ ] Add support for multiple payment methods
|
|
- [ ] Add support for multiple shipping methods
|
|
- [ ] Add support for multiple shipping countries
|
|
- [ ] Add support for multiple shipping regions
|
|
- [ ] Add support for multiple shipping cities
|
|
- [ ] Add 3D render of final product with all components and options selected and coloured [If possible]
|
|
## Getting Started
|
|
|
|
### Prerequisites
|
|
|
|
**Option 1: Using Docker (Recommended)**
|
|
- Docker Desktop or Docker Engine
|
|
- Docker Compose
|
|
|
|
**Option 2: Local Development**
|
|
- Node.js (v16 or higher recommended)
|
|
- npm or yarn
|
|
|
|
### Installation
|
|
|
|
1. Navigate to the website directory:
|
|
```bash
|
|
cd website
|
|
```
|
|
|
|
2. Install dependencies:
|
|
```bash
|
|
npm install
|
|
```
|
|
|
|
### Development
|
|
|
|
Run the development server:
|
|
|
|
```bash
|
|
npm run dev
|
|
```
|
|
|
|
The application will be available at `http://localhost:5173` (or the port shown in the terminal).
|
|
|
|
### Building for Production
|
|
|
|
Create an optimized production build:
|
|
|
|
```bash
|
|
npm run build
|
|
```
|
|
|
|
The built files will be in the `website/dist/` directory.
|
|
|
|
### Preview Production Build
|
|
|
|
Preview the production build locally:
|
|
|
|
```bash
|
|
npm run preview
|
|
```
|
|
|
|
## Docker Deployment
|
|
|
|
### Development with Docker Compose
|
|
|
|
Run the application in development mode with hot reload:
|
|
|
|
```bash
|
|
docker-compose -f docker-compose-dev.yml up
|
|
```
|
|
|
|
The application will be available at `http://localhost:5173` with hot module replacement enabled.
|
|
|
|
To run in detached mode (background):
|
|
```bash
|
|
docker-compose -f docker-compose-dev.yml up -d
|
|
```
|
|
|
|
To stop the development container:
|
|
```bash
|
|
docker-compose -f docker-compose-dev.yml down
|
|
```
|
|
|
|
### Production with Docker Compose
|
|
|
|
Build and run the production image:
|
|
|
|
```bash
|
|
docker-compose up --build -d
|
|
```
|
|
|
|
The application will be available at `http://localhost:80`
|
|
|
|
To run without rebuilding (if image already exists):
|
|
```bash
|
|
docker-compose up -d
|
|
```
|
|
|
|
To stop the production container:
|
|
```bash
|
|
docker-compose down
|
|
```
|
|
|
|
To view logs:
|
|
```bash
|
|
docker-compose logs -f
|
|
```
|
|
|
|
### Using Pre-built Docker Images
|
|
|
|
The project includes GitHub Actions workflows that automatically build and publish Docker images to GitHub Container Registry (ghcr.io) on releases. You can pull and run the latest release image:
|
|
|
|
```bash
|
|
docker pull ghcr.io/<your-username>/<your-repo-name>:V0.0.1-BETA
|
|
docker run -d -p 80:80 ghcr.io/<your-username>/<your-repo-name>:V0.0.1-BETA
|
|
```
|
|
|
|
## Configuration Data
|
|
|
|
The application uses JSON data files located in `website/src/data/`:
|
|
|
|
- `motors.json` - Available motor options
|
|
- `powerSupplies.json` - Power supply options
|
|
- `colors.json` - Available color options
|
|
- `options.json` - Main configuration options
|
|
- `components/` - Detailed component data:
|
|
- `actuator.json` - Actuator components
|
|
- `mounting.json` - Mounting options
|
|
- `remote.json` - Remote control components
|
|
- `stand.json` - Stand components
|
|
- `toyMounts.json` - Toy mount options
|
|
|
|
## Project Purpose
|
|
|
|
The OSSM Configurator serves as a comprehensive tool for users building their own Open Source Sex Machine. It simplifies the configuration process by:
|
|
|
|
- **Guiding Selection**: Step-by-step wizard prevents missing critical components
|
|
- **Ensuring Compatibility**: Validates component combinations
|
|
- **Providing Transparency**: Shows costs, filament requirements, and time estimates
|
|
- **Generating Documentation**: Creates exportable BOM for ordering parts and printing
|
|
|
|
This tool is essential for both beginners and experienced builders who want to ensure they have all necessary components and understand the full scope of their build before starting.
|
|
|
|
## Contributing
|
|
|
|
When adding new components or options:
|
|
|
|
1. Update the appropriate JSON data files in `website/src/data/`
|
|
2. Add corresponding images to `website/public/images/`
|
|
3. Test the configuration flow to ensure compatibility
|
|
4. Update component pricing and filament estimates as needed
|
|
|
|
## License
|
|
|
|
This project is part of the Open Source Sex Machine (OSSM) project. Please refer to the OSSM project license for usage terms.
|