Boxes is a comprehensive box management application that helps you organize your belongings during moves or storage. Track your boxes, find your items, and collaborate with friends - all from your web browser or mobile device.
- Create and label boxes with names, numbers, and types
- Add custom fields for any additional information
- Nest boxes within boxes for complex organization
- Quick search and filtering by any attribute
- Take photos of boxes and their contents
- AI-powered content recognition (coming soon)
- Multiple photos per box with custom ordering
- Visual reference when unpacking
- Create rooms with locations
- Assign boxes to current and target rooms
- Filter boxes by room or location
- Track your move progress
- Connect with friends using QR codes
- View each other's boxes to help coordinate
- Accept/reject connection requests
- Privacy-first sharing
- Passkey-first: No passwords to remember
- Biometric login support
- Email verification for new accounts
- Secure token-based API authentication
- Responsive web application
- Native iOS app (in development)
- Native Android app (in development)
- Sync across all devices
- PHP 8.3 or higher
- Composer
- Node.js and npm (for frontend assets)
- SQLite, PostgreSQL, or MySQL
- Clone the repository
git clone https://github.com/winfried-van-loon/Boxes.git
cd Boxes/backend- Install dependencies
composer install- Configure environment
cp .env.example .env
php artisan key:generate- Set up database
# For SQLite (default)
touch database/database.sqlite
# Run migrations
php artisan migrate- Create storage link
php artisan storage:link- Start the development server
php artisan serveThe API will be available at http://localhost:8000
- Web application using Vue.js or React
- Mobile apps using React Native or Flutter
POST /api/auth/register
Content-Type: application/json
{
"name": "John Doe",
"email": "john@example.com"
}POST /api/auth/verify-email
Content-Type: application/json
{
"token": "verification_token_from_email"
}POST /api/auth/login
Content-Type: application/json
{
"email": "john@example.com"
}GET /api/boxes?search=kitchen¤t_room_id=1
Authorization: Bearer {token}POST /api/boxes
Authorization: Bearer {token}
Content-Type: application/json
{
"name": "Kitchen Utensils",
"number": "K-001",
"type": "Medium Cardboard",
"current_room_id": 1,
"target_room_id": 2,
"description": "All kitchen items",
"custom_fields": {
"fragile": true,
"priority": "high"
}
}POST /api/boxes/{id}/photos
Authorization: Bearer {token}
Content-Type: multipart/form-data
photo: [file]POST /api/boxes/{id}/items
Authorization: Bearer {token}
Content-Type: application/json
{
"name": "Spatula",
"quantity": 2,
"description": "Silicone spatulas"
}POST /api/rooms
Authorization: Bearer {token}
Content-Type: application/json
{
"name": "Kitchen",
"location": "First Floor",
"description": "Main kitchen area"
}POST /api/connections/generate-qr
Authorization: Bearer {token}Returns QR code as base64 image and connection URL.
POST /api/connections/connect
Authorization: Bearer {token}
Content-Type: application/json
{
"token": "connection_token_from_qr"
}Run the test suite:
cd backend
php artisan testRun specific test file:
php artisan test --filter BoxTestBoxes/
βββ backend/ # Laravel application
β βββ app/
β β βββ Http/
β β β βββ Controllers/
β β β βββ Api/ # API controllers
β β βββ Models/ # Eloquent models
β β βββ Policies/ # Authorization policies
β βββ database/
β β βββ migrations/ # Database migrations
β β βββ factories/ # Model factories
β βββ routes/
β β βββ api.php # API routes
β β βββ web.php # Web routes
β βββ tests/ # Tests
βββ mobile/ # Mobile apps (coming soon)
βββ frontend/ # Web frontend (coming soon)
Key variables in .env:
APP_NAME=Boxes
APP_ENV=local
APP_URL=http://localhost:8000
DB_CONNECTION=sqlite
# DB_CONNECTION=mysql for production
CACHE_DRIVER=file
SESSION_DRIVER=file
MAIL_MAILER=smtp
# Configure mail settings for email verificationContributions are welcome! Please follow these guidelines:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow PSR-12 coding standards
- Write tests for new features
- Update documentation as needed
- Keep commits atomic and well-described
This project is open source and available under the MIT License.
- Winfried van Loon - Initial work - @winfried-van-loon
- Laravel framework and community
- WebAuthn specification contributors
- All open source packages used in this project
For support, please open an issue on GitHub or contact the maintainers.
- Laravel backend with API
- Box management
- Room organization
- User connections via QR codes
- Landing page
- WebAuthn passkey implementation
- Email verification system
- Photo AI recognition
- Web frontend (Vue.js/React)
- React Native mobile apps
- Offline mode
- Push notifications
- Barcode scanning
- Move timeline
- Shared boxes
- Export/import data
- Analytics dashboard
- Moving to a new home: Track all your boxes from packing to unpacking
- Long-term storage: Remember what's in storage without digging through boxes
- Seasonal items: Organize holiday decorations, sports equipment, etc.
- Collaborative moves: Coordinate with friends or family helping you move
- Business storage: Organize inventory or archived materials
Made with β€οΈ by the Boxes team