π― Bounty: Feature Flag Folders for Organization
Bounty: $15
Priority: Design & UX First β
Before starting, please β star the repository - it helps us grow and shows you're committed to contributing! π
Overview
Add a folder system to organize feature flags in the dashboard UI. This is purely for UI organization and should NOT affect any business logic - flag evaluation, dependencies, API responses, and SDK behavior must remain unchanged. The focus is on creating an intuitive, beautiful folder management experience.
Success Criteria
Most Important: The design must be excellent. We're looking for:
- Clean, intuitive folder UI that matches Databuddy's design system
- Smooth interactions (expand/collapse, drag-to-reorder if possible)
- Mobile-responsive folder management
- Visual hierarchy that makes large flag lists manageable
- Screenshots required - show your design work!
Requirements
1. Database Schema (Required)
Add folder support to the database schema.
Option A - Simple String Field (Recommended):
- Add optional
folder text field to flags table
- Store folder path as string (e.g.,
"auth/login", "checkout/payment")
- Allows nested folders via path separator
Option B - Folder Table:
- Create
flag_folders table with id, name, parentId, websiteId, createdAt
- Add
folderId foreign key to flags table
Acceptance Criteria:
2. API Endpoints (Required)
Extend ORPC endpoints to support folder operations.
Endpoints:
flags.list - Add optional folder filter parameter
flags.update - Allow updating folder field
flags.create - Allow setting folder on creation
Optional (if using Folder Table):
folders.list - List all folders for a website
folders.create - Create new folder
folders.update - Rename/move folder
folders.delete - Delete folder (move flags to root)
Acceptance Criteria:
3. Dashboard UI - Folder Management (Required)
Create folder management UI in the flags page.
UI Components Needed:
- Folder tree/sidebar (collapsible)
- Create folder button/modal
- Rename folder (inline or modal)
- Delete folder (with confirmation - move flags to root or delete)
- Drag flags into folders (nice-to-have)
- Folder breadcrumbs when viewing folder contents
Acceptance Criteria:
4. Dashboard UI - Flag List Integration (Required)
Integrate folders into the flags list view.
UI Requirements:
- Show folders as collapsible sections in the list
- Flags grouped under their folder
- "Uncategorized" or "Root" section for flags without folders
- Folder header shows flag count
- Expand/collapse all folders button (nice-to-have)
- Visual indicator when dragging flag to folder (nice-to-have)
Acceptance Criteria:
5. Flag Sheet Integration (Required)
Add folder selection to flag create/edit sheet.
UI Requirements:
- Folder selector dropdown/combobox in flag form
- Shows folder tree/hierarchy
- Option to create new folder from form
- "No folder" option to move flag to root
Acceptance Criteria:
6. Testing (Required)
Acceptance Criteria:
Technical Requirements
- Follow existing codebase patterns and conventions
- Use
bun for all package management (never npm/pnpm)
- TypeScript with strict types (no
any, unknown, or never)
- Use
dayjs for dates (never date-fns)
- Use Tanstack Query for data fetching hooks
- Use Jotai for local state if needed
- Proper error boundaries
- Use
rounded class (not rounded-xl or rounded-md)
- Mobile responsive design
- Use Phosphor icons (not Lucide)
- Follow accessibility guidelines from
.cursor/rules/guidelines.mdc
Design Reference
The UI should match the existing dashboard design. Reference these for patterns:
apps/dashboard/app/(main)/websites/[id]/flags/ - Current flags page
apps/dashboard/components/ - Existing component patterns
.cursor/rules/guidelines.mdc - Design and accessibility guidelines
.cursor/rules/01-MUST-DO.mdc - Code style requirements
Files to Reference
packages/db/src/drizzle/schema.ts - Database schema (flags table around line 694)
packages/rpc/src/routers/flags.ts - API router for flags
apps/dashboard/app/(main)/websites/[id]/flags/_components/ - Flag UI components
apps/dashboard/app/(main)/websites/[id]/flags/page.tsx - Flags page
apps/dashboard/app/(main)/websites/[id]/flags/_components/flag-sheet.tsx - Flag create/edit form
Important Notes
β οΈ Business Logic Must Not Change:
- Flag evaluation logic must remain unchanged
- API responses for SDKs must remain unchanged (folder is UI-only metadata)
- Dependencies between flags must work regardless of folders
- Flag keys, values, and behavior must be unaffected
β
Focus Areas:
- Beautiful, intuitive folder UI
- Smooth user experience
- Mobile-friendly
- Performance (don't slow down flag list loading)
Submission Requirements
Questions?
Comment on this issue for any clarification needed before starting. We're happy to discuss design approaches and implementation details!
Remember to β star the repo before starting! π
π― Bounty: Feature Flag Folders for Organization
Bounty: $15
Priority: Design & UX First β
Before starting, please β star the repository - it helps us grow and shows you're committed to contributing! π
Overview
Add a folder system to organize feature flags in the dashboard UI. This is purely for UI organization and should NOT affect any business logic - flag evaluation, dependencies, API responses, and SDK behavior must remain unchanged. The focus is on creating an intuitive, beautiful folder management experience.
Success Criteria
Most Important: The design must be excellent. We're looking for:
Requirements
1. Database Schema (Required)
Add folder support to the database schema.
Option A - Simple String Field (Recommended):
foldertext field toflagstable"auth/login","checkout/payment")Option B - Folder Table:
flag_folderstable withid,name,parentId,websiteId,createdAtfolderIdforeign key toflagstableAcceptance Criteria:
packages/db/src/drizzle/schema.tsfolder,websiteId)2. API Endpoints (Required)
Extend ORPC endpoints to support folder operations.
Endpoints:
flags.list- Add optionalfolderfilter parameterflags.update- Allow updatingfolderfieldflags.create- Allow settingfolderon creationOptional (if using Folder Table):
folders.list- List all folders for a websitefolders.create- Create new folderfolders.update- Rename/move folderfolders.delete- Delete folder (move flags to root)Acceptance Criteria:
flags.list3. Dashboard UI - Folder Management (Required)
Create folder management UI in the flags page.
UI Components Needed:
Acceptance Criteria:
Button,Dialog,Input, etc.)4. Dashboard UI - Flag List Integration (Required)
Integrate folders into the flags list view.
UI Requirements:
Acceptance Criteria:
5. Flag Sheet Integration (Required)
Add folder selection to flag create/edit sheet.
UI Requirements:
Acceptance Criteria:
6. Testing (Required)
Acceptance Criteria:
flags.listTechnical Requirements
bunfor all package management (never npm/pnpm)any,unknown, ornever)dayjsfor dates (neverdate-fns)roundedclass (notrounded-xlorrounded-md).cursor/rules/guidelines.mdcDesign Reference
The UI should match the existing dashboard design. Reference these for patterns:
apps/dashboard/app/(main)/websites/[id]/flags/- Current flags pageapps/dashboard/components/- Existing component patterns.cursor/rules/guidelines.mdc- Design and accessibility guidelines.cursor/rules/01-MUST-DO.mdc- Code style requirementsFiles to Reference
packages/db/src/drizzle/schema.ts- Database schema (flags table around line 694)packages/rpc/src/routers/flags.ts- API router for flagsapps/dashboard/app/(main)/websites/[id]/flags/_components/- Flag UI componentsapps/dashboard/app/(main)/websites/[id]/flags/page.tsx- Flags pageapps/dashboard/app/(main)/websites/[id]/flags/_components/flag-sheet.tsx- Flag create/edit formImportant Notes
β Focus Areas:
Submission Requirements
bun run lint)bun run check-types)Questions?
Comment on this issue for any clarification needed before starting. We're happy to discuss design approaches and implementation details!
Remember to β star the repo before starting! π