# PackIt PackIt is a smart packing list generator for outdoor activities. Select the activities you're planning — camping, skiing, kayaking, and more — and PackIt produces a deduplicated, grouped checklist of everything you need to bring. ## How it works 1. **Choose your activities** — Pick one or more activities from the activity selection page. Activities are organised into groups (e.g. Overnight, Water Activities, Winter Sports). 2. **Generate your list** — PackIt merges all item requirements across your selected activities, removing duplicates, and groups the result by category (Clothing, Shelter, Navigation, etc.). 3. **Pack and check off** — Work through the interactive checklist, ticking items as you pack them. A progress bar tracks how far along you are. 4. **Share or print** — Every list gets a permanent, shareable URL. You can also print the list directly from the browser. ## Features - **Activity-based list generation** — Items are mapped to activities in the database. Selecting multiple activities produces a single merged list with no duplicate entries. - **Grouped items** — Items are organised into logical categories (Clothing, Shelter, Navigation, Medical, Water & Food, Safety Gear) for easy scanning. - **Interactive checklist** — Click any item to mark it as packed. Checked items are visually struck through and a progress bar updates in real time. - **Shareable URLs** — Each unique activity selection is stored with a SHA-256 hash and accessible via a permanent link you can send to teammates or trip partners. - **Print support** — The packing list page has a print stylesheet that removes UI chrome and renders a clean black-and-white checklist. - **Admin panel** — A password-protected admin interface at `/admin/` lets you manage all content: - Activity groups and activities - Item groups and items - Activity-to-item mappings - Dashboard with counts of all entities ## Tech stack - **Backend:** PHP with PDO - **Database:** MySQL (schema in `schema.sql`) - **Frontend:** Vanilla HTML/CSS/JS — no build step required ## Setup 1. Create the database by running `schema.sql`: ``` mysql -u -p < schema.sql ``` 2. Copy `config.php` and set your database credentials. 3. Serve the project with any PHP-capable web server (Apache, Nginx, PHP built-in server). 4. Open the site in a browser and start selecting activities. ### Default admin credentials | Username | Password | |----------|---------------| | `admin` | `packit-admin` | **Change the password after first login.** ## Project structure ``` index.php Activity selection page list.php Processes selection, stores hash, redirects packing.php Displays the shareable packing list db.php PDO connection helper config.php Database credentials schema.sql Database schema and sample data admin/ index.php Dashboard activities.php Manage activities activity_groups.php Manage activity groups items.php Manage items item_groups.php Manage item groups mappings.php Manage activity-to-item mappings login.php / auth.php Authentication ```