Feature: Bucket List for Travel Goals #906
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #897
This PR adds a comprehensive Bucket List feature to AdventureLog, allowing users to track their travel dreams and goals. Users can create, edit, delete, and manage bucket list items with full status tracking and progress visualization.
🎯 Features Added
Core Functionality
Item Properties
Each bucket list item includes:
🏗️ Technical Implementation
Backend (Django)
New Files:
backend/server/bucketlist/__init__.py- App initializationbackend/server/bucketlist/models.py- BucketItem model with UUID, tags array, status choicesbackend/server/bucketlist/views.py- ViewSet with permissions and filteringbackend/server/bucketlist/serializers.py- API serializationbackend/server/bucketlist/urls.py- API routingbackend/server/bucketlist/admin.py- Django admin integrationbackend/server/bucketlist/migrations/0001_initial.py- Database migrationDatabase Schema:
API Endpoints:
GET /api/bucketlist/items/- List all items (user's + public)POST /api/bucketlist/items/- Create new itemGET /api/bucketlist/items/{id}/- Get specific itemPUT /api/bucketlist/items/{id}/- Update itemDELETE /api/bucketlist/items/{id}/- Delete itemPermissions:
IsAuthenticatedOrReadOnly- Authentication required for modificationsIsOwnerOrReadOnly- Only owners can edit/delete their itemsFrontend (SvelteKit)
New Files:
frontend/src/routes/bucketlist/+page.svelte- Main UI componentfrontend/src/routes/bucketlist/+page.server.ts- Server-side data loading and form actionsUI Components:
Form Actions (SvelteKit):
?/create- Server-side item creation with CSRF protection?/update- Server-side item update with CSRF protection?/delete- Server-side item deletion with CSRF protectionAuthentication Flow:
PUBLIC_SERVER_URLenvironment variableCookieheaderNavigation Integration
Modified Files:
🔧 Configuration Changes
Modified Files:
backend/server/main/settings.py- Added 'bucketlist' to INSTALLED_APPSbackend/server/main/urls.py- Included bucketlist URLs🎨 UI/UX Features
Status Badges
Progress Tracking
(completed items / total items) × 100Responsive Design
🐛 Bug Fixes & Improvements
Issues Resolved During Development:
fetchCSRFToken()${endpoint}📝 Testing
Manual Testing Performed:
Backend API Testing:
🔒 Security Considerations
📦 Database Migrations
Migration Applied:
Creates the
bucketlist_bucketitemtable with all necessary fields and indexes.🚀 Deployment Notes
Docker Build:
docker compose build webdocker compose up -dEnvironment Variables:
PUBLIC_SERVER_URLfor API communication📸 Screenshots
Main View
Add/Edit Modals
Item Cards
🔄 Future Enhancements
Potential improvements for future PRs:
✅ Checklist