Initial Filamenteka setup - Bambu Lab filament tracker

- React + TypeScript frontend with automatic color coding
- Confluence API integration for data sync
- AWS Amplify deployment with Terraform
- Support for all Bambu Lab filament colors including gradients
This commit is contained in:
DaX
2025-06-17 22:39:35 +02:00
parent 8cc137864b
commit c394d94bb0
23 changed files with 1090 additions and 0 deletions

153
README.md
View File

@@ -1,2 +1,155 @@
# 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<string, ColorMapping> = {
// ... 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