An Angular 12 application for managing product flow with many-to-many relationships between Products, Steps, and Fields.
- Product Management: Create, read, update, and delete products with different statuses
- Step Management: Define workflow steps with order and field associations
- Field Management: Create custom fields with various types (text, number, email, date, etc.)
- Many-to-Many Relationships:
- Products can have multiple steps
- Steps can have multiple fields
- UUID Support: All entities use UUID as primary keys, allowing front-end ID generation
- Responsive Design: Clean, modern interface that works on desktop and mobile
- Product: Has name, description, status, and associated step IDs
- Step: Has name, description, order, and associated field IDs
- Field: Has name, type, required flag, default value, and description
- ProductService: Manages CRUD operations for products
- StepService: Manages CRUD operations for steps
- FieldService: Manages CRUD operations for fields
- Product List/Form: View and manage products
- Step List/Form: View and manage workflow steps
- Field List/Form: View and manage custom fields
- Node.js (version 14 or higher)
- npm (version 6 or higher)
- Angular CLI 12
-
Clone the repository:
git clone <repository-url> cd product-flow
-
Install dependencies:
npm install
Run the development server with legacy OpenSSL support:
export NODE_OPTIONS="--openssl-legacy-provider"
ng serveNavigate to http://localhost:4200/. The app will automatically reload if you change any of the source files.
src/
├── app/
│ ├── components/
│ │ ├── product/
│ │ │ ├── product-list/
│ │ │ └── product-form/
│ │ ├── step/
│ │ │ ├── step-list/
│ │ │ └── step-form/
│ │ └── field/
│ │ ├── field-list/
│ │ └── field-form/
│ ├── models/
│ │ ├── product.model.ts
│ │ ├── step.model.ts
│ │ └── field.model.ts
│ ├── services/
│ │ ├── product.service.ts
│ │ ├── step.service.ts
│ │ └── field.service.ts
│ ├── app-routing.module.ts
│ ├── app.component.*
│ └── app.module.ts
└── styles.scss
- Navigate to the Products tab
- Click Create New Product to add a product
- Fill in the form with product details
- Select associated steps from the checkbox list
- Save the product
- Navigate to the Steps tab
- Click Create New Step to add a workflow step
- Set the step name, description, and order
- Associate fields with the step
- Save the step
- Navigate to the Fields tab
- Click Create New Field to add a custom field
- Choose field type (text, number, email, date, boolean, select, textarea)
- Set whether the field is required
- Optionally set a default value and description
- Save the field
- Products ↔ Steps: Many-to-many relationship via stepIds array in Product
- Steps ↔ Fields: Many-to-many relationship via fieldIds array in Step
- Angular 12: Frontend framework
- TypeScript: Programming language
- RxJS: Reactive programming with Observables
- UUID: For unique identifier generation
- SCSS: Styling with advanced CSS features
- Angular Reactive Forms: Form handling and validation
Run ng build to build the project. The build artifacts will be stored in the dist/ directory.
Run ng test to execute the unit tests via Karma.
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
This project is licensed under the MIT License.