Files
Filamenteka/README.md
DaX 5d1d05574f Fix refill-only colors to have 0 spools instead of 1
- 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
2025-08-05 23:05:24 +02:00

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