- Add migration to correct 14 colors that should be refill-only - Create helper script for applying the fix - Add frontend tracking for refill-only colors - Update README with current project state - Add development guidance documentation
193 lines
4.3 KiB
Markdown
193 lines
4.3 KiB
Markdown
# Filamenteka
|
|
|
|
A web application for tracking Bambu Lab filament inventory with automatic color coding.
|
|
|
|
## Features
|
|
|
|
- 🎨 **Automatic Color Coding** - Table rows are automatically colored based on filament colors
|
|
- 🔍 **Search & Filter** - Quick search across all filament properties
|
|
- 📊 **Sortable Columns** - Click headers to sort by any column
|
|
- 🌈 **Gradient Support** - Special handling for gradient filaments like Cotton Candy Cloud
|
|
- 📱 **Responsive Design** - Works on desktop and mobile devices
|
|
- 💰 **Sale Management** - Bulk sale pricing with countdown timers
|
|
- 🔐 **Admin Panel** - Protected dashboard for inventory management
|
|
- 📦 **Spool Types** - Support for both regular and refill spools
|
|
|
|
## Technology Stack
|
|
|
|
- **Frontend**: Next.js + React + TypeScript + Tailwind CSS
|
|
- **Backend**: Node.js API server (Express)
|
|
- **Database**: PostgreSQL (AWS RDS)
|
|
- **Infrastructure**: AWS Amplify (Frontend), EC2 (API), RDS (Database)
|
|
- **IaC**: Terraform
|
|
|
|
## Prerequisites
|
|
|
|
- Node.js 18+ and npm
|
|
- PostgreSQL (for local development)
|
|
- AWS Account (for deployment)
|
|
- Terraform 1.0+ (for infrastructure)
|
|
- GitHub account
|
|
|
|
## Setup Instructions
|
|
|
|
### 1. Clone the Repository
|
|
|
|
```bash
|
|
git clone https://github.com/yourusername/filamenteka.git
|
|
cd filamenteka
|
|
```
|
|
|
|
### 2. Install Dependencies
|
|
|
|
```bash
|
|
npm install
|
|
```
|
|
|
|
### 3. Environment Setup
|
|
|
|
Create a `.env.local` file for local development:
|
|
|
|
```bash
|
|
NEXT_PUBLIC_API_URL=http://localhost:4000/api
|
|
```
|
|
|
|
### 4. Deploy with Terraform
|
|
|
|
```bash
|
|
cd terraform
|
|
cp terraform.tfvars.example terraform.tfvars
|
|
# Edit terraform.tfvars with your values
|
|
|
|
terraform init
|
|
terraform plan
|
|
terraform apply
|
|
```
|
|
|
|
## Local Development
|
|
|
|
```bash
|
|
# Run development server
|
|
npm run dev
|
|
|
|
# Run tests
|
|
npm test
|
|
|
|
# Run linting
|
|
npm run lint
|
|
|
|
# Check for security issues
|
|
npm run security:check
|
|
```
|
|
|
|
Visit http://localhost:3000 to see the app.
|
|
|
|
## Table Format
|
|
|
|
The filament table displays these columns:
|
|
- **Tip** - Material type (e.g., PLA, PETG, ABS)
|
|
- **Finish** - Finish type (e.g., Basic, Matte, Silk)
|
|
- **Boja** - Color name (e.g., Mistletoe Green, Hot Pink)
|
|
- **Refill** - Number of refill spools
|
|
- **Spulna** - Number of regular spools
|
|
- **Količina** - Total quantity (refill + spulna)
|
|
- **Cena** - Price per unit
|
|
- **Sale** - Active sale percentage and end date
|
|
|
|
## Color Mapping
|
|
|
|
The app includes mappings for common Bambu Lab colors:
|
|
- Basic colors: Red, Blue, Green, Yellow, etc.
|
|
- Special colors: Mistletoe Green, Indigo Purple, Hot Pink, etc.
|
|
- Gradient filaments: Cotton Candy Cloud
|
|
- Matte finishes: Scarlet Red, Marine Blue, etc.
|
|
|
|
Unknown colors default to light gray.
|
|
|
|
## Deployment
|
|
|
|
Push to the main branch to trigger automatic deployment:
|
|
|
|
```bash
|
|
git add .
|
|
git commit -m "Update filament colors"
|
|
git push origin main
|
|
```
|
|
|
|
Amplify will automatically build and deploy your changes.
|
|
|
|
## Admin Panel
|
|
|
|
Access the admin panel at `/upadaj` for:
|
|
- Managing filament inventory
|
|
- Adding/editing/deleting filaments
|
|
- Managing color definitions and pricing
|
|
- Bulk sale management
|
|
|
|
## Adding New Colors
|
|
|
|
Colors can be managed through:
|
|
1. **Admin Panel**: Navigate to `/upadaj/colors` to add colors via UI
|
|
2. **Code**: Edit `src/data/bambuLabColors.ts` for frontend color display:
|
|
|
|
```typescript
|
|
export const bambuLabColors: Record<string, ColorMapping> = {
|
|
// ... existing colors
|
|
'New Color Name': { hex: '#HEXCODE' },
|
|
};
|
|
```
|
|
|
|
## Database Migrations
|
|
|
|
Run database migrations:
|
|
|
|
```bash
|
|
# Run all pending migrations
|
|
npm run migrate
|
|
|
|
# Clear migration history (development only)
|
|
npm run migrate:clear
|
|
```
|
|
|
|
## API Deployment
|
|
|
|
Deploy API server updates:
|
|
|
|
```bash
|
|
# Use the deployment script
|
|
./scripts/deploy-api.sh
|
|
|
|
# Or deploy manually to EC2 instance
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
### Color Not Showing
|
|
- Check if the color name matches exactly in the database
|
|
- Ensure color exists in `colors` table
|
|
- Add the color mapping to `bambuLabColors.ts`
|
|
- Colors are case-insensitive but spelling must match
|
|
|
|
### Build Errors
|
|
- Run `npm run test:build` to verify build succeeds
|
|
- Check TypeScript errors with `npx tsc --noEmit`
|
|
- Ensure all environment variables are set
|
|
|
|
### Database Connection Issues
|
|
- Verify PostgreSQL is running
|
|
- Check connection string in environment variables
|
|
- Ensure database migrations have been run
|
|
|
|
## License
|
|
|
|
MIT
|
|
|
|
## Contributing
|
|
|
|
1. Fork the repository
|
|
2. Create a feature branch
|
|
3. Commit your changes
|
|
4. Push to the branch
|
|
5. Create a Pull Request
|
|
|