# 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 = { // ... 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