# Filamenteka A web application for tracking Bambu Lab filament inventory with automatic color coding, synced from Confluence documentation. ## Features - 🎨 **Automatic Color Coding** - Table rows are automatically colored based on filament colors - πŸ”„ **Confluence Sync** - Pulls filament data from Confluence table every 5 minutes - πŸ” **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 ## Technology Stack - **Frontend**: React + TypeScript + Tailwind CSS - **Backend**: API routes for Confluence integration - **Infrastructure**: AWS Amplify (Frankfurt region) - **IaC**: Terraform ## Prerequisites - Node.js 18+ and npm - AWS Account - Terraform 1.0+ - GitHub account - Confluence account with API access ## Setup Instructions ### 1. Clone the Repository ```bash git clone https://github.com/yourusername/filamenteka.git cd filamenteka ``` ### 2. Install Dependencies ```bash npm install ``` ### 3. Configure Confluence Access Create a Confluence API token: 1. Go to https://id.atlassian.com/manage-profile/security/api-tokens 2. Create a new API token 3. Note your Confluence domain and the page ID containing your filament table ### 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 ``` ### 5. Environment Variables The following environment variables are needed: - `CONFLUENCE_API_URL` - Your Confluence instance URL (e.g., https://your-domain.atlassian.net) - `CONFLUENCE_TOKEN` - Your Confluence API token - `CONFLUENCE_PAGE_ID` - The ID of the Confluence page containing the filament table ## Local Development ```bash # Create .env file for local development cat > .env << EOF CONFLUENCE_API_URL=https://your-domain.atlassian.net CONFLUENCE_TOKEN=your_api_token CONFLUENCE_PAGE_ID=your_page_id EOF # Run development server npm run dev ``` Visit http://localhost:5173 to see the app. ## Table Format Your Confluence table should have these columns: - **Brand** - Manufacturer (e.g., BambuLab) - **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** - Whether it's a refill spool - **Vakum** - Vacuum sealed status - **Otvoreno** - Opened status - **Količina** - Quantity - **Cena** - Price ## 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. ## Adding New Colors To add new color mappings, edit `src/data/bambuLabColors.ts`: ```typescript export const bambuLabColors: Record = { // ... existing colors 'New Color Name': { hex: '#HEXCODE' }, }; ``` ## Troubleshooting ### Confluence Connection Issues - Verify your API token is valid - Check the page ID is correct - Ensure your Confluence user has read access to the page ### Color Not Showing - Check if the color name in Confluence matches exactly - Add the color mapping to `bambuLabColors.ts` - Colors are case-insensitive but spelling must match ## 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